Resumen
Este tutorial explica a nivel de API cómo crear un trabajo de transmisión en vivo en Brightcove en vivo que aceptará la entrada MPEG2-TS. La clave para usar la entrada MPEG2-TS es seleccionar un protocol
que admita MPEG2-TS y que su codificador pueda entregar. Los protocolos compatibles con TS admitidos por Live API son:
rtp
rtp-fec
srt
Uno de estos protocolos debe especificarse explícitamente para utilizar la entrada TS, porque el protocolo de entrada predeterminado es rtmp
.
Para usar códigos de tiempo SMPTE para recortes, puntos de referencia SSAI o etiquetas ID3, deben insertarse en el video H.264 (AVC) en los mensajes SEI Picture Timing.
Recuerde que estos protocolos usan UDP (User Datagram Protocol) en lugar de TCP para la comunicación entre el codificador y Live, por lo que su firewall / enrutador debe configurarse correctamente y permitir salidas UDP a Internet desde la IP del codificador.
Si está utilizando rtp-fec
, la información FEC se envía en un puerto distinto del medio, por lo que, por ejemplo, si utiliza el puerto 2000, también necesitará abrir los puertos 2002 y 2004 (si utiliza FEC 2D).
Este tutorial usará curl para realizar las solicitudes de API, pero puede realizarlas fácilmente en Insomnia , Postman u otros clientes REST en su lugar.
Crea un trabajo en vivo
Primero, crearemos un trabajo en vivo. Necesitarás un API-KEY
para la API en vivo. Si no lo hace y está interesado en obtener acceso, comuníquese con su Gerente de Éxito del Cliente.
-
Copie y pegue lo siguiente curl comando en un editor de texto:
curl -X POST \ https://api.bcovlive.io/v1/jobs \ -H 'Content-Type: application/json' \ -H 'x-api-key: ' \ -d '{ "live_stream": true, "region": "", "protocol": "", "cidr_whitelist": ["", ""], "outputs": [{ "label": "hls360p", "live_stream": true, "height": 360, "video_bitrate": 365, "segment_seconds": 6, "keyframe_interval": 60 }, { "label": "hls432p", "live_stream": true, "height": 432, "video_bitrate": 730, "segment_seconds": 6, "keyframe_interval": 60 }, { "label": "hls540p", "live_stream": true, "height": 540, "video_bitrate": 2000, "segment_seconds": 6, "keyframe_interval": 60 }, { "label": "hls720p3M", "live_stream": true, "height": 540, "video_bitrate": 2000, "segment_seconds": 6, "keyframe_interval": 60 }, { "label": "hls720p4.5M", "live_stream": true, "height": 720, "video_bitrate": 4500, "segment_seconds": 6, "keyframe_interval": 60 }] }'
-
Realice los siguientes reemplazos:
con su clave API en vivo de Brightcove. Por ejemplo:
abcdfeg-this-is-a-fake-api-key-FgJajjasd12hJHsZ
con la región disponible más cercana a su codificador, consulte regiones disponibles más cercanas a su codificador. Por ejemplo:
us-west-2
con el protocolo de entrada que entregará su codificador:
rpt
,rtp-fec
, osrt
con el rango de IP que usará su codificador, en forma de
1.2.3.4/32
(si corresponde) con el rango de IP que usará su codificador de respaldo, en forma de
1.2.3.4/32
- Después de realizar esos cambios, copie y pegue el código en Terminal o en cualquier aplicación de línea de comandos que use y ejecútelo.
-
La respuesta debería ser algo como esto si está utilizando el
rtp-fec
protocolo:{ "id": "42c913e5373844a99a6285367f2704ec", "outputs": [... removed for simplicity ...], "stream_url": "rtp://ec2-34-212-0-224.us-west-2.compute.amazonaws.com:12675", "stream_name": "42c913e5373844a99a6285367f2704ec.stream", "static": false, "encryption": {}, "playback_url": "https://bcovlive-a.akamaihd.net/42c913e5373844a99a6285367f2704ec/us-west-2/NA/playlist.m3u8", "playback_url_dvr": "https://bcovlive-a.akamaihd.net/42c913e5373844a99a6285367f2704ec/us-west-2/NA/playlist_dvr.m3u8" }
O así para
srt
:{ "id": "cdb820f2d7764b91a79536dac799fb77", "outputs": [... removed for simplicity ...], "stream_url": "srt://ec2-34-212-0-224.us-west-2.compute.amazonaws.com:13820", "stream_name": "cdb820f2d7764b91a79536dac799fb77.stream", "static": false, "encryption": {}, "playback_url": "https://bcovlive-a.akamaihd.net/cdb820f2d7764b91a79536dac799fb77/us-west-2/NA/playlist.m3u8", "playback_url_dvr": "https://bcovlive-a.akamaihd.net/cdb820f2d7764b91a79536dac799fb77/us-west-2/NA/playlist_dvr.m3u8" }
Estos trabajos crearán 5 representaciones. basado en Recomendaciones de Apple.
Configure su codificador (TS + FEC)
Los pasos que se muestran aquí supondrán una Caja viva elemental codificador, que se utilizó para probar los pasos de este tutorial. Si tiene un codificador diferente, la configuración debería ser similar.
Los ajustes más importantes para esto rtp-fec
entrada son:
- Configurar la fuente del código de tiempo como "reloj del sistema"
- Establezca "Corrección de errores de reenvío" en "Columna y fila" y establezca los valores de "Profundidad de columna" y "Longitud de fila":
- Profundidad de columna: 4 (se agregará 1 paquete FEC adicional a cada paquete TS de "profundidad de columna")
- Longitud de la fila: 10 (se agregará 1 paquete FEC adicional por cada paquete TS de "Longitud de fila")
- Los datos adicionales agregados se pueden calcular: TotalBitrate = MediaBitrate * (1 / (ColumnDepth + 1) + 1 / (RowLength + 1)
- Marque "inserción de código de tiempo" dentro del video
- Muy recomendado: Velocidad de fotogramas = seguir la fuente
Esta es la configuración que usamos para esta muestra de TS + FEC:
Configura tu codificador (SRT)
La configuración que se muestra aquí se basa en un Haivision KB codificador, que se utilizó para probar los pasos de este tutorial. Si tiene un codificador diferente, la configuración debería ser similar.
Esta es la configuración que usamos para esta muestra de SRT:
Prueba de reproducción
Puedes usar esto Página de demostración de VideoJS HLS para probar la reproducción, simplemente pegue el valor playback_url
devuelto en la respuesta del trabajo de creación: