Introducción
Esta función permite la ingesta de múltiples idiomas de audio, pistas de experiencia de audio descriptivas o ambientales para estar disponibles para reproducción en vivo. Puede seguir los pasos aquí usando Live API. También puede utilizar Video Cloud Studio. Para más detalles, consulte el Audio en varios idiomas con el módulo en vivo documento.
Requisitos
Existen algunos requisitos para las pistas de audio en varios idiomas.
Habilita tu cuenta
- Póngase en contacto con el servicio de atención al cliente para habilitar Live API con la función de audio en varios idiomas
- Asegúrese de tener una clave de API para Live API (que se le proporciona cuando se configura la cuenta)
Configura tu codificador
- Utilice un codificador que admita el protocolo RTP. La compatibilidad con audio en varios idiomas se limita a
rtp
osrt
protocolo.
-
Obtenga los siguientes valores de su codificador: Para obtener más información, consulte la documentación de su codificador.
- Defina el PID (Identificador de paquete) para cada pista de audio en su codificador
- Defina el PID de video asociado con el video en su codificador
Si no conoce los valores PID de su codificador, consulte la Configura tu codificador sección.
Crea tu trabajo en vivo
Para agregar varias pistas de audio a su trabajo, se debe proporcionar una lista de pistas de audio en el cuerpo de la solicitud al crear un trabajo en vivo:
{
"live_stream": true,
"region": "us-west-2",
"protocol": "rtp",
"cidr_whitelist": [ /* omitted… */ ],
"outputs": [ /* omitted… */ ],
"alternate_audio": {
"tracks": [ { Track Details } ]
}
}
Campos admitidos para Track
objeto
La siguiente tabla contiene una descripción completa de los campos admitidos en el track
objeto.
Campo | Tipo | Requerido | Descripción |
---|---|---|---|
language |
cuerda | Sí |
El código del idioma a utilizar; en la actualidad esto es flexible y podría estar en cualquiera de los diversos formatos de idioma requeridos/admitidos por las especificaciones, específicamente RFC5456/BCP47 que también cubre ISO-639 según los requisitos HLS> DASH> |
video_pid |
entero | Sí | El identificador de paquete (PID) del flujo de entrada MPEG-TS para la pista de video |
pid |
entero | Sí | El identificador de paquete (PID) del flujo de entrada MPEG-TS para una pista de audio específica |
default |
booleano | Sí (para la pista predeterminada) |
La pista de audio marcada como DEFAULT en el EXT-X-MEDIA así como la pista que se muxará en la transmisión de video
Si no está presente, la primera pista es la predeterminada. Si se definen varias listas de reproducción con diferentes valores predeterminados, la pista predeterminada de nivel superior es la multiplexada. |
label |
cuerda | Una descripción de texto que se usará para la pista, preferida para que la use el jugador cuando sea posible; utilizada en: HLS> NAME campo
Predeterminado: el |
|
variant |
enumeración |
Se asigna a los valores del esquema de roles de DASH:
HLS > CARACTERÍSTICAS GUIÓN > Rol Por defecto: |
|
streams [] |
gama |
Esto imita el Si no está presente, utiliza la configuración de audio predeterminada. HLS> |
Ejemplo
Este cuerpo de ejemplo creará un trabajo con 2 pistas de audio.
Solicitud
POST https://api.bcovlive.io/v1/jobs
Content-Type: application/json
X-API-KEY: your_API_key
Cuerpo de la solicitud
{
"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
}
]
}
}
Respuesta de muestra
{
"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": []
}
Configura tu codificador
Configure su codificador para entregar MPEG-TS a través de RTP a stream_url desde la respuesta de creación. Asegúrese de que las pistas de audio proporcionadas en el cuerpo de la solicitud estén configuradas con el PID correcto en su codificador.
Ejemplo con ffprobe
Si no conoce los PID de su codificador, puede usar una herramienta como ffprobe (incluida con ffmpeg) para inspeccionar los PID en la transmisión.
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
El número hexadecimal después de la transmisión indicará el PID. Por ejemplo:
0xff == 255
0x100 == 256
0x101 == 257
Prueba de reproducción
Cargue la URL de reproducción en el Jugador de Brightcove o Safari para confirmar la reproducción.
DRM_Playback
Actualmente, DRM solo se admite a través del servicio Catch-up (Timeshift). Agregue estos campos al cuerpo de la solicitud de Crear trabajo:
{
"drm": {
"modes": [
"all"
]
},
"timeshift": {
"type": "single",
"startover_duration": 36000,
"skip_live_output": true
}
}
La respuesta incluirá salidas DRM y un timeshift_url
utilizar para la reproducción.