Introduction
Cette fonction permet d'acquérir plusieurs langues audio, des pistes d'expérience audio descriptives ou ambiantes pour être disponibles pour la lecture en direct. Vous pouvez suivre les étapes ici en utilisant l'API Live. Vous pouvez également utiliser Video Cloud Studio. Pour plus de détails, consultez le Audio multilingue avec le module Live document.
Exigences
Quelques conditions sont requises pour les pistes audio multilingues.
Activer votre compte
- Contactez le service clientèle pour activer l'API Live avec la fonction audio multilingue
- Assurez-vous que vous disposez d'une clé API pour l'API Live (fournie lors de la création du compte)
Configuration de l'encodeur
- Utilisez un encodeur qui prend en charge le protocole RTP. La prise en charge audio multilingue est limitée à
rtp
ousrt
protocole.
-
Obtenez les valeurs suivantes à partir de votre encodeur : Pour plus de détails, reportez-vous à la documentation de votre codeur.
- Définir le PID (Packet Identifier) pour chaque piste audio dans votre encodeur
- Définir le PID vidéo associé à la vidéo dans votre encodeur
Si vous ne connaissez pas les valeurs PID de votre encodeur, consultez le Configurez votre encodeur section.
Créez votre emploi en direct
Afin d'ajouter plusieurs pistes audio à votre tâche, une liste de pistes audio doit être fournie dans le corps de la demande lors de la création d'une tâche en direct :
{
"live_stream": true,
"region": "us-west-2",
"protocol": "rtp",
"cidr_whitelist": [ /* omitted… */ ],
"outputs": [ /* omitted… */ ],
"alternate_audio": {
"tracks": [ { Track Details } ]
}
}
Champs pris en charge pour le Track
objet
Le tableau ci-dessous contient une description complète des champs pris en charge dans l' track
objet.
Champ | Type | Obligatoire | Description |
---|---|---|---|
language |
chaîne | Oui |
Le code de la langue à utiliser ; à l'heure actuelle, il est flexible et peut être dans n'importe lequel des différents formats de langue requis/pris en charge par les spécifications, en particulier le RFC5456/BCP47 qui couvre également la norme ISO-639 conformément aux exigences HLS > TABLEAU DE BORD > |
video_pid |
entier | Oui | L'identifiant de paquet (PID) du flux d'entrée MPEG-TS pour la piste vidéo |
pid |
entier | Oui | L'identifiant de paquet (PID) du flux d'entrée MPEG-TS pour une piste audio spécifique |
default |
booléen | Oui (pour la piste par défaut) |
La piste audio marquée comme étant DEFAULT dans le EXT-X-MEDIA flux vidéo ainsi que la piste à mixer dans le flux vidéo
Si elle n'est pas présente, la première piste est la piste par défaut. Si plusieurs listes de lecture sont définies avec des valeurs par défaut différentes, la piste par défaut de premier niveau est celle qui est fusionnée. |
label |
chaîne | Une description textuelle à utiliser pour le morceau, à utiliser de préférence par le joueur dans la mesure du possible ; utilisée dans : HLS > NAME champ
Par défaut : |
|
variant |
énumération |
Corroge aux valeurs du schéma de rôles DASH :
HLS > CARACTÉRISTIQUES DASH > Rôle Par défaut : |
|
streams [] |
déployer |
Cela imite le S'il n'est pas présent, il utilise les paramètres audio par défaut. HLS > |
Exemple
Cet exemple de corps créera un Job avec 2 pistes audio.
Requête
POST https://api.bcovlive.io/v1/jobs
Content-Type: application/json
X-API-KEY: your_API_key
Corps de la demande
{
"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
}
]
}
}
Exemple de réponse
{
"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": []
}
Configurer votre encodeur
Configurez votre encodeur pour fournir MPEG-TS sur RTP à stream_url à partir de la réponse de création. Assurez-vous que les pistes audio fournies dans le corps de la demande sont configurées avec le bon PID dans votre encodeur.
Exemple avec ffprobe
Si vous ne connaissez pas les PID de votre encodeur, vous pouvez utiliser un outil tel que ffprobe (inclus avec ffmpeg) pour inspecter les PID dans le flux.
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
Le numéro hexadécimal qui suit le flux indique le PID. Par exemple :
0xff == 255
0x100 == 256
0x101 == 257
Tester la lecture
Chargez le playback_url dans le Lecteur Brightcove ou Safari pour confirmer la lecture.
DRM_Lecture
Actuellement, DRM n'est pris en charge que via le service de rattrapage (timeshift). Ajoutez ces champs à votre corps de demande de demande de création d'emploi :
{
"drm": {
"modes": [
"all"
]
},
"timeshift": {
"type": "single",
"startover_duration": 36000,
"skip_live_output": true
}
}
La réponse comprendra des sorties DRM et un timeshift_url
à utiliser pour la lecture.