Einleitung
Mit dieser Funktion können mehrere Audiosprachen, beschreibende oder Umgebungs-Audioerlebnisspuren für die Live-Wiedergabe aufgenommen werden. Sie können die Schritte hier nachvollziehen, indem Sie die Live-API verwenden. Sie können auch Video Cloud Studio verwenden. Einzelheiten finden Sie unter Mehrsprachiges Audio mit dem Live-Modul dokumentieren.
Voraussetzungen
Für mehrsprachige Audiospuren gibt es einige Voraussetzungen.
Aktivieren Sie Ihr Konto
- Wenden Sie sich an den Kundensupport, um die Live-API mit der mehrsprachigen Audiofunktion zu aktivieren
- Vergewissern Sie sich, dass Sie einen API-Schlüssel für die Live-API haben (den Sie bei der Einrichtung des Kontos erhalten)
Einrichten des Drehgebers
- Verwenden Sie einen Encoder, der das RTP-Protokoll unterstützt. Mehrsprachige Audiounterstützung ist beschränkt auf
rtp
odersrt
Protokoll.
-
Holen Sie sich die folgenden Werte von Ihrem Messgerät: Einzelheiten finden Sie in der Dokumentation zu Ihrem Messgerät.
- Definieren Sie den PID (Packet Identifier) für jede Audiospur in Ihrem Encoder
- Definieren Sie die dem Video zugeordnete Video-PID in Ihrem Encoder
Wenn Sie die PID-Werte Ihres Encoders nicht kennen, lesen Sie den Abschnitt Konfiguration Ihres Encoders.
Erstellen Sie Ihren Live-Job
Um Ihrem Job mehrere Audiotracks hinzuzufügen, muss beim Erstellen eines Live-Jobs eine Liste von Audiotracks im Anfragetext bereitgestellt werden:
{
"live_stream": true,
"region": "us-west-2",
"protocol": "rtp",
"cidr_whitelist": [ /* omitted… */ ],
"outputs": [ /* omitted… */ ],
"alternate_audio": {
"tracks": [ { Track Details } ]
}
}
Unterstützte Felder für die Track
Objekt
Die folgende Tabelle enthält eine vollständige Beschreibung der unterstützten Felder im track
Objekt.
Feld | Typ | Erforderlich | Beschreibung |
---|---|---|---|
language |
Schnur | Ja |
Der Code für die zu verwendende Sprache; derzeit ist dieser flexibel und kann in jedem der verschiedenen Sprachformate vorliegen, die in den Spezifikationen erforderlich/unterstützt werden, insbesondere in RFC5456/BCP47, das gemäß den Anforderungen auch ISO-639 abdeckt HLS > DASH > |
video_pid |
ganze Zahl | Ja | Der Packet Identifier (PID) aus dem MPEG-TS-Eingangsstrom für die Videospur |
pid |
ganze Zahl | Ja | Der Packet Identifier (PID) aus dem MPEG-TS-Eingangsstrom für eine bestimmte Tonspur |
default |
boolescher Wert | Ja (für die Standardspur) |
Die als DEFAULT in der markierte Audiospur EXT-X-MEDIA sowie die Spur, die in den Videostream gemischt werden soll
Ist dies nicht der Fall, ist der erste Titel der Standard. Wenn mehrere Wiedergabelisten mit unterschiedlichen Standardeinstellungen definiert sind, ist die oberste Standardspur die gemixte. |
label |
Schnur | Eine für den Track zu verwendende Textbeschreibung, die nach Möglichkeit vom Spieler verwendet werden sollte; verwendet in: HLS > NAME Gebiet
Standard: das |
|
variant |
Aufzähung |
Entspricht den Werten des DASH-Rollenschemas:
HLS > MERKMALE DASH > Rolle Standard: |
|
streams [] |
Reihe |
Dies ahmt das Wenn nicht vorhanden, werden die Standard-Audioeinstellungen verwendet. HLS > |
Beispiel
Dieser Beispieltext erstellt einen Job mit 2 Audiospuren.
Anfrage
POST https://api.bcovlive.io/v1/jobs
Content-Type: application/json
X-API-KEY: your_API_key
Anfragetext
{
"live_stream": true,
"region": "us-west-2",
"protocol": "rtp",
"cidr_whitelist": [
"0.0.0.0/0"
],
"outputs": [
{
"label": "hls720p",
"live_stream": true,
"height": 720,
"video_bitrate": 2400,
"segment_seconds": 6,
"keyframe_interval": 90
},
{
"label": "hls540p",
"live_stream": true,
"height": 540,
"video_bitrate": 1200,
"segment_seconds": 6,
"keyframe_interval": 90
}
],
"alternate_audio": {
"tracks": [
{
"label": "English",
"language": "en",
"variant": "main",
"video_pid": 256,
"pid": 257,
"default": true
},
{
"label": "Spanish",
"language": "es",
"variant": "main",
"video_pid": 256,
"pid": 258
}
]
}
}
Beispielantwort
{
"id": "76f814fbcd7840e99ebf0e335c933730",
"outputs": [
{
"id": "0-76f814fbcd7840e99ebf0e335c933730",
"playback_url": "https://playback-qa.a-live.io/76f814fbcd7840e99ebf0e335c933730/us-west-2/NA/profile_0/chunklist.m3u8",
"playback_url_dvr": "https://playback-qa.a-live.io/76f814fbcd7840e99ebf0e335c933730/us-west-2/NA/profile_0/chunklist_dvr.m3u8",
"playback_url_vod": "https://playback-qa.a-live.io/76f814fbcd7840e99ebf0e335c933730/us-west-2/NA/profile_0/chunklist_vod.m3u8",
"playback_added_cdns": [],
"label": "hls720p"
},
{
"id": "1-76f814fbcd7840e99ebf0e335c933730",
"playback_url": "https://playback-qa.a-live.io/76f814fbcd7840e99ebf0e335c933730/us-west-2/NA/profile_1/chunklist.m3u8",
"playback_url_dvr": "https://playback-qa.a-live.io/76f814fbcd7840e99ebf0e335c933730/us-west-2/NA/profile_1/chunklist_dvr.m3u8",
"playback_url_vod": "https://playback-qa.a-live.io/76f814fbcd7840e99ebf0e335c933730/us-west-2/NA/profile_1/chunklist_vod.m3u8",
"playback_added_cdns": [],
"label": "hls540p"
},
{
"id": "2-76f814fbcd7840e99ebf0e335c933730",
"playlist_type": "defaultS3",
"type": "playlist",
"alternate_audio": {
"tracks": [
{
"label": "English",
"language": "en",
"name": "Alt0",
"pid": 257,
"playlistDefault": true,
"default": true,
"variant": "main",
"profile_sources": [
"profile_0"
]
},
{
"label": "Spanish",
"language": "es",
"name": "Alt1",
"pid": 258,
"playlistDefault": false,
"default": false,
"variant": "main",
"profile_sources": [
"profile_0"
]
}
]
},
"filename": "playlist.m3u8",
"dvr_filename": "playlist_dvr.m3u8",
"playback_url": "https://playback-qa.a-live.io/76f814fbcd7840e99ebf0e335c933730/us-west-2/NA/playlist.m3u8",
"playback_url_dvr": "https://playback-qa.a-live.io/76f814fbcd7840e99ebf0e335c933730/us-west-2/NA/playlist_dvr.m3u8",
"playback_added_cdns": []
}
],
"stream_url": "rtp://ep3-usw2.a-live.io:11780",
"stream_name": "76f814fbcd7840e99ebf0e335c933730.stream",
"static": false,
"alternate_audio": {
"tracks": [
{
"label": "English",
"language": "en",
"pid": 257,
"default": true,
"variant": "main",
"name": "Alt0"
},
{
"label": "Spanish",
"language": "es",
"pid": 258,
"default": false,
"variant": "main",
"name": "Alt1"
}
]
},
"event_length": 93600,
"encryption": {},
"playback_url": "https://playback-qa.a-live.io/76f814fbcd7840e99ebf0e335c933730/us-west-2/NA/playlist.m3u8",
"playback_url_dvr": "https://playback-qa.a-live.io/76f814fbcd7840e99ebf0e335c933730/us-west-2/NA/playlist_dvr.m3u8",
"playback_added_cdns": []
}
Konfigurieren Sie Ihren Encoder
Konfigurieren Sie Ihren Encoder so, dass er MPEG-TS über RTP an die stream_url aus der Create-Antwort liefert. Stellen Sie sicher, dass die im Anfragetext bereitgestellten Audiospuren mit der richtigen PID in Ihrem Encoder konfiguriert sind.
Beispiel mit ffprobe
Wenn Sie die PIDs Ihres Encoders nicht kennen, können Sie ein Tool wie ffprobe (in ffmpeg enthalten) verwenden, um die PIDs im Stream zu überprüfen.
ffprobe /tmp/ma.ts
ffprobe version 5.0.1 Copyright (c) 2007-2022 the FFmpeg developers
built with Apple clang version 13.0.0 (clang-1300.0.29.3)
configuration: --prefix=/usr/local/Cellar/ffmpeg/5.0.1-with-options_1 --enable-shared --cc=clang --host-cflags= --host-ldflags= --enable-gpl --enable-libaom --enable-libdav1d --enable-libmp3lame --enable-libopus --enable-libsnappy --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265 --enable-libfontconfig --enable-libfreetype --enable-frei0r --enable-libass --enable-demuxer=dash --enable-opencl --enable-audiotoolbox --enable-videotoolbox --disable-htmlpages --enable-libvmaf --enable-version3
libavutil 57. 17.100 / 57. 17.100
libavcodec 59. 18.100 / 59. 18.100
libavformat 59. 16.100 / 59. 16.100
libavdevice 59. 4.100 / 59. 4.100
libavfilter 8. 24.100 / 8. 24.100
libswscale 6. 4.100 / 6. 4.100
libswresample 4. 3.100 / 4. 3.100
libpostproc 56. 3.100 / 56. 3.100
Input #0, mpegts, from '/tmp/ma.ts':
Duration: 00:00:04.86, start: 1.400000, bitrate: 502 kb/s
Program 1
Metadata:
service_name : Service01
service_provider: FFmpeg
Stream #0:0[0xff]: Video: h264 (Constrained Baseline) ([27][0][0][0] / 0x001B), yuv420p(progressive), 360x240 [SAR 1:1 DAR 3:2], 30 fps, 30 tbr, 90k tbn
Stream #0:1[0x100]: Audio: aac (LC) ([15][0][0][0] / 0x000F), 44100 Hz, mono, fltp, 98 kb/s
Stream #0:2[0x102]: Audio: aac (LC) ([15][0][0][0] / 0x000F), 44100 Hz, mono, fltp, 98 kb/s
Die Hexadezimalzahl hinter dem Stream gibt die PID an. Zum Beispiel:
0xff == 255
0x100 == 256
0x101 == 257
Testwiedergabe
Laden Sie die play_url in die Brightcove-Player oder Safari, um die Wiedergabe zu bestätigen.
DRM_Wiedergabe
Derzeit wird DRM nur über den Catch-up-Dienst (Timeshift) unterstützt. Fügen Sie diese Felder zu Ihrem Anfragetext für Job erstellen hinzu:
{
"drm": {
"modes": [
"all"
]
},
"timeshift": {
"type": "single",
"startover_duration": 36000,
"skip_live_output": true
}
}
Die Antwort umfasst DRM-Ausgaben und a timeshift_url
für die Wiedergabe zu verwenden.