Resumen
Este tutorial explica a nivel de API cómo crear un trabajo de transmisión en vivo en Brightcove en vivo y luego cree un clip con precisión de fotograma a partir de él.
Tenga en cuenta que el recorte con precisión de fotograma requiere que su codificador envíe códigos de tiempo SMPTE.
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.
- Asumimos que ya tiene una cuenta de Brightcove y ellos tienen su API-KEY, llamémosla
bcov-live-api-key
-
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": "", "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": 540, "video_bitrate": 4500, "segment_seconds": 6, "keyframe_interval": 60 }] }'
-
Reemplazar:
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 su clave API en vivo de Brightcove. Por ejemplo:
abcdfeg-this-is-a-fake-api-key-FgJajjasd12hJHsZ
- 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:
{ "id": "3b6871bf2f344acaa6b397d09b476018", "outputs": [... removed for simplicity ...], "stream_url": "rtmp://ep1-usw2.bcovlive.io:1935/3b6871bf2f344acaa6b397d09b476018", "stream_name": "alive", "static": false, "encryption": {}, "playback_url": "https://bcovlive-a.akamaihd.net/3b6871bf2f344acaa6b397d09b476018/us-west-2/NA/playlist.m3u8", "playback_url_dvr": "https://bcovlive-a.akamaihd.net/3b6871bf2f344acaa6b397d09b476018/us-west-2/NA/playlist_dvr.m3u8" }
Estos trabajos crearán 5 representaciones. basado en Recomendaciones de Apple.
Configura tu codificador
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 este caso son:
- Configurar la fuente del código de tiempo como "reloj del sistema"
- Establecer "Frecuencia de código de tiempo de OnFi" en 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 este experimento:
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:
Crea un clip con precisión de fotograma
En este tutorial, asumiremos que está enviando el clip a su biblioteca de Video Cloud. Si está enviando el clip a un depósito de S3 o alguna otra ubicación, el proceso es el mismo: solo hay algunas diferencias menores en el cuerpo de la solicitud para las solicitudes de API.
Cartas credenciales
Si no ha creado credenciales para Video Cloud en su cuenta Live, puede seguir los pasos aquí para hacerlo. Esta es una operación de una sola vez.
Si aún no tiene las credenciales de cliente para la ingesta dinámica de videos en Video Cloud, deberá crearlas. Ver Administrar las credenciales de autenticación de API para obtener instrucciones sobre cómo hacer esto en Studio.
- Copia el rizo comando a continuación en un editor de texto:
curl -X POST \ https://api.bcovlive.io/v1/credentials \ -H 'Content-Type: application/json' \ -H 'x-api-key: ' \ -d '{ "credential_default_for_type": true, "credential_label": "Video_Cloud_Uploads", "credential_private": "", "credential_public": "", "credential_type": "videocloud" }'
-
Reemplazar:
con su clave de API en vivo
con tu secreto de cliente
con su identificación de cliente
- Copie y pegue el comando editado en Terminal o su aplicación de línea de comando, y ejecútelo.
- La respuesta debería tener un aspecto similar a esto:
{ "credential_id": "1e0180330b724dfbbcaf6b28b6c5d517", "user_id": "c2691d4d039040be96c190a949d754a7", "credential_label": "Video_Cloud_Uploads" }
Crea el clip
Una vez que tenga sus credenciales de Video Cloud, estará listo para crear un clip.
- Copie la solicitud de curl a continuación y péguela en un editor de texto:
curl -X POST \ https://api.bcovlive.io/v1/vods \ -H 'Content-Type: application/json' \ -H 'x-api-key: ' \ -d '{ "live_job_id":"", "outputs":[{ "label": "Trim by SMPTE TC 17:33:11:12 to 17:34:00:00", "stream_start_timecode": "", "stream_end_timecode": "", "videocloud":{"ingest":{"capture-images":true},"video":{"name":"test-frame-accurate-clip"}}, "credentials": "" }] }'
-
Reemplazar:
con su clave API en vivo de Brightcove. Por ejemplo:
abcdfeg-this-is-a-fake-api-key-FgJajjasd12hJHsZ
con la identificación del trabajo en la respuesta a su solicitud para crear el trabajo en vivo. En nuestro ejemplo, este valor sería
3b6871bf2f344acaa6b397d09b476018
- el tuyo será diferente.y
deben ser valores que tengan sentido (estén presentes) en su transmisión en vivo. En nuestro ejemplo hemos utilizado:
17:33:11:12
y17:34:00:00
con la etiqueta de sus credenciales de Video Cloud. Si aún no los tenía y los creó siguiendo los pasos anteriores, esto sería
Video_Cloud_Uploads
- Copie y pegue el código editado en Terminal o su aplicación de línea de comando, y ejecútelo.
- La respuesta debería tener un aspecto similar a esto:
{ "vod_jobs": [ { "jvod_id": "0b14a4ba326d4dd08f15053ca2a403b7", "label": "Trim by SMPTE Timecodes" } ], "live_job_id": "3b6871bf2f344acaa6b397d09b476018" }
Probamos la precisión del experimento, descargamos el clip y lo usamos. Adobe Premiere para verificar el primer y último cuadro, dado que el código de tiempo está superpuesto, una simple verificación visual es suficiente para confirmar la precisión en los puntos de entrada y salida: