Introducción
La API de reproducción es una API de baja latencia destinada al uso del lado del cliente para obtener datos de listas de reproducción o videos de páginas web o aplicaciones móviles. Es no una API de administración de medios general para usar en la integración de Video Cloud con su CMS u otros sistemas; para eso, debe usar la API de CMS.
Los resultados de la API de reproducción se filtran para que solo muestren videos reproducibles (estado = ACTIVO, marca de ingestión completa = verdadero y con los datos / hora correctos si está programado). Esto significa que el reproductor podrá reproducir el video tan pronto como exista una interpretación, incluso si otras aún se están procesando. Si necesita buscar videos que no se pueden reproducir actualmente, debe usar nuevamente el API de CMS en lugar de.
Tenga en cuenta también que para maximizar el rendimiento, los datos de video a los que accede la API de reproducción se almacenan en caché durante un breve período de tiempo. El tiempo de almacenamiento en caché de un ID de conjunto de datos en particular variará, pero puede tardar hasta 20 minutos.
También vea el Referencia de API.
Casos de uso
La Jugador de Brightcove y el Reproductores SDK de Brightcove Incluya métodos de catálogo idénticos a los métodos de la API de reproducción, y en su mayor parte, simplemente puede usarlos si solo está recuperando videos o listas de reproducción en tiempo de ejecución para reproducir.
Sin embargo, es posible que desee proporcionar una vista de videos o listas de reproducción en una pantalla de aplicación móvil donde no haya ningún reproductor presente.
Además, puede haber ocasiones en las que desee recuperar videos o listas de reproducción para mostrar información sobre ellos, sin tener un reproductor en la pantalla, como la página de destino de un portal de videos, por ejemplo.
La API de reproducción es útil en estos casos.
Información general
URL base
La URL base de la API de reproducción es:
https://edge.api.brightcove.com/playback/v1
Ruta de la cuenta
En todos los casos, las solicitudes se realizarán para un Video Cloud Cuenta. Por lo tanto, siempre agregarás el término accounts
seguido del ID de tu cuenta a la URL base:
https://edge.api.brightcove.com/playback/v1/accounts/{account_id}
Autenticación
Las solicitudes se autentican mediante una clave de política, que se puede pasar de una de estas tres formas:
- En un argumento a un
Accept
encabezamiento:Accept: application/json;pk={policy_key}
Este es el método recomendado para un cliente basado en navegador, ya que permite que la solicitud continúe sin una solicitud adicional primero como parte de la verificación "previa al vuelo" de CORS del navegador. Esto ahorra latencia la primera vez que se realiza una solicitud del navegador.
- En un
Authorization
encabezado usando la palabra clave realmBCOV-Policy
:Authorization: BCOV-Policy {policy_key}
- en un
BCOV-Policy
encabezamiento:BCOV-Policy: {policy_key}
Obtener una clave de política
Hay tres formas de obtener una clave de política:
- A cada jugador de Brightcove se le asigna uno automáticamente. Puedes encontrar instrucciones para obtener la clave de política de un jugador en este documento. Dado que las claves de política son buenas para toda la cuenta, puede usarlas independientemente de si ese reproductor está incrustado en la página.
- Puede generar una clave de política básica utilizando el Inicio rápido de claves de políticas
- Puede realizar una solicitud al API de política
Autenticación de token
Se admite la autenticación de token para contenido HLS y DASH. Si necesita autenticación de token, comuníquese con su Gerente de éxito del cliente para habilitarlo para su cuenta.
Evite las URL codificadas de forma rígida
Las URL de miniaturas, carteles, archivos de video y otros medios nunca deben codificarse en sus páginas o aplicaciones. La Playback API devolverá la última versión almacenada en caché de las URL para los archivos multimedia, pero las URL en sí están sujetas a cambios. Deberías usar el CMS API ( o Playback API ) solicita recuperar estas URL cada vez que se carga la página, o almacenarlas en caché durante no más de seis horas.
Almacenamiento en caché de URL de imágenes y videos
Puede almacenar en caché las URL de videos e imágenes para mejorar el rendimiento de la página, pero la caché debe actualizarse con regularidad. Si almacena en caché las URL que recupera para mejorar el rendimiento de sus páginas, asegúrese de actualizar la caché repitiendo las llamadas a la API al menos una vez cada seis horas.
Métodos
La API solo admite las siguientes solicitudes GET, de los siguientes tipos:
Solicitudes de video
Se puede recuperar un solo objeto de video utilizando la identificación de video o la identificación de referencia.
Obtener video por id
Punto final
https://edge.api.brightcove.com/playback/v1/accounts/{account_id}/videos/{video_id}
Ejemplo
https://edge.api.brightcove.com/playback/v1/accounts/57838016001/videos/38467382999
Respuesta de muestra
{
"account_id": "107767373999",
"ad_keys": null,
"created_at": "2010-07-12T22:37:34.760Z",
"description": "Avatar_MakingAScene_Featurette",
"duration": 595560,
"id": "38467382999",
"long_description": null,
"name": "Avatar_MakingAScene_Featurette",
"published_at": "2010-07-12T22:37:34.760Z",
"reference_id": "AvatarMakingShort",
"text_tracks": [],
"updated_at": "2010-07-12T22:54:29.666Z",
"cue_points": [
{
"id": "111637107001",
"name": "Pre-roll",
"type": "AD",
"time": 0,
"metadata": null,
"force_stop": false
}
],
"custom_fields": {
"moretext": "this is the first video uploaded",
"mylist": "abc"
},
"link": {
"text": "Full Dvd at Amazon",
"url": "https://www.amazon.com/Avatar-Sam-Worthington/dp/B002VPE1AW"
},
"tags": [
"copied"
],
"poster_sources": [
{
"src": "https://brightcove04.o.brightcove.com/107767373999/107767373999_111728861001_vs-111727994001.jpg?pubId=107767373999&videoId=38467382999"
}
],
"thumbnail_sources": [
{
"src": "https://brightcove04.o.brightcove.com/107767373999/107767373999_111728862001_th-111727994001.jpg?pubId=107767373999&videoId=38467382999"
}
],
"poster": "https://brightcove04.o.brightcove.com/107767373999/107767373999_111728861001_vs-111727994001.jpg?pubId=107767373999&videoId=38467382999",
"thumbnail": "https://brightcove04.o.brightcove.com/107767373999/107767373999_111728862001_th-111727994001.jpg?pubId=107767373999&videoId=38467382999",
"sources": [
{
"avg_bitrate": 379000,
"width": 320,
"duration": 595560,
"size": 28196307,
"stream_name": "mp4:107767373999/107767373999_111728840001_Avatar-MakingAScene-Featurette.mp4?__nn__=1497926354001&slist=107767373999/&auth=daEciavcicRbhbtdSaBdBdVbXd0aUdTcMaX-bvRrSa-hca-slyCzrux_zJAq_HFCB_EvE&aifp=bcosuds",
"codec": "H264",
"asset_id": "111728840001",
"container": "MP4",
"height": 180,
"app_name": "rtmp://cp150446.edgefcs.net/ondemand"
},
{
"avg_bitrate": 379000,
"width": 320,
"src": "https://uds.ak.o.brightcove.com/107767373999/107767373999_111728840001_Avatar-MakingAScene-Featurette.mp4?pubId=107767373999&videoId=38467382999",
"size": 28196307,
"height": 180,
"duration": 595560,
"container": "MP4",
"codec": "H264",
"asset_id": "111728840001"
}, ... 6 more sources ...
]
}
Obtener video por ID de referencia
Punto final
https://edge.api.brightcove.com/playback/v1/accounts/{account_id}/videos/ref:{reference_id}
Ejemplo
https://edge.api.brightcove.com/playback/v1/accounts/57838016001/videos/ref:nature_2010-07-12
Respuesta de muestra
{
"account_id": "107767373999",
"ad_keys": null,
"created_at": "2010-07-12T22:37:34.760Z",
"description": "Avatar_MakingAScene_Featurette",
"duration": 595560,
"id": "38467382999",
"long_description": null,
"name": "Avatar_MakingAScene_Featurette",
"published_at": "2010-07-12T22:37:34.760Z",
"reference_id": "nature_2010-07-12",
"text_tracks": [],
"updated_at": "2010-07-12T22:54:29.666Z",
"cue_points": [
{
"id": "111637107001",
"name": "Pre-roll",
"type": "AD",
"time": 0,
"metadata": null,
"force_stop": false
}
],
"custom_fields": {
"moretext": "this is the first video uploaded",
"mylist": "abc"
},
"link": {
"text": "Full Dvd at Amazon",
"url": "https://www.amazon.com/Avatar-Sam-Worthington/dp/B002VPE1AW"
},
"tags": [
"copied"
],
"poster_sources": [
{
"src": "https://brightcove04.o.brightcove.com/107767373999/107767373999_111728861001_vs-111727994001.jpg?pubId=107767373999&videoId=38467382999"
}
],
"thumbnail_sources": [
{
"src": "https://brightcove04.o.brightcove.com/107767373999/107767373999_111728862001_th-111727994001.jpg?pubId=107767373999&videoId=38467382999"
}
],
"poster": "https://brightcove04.o.brightcove.com/107767373999/107767373999_111728861001_vs-111727994001.jpg?pubId=107767373999&videoId=38467382999",
"thumbnail": "https://brightcove04.o.brightcove.com/107767373999/107767373999_111728862001_th-111727994001.jpg?pubId=107767373999&videoId=38467382999",
"sources": [
{
"avg_bitrate": 379000,
"width": 320,
"duration": 595560,
"size": 28196307,
"stream_name": "mp4:107767373999/107767373999_111728840001_Avatar-MakingAScene-Featurette.mp4?__nn__=1497926354001&slist=107767373999/&auth=daEciavcicRbhbtdSaBdBdVbXd0aUdTcMaX-bvRrSa-hca-slyCzrux_zJAq_HFCB_EvE&aifp=bcosuds",
"codec": "H264",
"asset_id": "111728840001",
"container": "MP4",
"height": 180,
"app_name": "rtmp://cp150446.edgefcs.net/ondemand"
},
{
"avg_bitrate": 379000,
"width": 320,
"src": "https://uds.ak.o.brightcove.com/107767373999/107767373999_111728840001_Avatar-MakingAScene-Featurette.mp4?pubId=107767373999&videoId=38467382999",
"size": 28196307,
"height": 180,
"duration": 595560,
"container": "MP4",
"codec": "H264",
"asset_id": "111728840001"
}, ... 6 more sources ...
]
}
Buscar videos
Debes usar un Clave de política habilitada para búsqueda , al buscar videos usando la API de reproducción. Para obtener más detalles, consulte la Referencia de la API de reproducción documento.
Parámetros
Tenga en cuenta que todos los parámetros son Opcional. Se aplican a GET Videos
solo solicitudes.
Parámetro | Descripción |
---|---|
q |
Cadena de consulta para búsquedas: para obtener más detalles, consulte la guía de búsqueda |
limit |
Número de videos para devolver: debe ser un número entero entre 1 y 1000. Predeterminado: 20 |
offset |
Número de videos para omitir (para resultados de paginación). Debe ser un número entero positivo. Predeterminado: 0 |
sort |
Una cadena que especifica el campo por el que ordenar. Empezar con - ordenar descendente.Si un valor para q se proporciona, entonces el orden predeterminado es por "puntuación" (relevancia de los resultados de la búsqueda para la consulta original).Si no hay valor para q se proporciona, entonces el orden predeterminado es por updated_at descendente.Los siguientes campos son válidos para ordenar: name , reference_id , created_at , published_at , updated_at , schedule_starts_at , schedule_ends_at , state , plays_total , y plays_trailing_week Para más detalles, consulte el Obtener vídeos sección de referencia de la API de reproducción |
config_id |
Ver reglas de entrega |
ad_config_id |
Ver solicitudes de video con SSAI |
Usar parámetros de búsqueda
Brightcove's Playback API proporciona una forma programática de buscar videos en su Video Cloud Biblioteca.
Para realizar búsquedas básicas y complejas en sus datos de video, utilizará el q
parámetro:
https://edge.api.brightcove.com/playback/v1/accounts/1752604051111/videos?q={search terms}
Para obtener detalles sobre cómo buscar videos, consulte la Buscar videos documento.
Resultados de paginación
Utilizar el limit
parámetro para especificar cuántos artículos desea devolver en una solicitud, hasta 1000. A continuación, puede utilizar el offset
parámetro para paginar conjuntos de resultados que son más grandes que el limit
. La offset
es el número de elementos que se deben omitir.
Por ejemplo, la siguiente búsqueda devuelve videos del 51 al 75 del conjunto de resultados total, asumiendo que el conjunto de resultados total tiene al menos 75 videos:
/videos?q=updated_at:2014-01-01..2014-06-30&limit=25&offset=50
La limit
y offset
Los parámetros solo se pueden usar para videos.
Mejores prácticas de paginación
Al hojear su conjunto de resultados desde la API de reproducción, se recomienda seguir estos pasos:
- Utilizar el
limit
yoffset
parámetros para devolver grupos de datos de su conjunto de resultados./accounts/578380111111/videos?q=tags:nature&limit=20&offset=50
- Con cada respuesta, verá que el
count
El campo siempre muestra la cantidad máxima de videos en su conjunto de resultados.{"count": 171, "videos": [ ... ] }
- El total
count
de los videos de su primera solicitud se puede utilizar para determinar cuántas páginas más necesitará solicitar.
Alternativamente, puede interrogar alcount
valor con cada respuesta y continúe hasta que elcount
es menor o igual que el tamaño de la página multiplicado por ellimit
.count <= page-number * limit
Ordenar los resultados de los videos
Usa el parámetro sort=field_name
para especificar cómo se deben ordenar los resultados. Puede ordenar los siguientes campos de video:[1-1]
- nombre
- reference_id
- created_at
- publicado_en
- updated_at
- schedule_starts_at (nota: esta es la clasificar campo - el el campo de búsqueda es
schedule.starts_at
) - schedule_ends_at (nota: esta es la clasificar campo - el el campo de búsqueda es
schedule.ends_at
) - estado
- plays_total[1-2]
- plays_trailing_week[1-2]
Notas
- [1-1] Si no proporciona un valor de clasificación para una llamada de búsqueda de video, los resultados se ordenarán por relevancia. Si no proporciona un valor de clasificación para un
GET
llamada de videos, los resultados se ordenarán porupdated_at
descendente. - [1-2] Puedes ordenar en
plays_total
oplays_trailing_week
, pero estos campos no se incluyen en los resultados
Todos los videos y grandes conjuntos de datos
Si está recuperando todos los videos de su cuenta, o una gran cantidad de videos, hay algunas cosas que debe tener en cuenta:
- Es posible que tenga la tentación de utilizar el mayor permitido
limit
(1000), pero es mejor recuperar videos en lotes de 25 o menos para minimizar la posibilidad de que se agote el tiempo de espera de las solicitudes de API. - A medida que navega a través de grandes conjuntos de datos, es posible que los datos de video se actualicen durante la operación, lo que podría hacer que los elementos cambien en las respuestas:
- Es posible que vea un elemento repetido en páginas sucesivas.
- Es posible que se pierda un elemento, ya que se ha cambiado a un conjunto de respuestas anterior
Para tener en cuenta la primera posibilidad, su aplicación debe eliminar la lista completa de elementos una vez que haya terminado de recuperar los videos. Para manejar la segunda posibilidad, debe comparar el número total de elementos recuperados (después de la eliminación de duplicados) con el número que esperaba, y luego volver a ejecutar las solicitudes, clasificando los resultados por last_modified_date (descendente); no debería ser necesario recuperar más de un lote para recoger los artículos perdidos.
- Puede disminuir la probabilidad de los escenarios en el elemento anterior ordenando los resultados devueltos de manera adecuada. La clasificación predeterminada por Relevancia para búsquedas se basa en un algoritmo complejo que busca combinaciones de palabras clave, etiquetas y valores de campos personalizados. Si está buscando videos basados en múltiples palabras clave, etiquetas y / o campos personalizados, ordenar por relevancia es exactamente lo que desea. Sin embargo, si solo está intentando recuperar todos o una gran parte de sus videos,
sort
El parámetro explícitamente le dará más control sobre el orden de los elementos devueltos.
Obtener videos
Punto final
https://edge.api.brightcove.com/playback/v1/accounts/{account_id}/videos
Ejemplo
https://edge.api.brightcove.com/playback/v1/accounts/57838016001/videos?q=tags:nature,name:nature
Respuesta de muestra
{
"count": 123,
"videos":
[
{<video1 fields>},
{<video2 fields>},
...
]
}
Respuesta de error
si intenta utilizar el extremo Obtener videos con una clave de política que NO está habilitada para la búsqueda, recibirá el siguiente mensaje de error de la API de reproducción:
[
{
"api_call": "search",
"error_subcode": "API",
"error_code": "ACCESS_DENIED",
"message": "Access to this resource is forbidden by access policy."
}
]
Encuentra videos relacionados
La API de reproducción le permite buscar en su cuenta videos relacionados con el video especificado. Basado en el name
y short description
del video especificado, la API buscará coincidencias parciales en los siguientes campos:
name
short description
long description
tags
Si la restricción geográfica está en vigor, es posible que no reciba una página completa de resultados.
Parámetros
Los siguientes parámetros de URL se pueden usar para solicitudes de videos relacionados con GET:
Parámetro | Descripción |
---|---|
limit |
El número de videos a devolver (predeterminado=20; máximo=1000) |
ad_config_id |
Agregue su ad_config_id para regresar videos con SSAI |
De forma predeterminada, la respuesta contendrá hasta 20 videos. Puedes usar el limit
parámetro para devolver hasta un máximo de 1000 vídeos, con un coste de latencia incrementada.
Note que no hay offset
cuando encuentre videos relacionados, por lo que no podrá desplazarse por los resultados de su video.
Obtener videos relacionados usando la identificación de video
Punto final
https://edge.api.brightcove.com/playback/v1/accounts/{account_id}/videos/{video_id}/related
Ejemplo
https://edge.api.brightcove.com/playback/v1/accounts/1752604059001/videos/5565662146001/related
Obtener videos relacionados usando la identificación de referencia
Punto final
https://edge.api.brightcove.com/playback/v1/accounts/{account_id}/videos/ref:{reference_id}/related
Ejemplo
https://edge.api.brightcove.com/playback/v1/accounts/1752604059001/videos/ref:nature/related
Respuesta de muestra
En la respuesta a continuación, observe que no hay count
campo, a diferencia del buscar videos respuesta.
{
"videos":
[
{<video1 fields>},
{<video2 fields>},
...
]
}
Respuesta de error
Si intenta utilizar el punto final relacionado con la búsqueda con una clave de política que NO esté habilitada para la búsqueda, recibirá el siguiente mensaje de error de la API de reproducción:
[
{
"api_call": "search",
"error_subcode": "API",
"error_code": "ACCESS_DENIED",
"message": "Access to this resource is forbidden by access policy."
}
]
Reglas de entrega
Para aplicar reglas de entrega a las respuestas a las solicitudes de la API de reproducción, agregue el config_id={DELIVERY_RULES_ID}
a la solicitud
Ejemplo
https://edge.api.brightcove.com/playback/v1/accounts/1752604059001/videos/6026822730001?config_id=9869b9f8-59a1-4490-a092-c28b6cf79764
Solicitud de video con SSAI
Incluso si NO está usando un reproductor web de Brightcove o los SDK nativos de Brightcove en su aplicación, aún puede usar la inserción de anuncios del lado del servidor (SSAI) con su propio reproductor.
Obtener video con SSAI
Para devolver un video con SSAI, agregue su ID de configuración de anuncios como parámetro de URL a su solicitud de Playback API. Con esta solicitud, puede usar una identificación de video o una identificación de referencia de video.
-
Añade tu
ad_config_id
hasta el final de la solicitud de la API de reproducción:Punto final con parámetro de URL
https://edge.api.brightcove.com/playback/v1/accounts/{account_id}/videos/{video_id}?ad_config_id={ad_config_id}
Ejemplo
https://edge.api.brightcove.com/playback/v1/accounts/1752604059001/videos/5565662146001?ad_config_id=1234abcd
-
En la respuesta de muestra a continuación, notará lo siguiente:
- La respuesta es similar a eso si no incluyó un ID de configuración de anuncios.
- Los elementos del
sources
matriz contendrá una nueva propiedad llamadavmap
. - Si desea saber dónde se encuentran los anuncios en el contenido, puede leer el archivo VMAP vinculado en el
vmap
propiedad.
Respuesta de la API de reproducción de muestra
{ "description": "The story of a giant rabbit with a heart bigger than himself. ", "poster_sources": [ { "src": "https://cf-images.us-east-1.prod.boltdns.net/v1/jit/3723496277001/dd5bd69c-e962-4a43-9dbd-94faaaba1785/main/1280x720/5m17s130ms/match/image.jpg" } ], "tags": [], "cue_points": [], "custom_fields": {}, "account_id": "3723496277001", "sources": [ { "ext_x_version": "4", "vmap": "https://ssaiplayback.prod.boltdns.net/playback/once/v1/vmap/hls/v4/clear/3723496277001/7a3316d9-1b06-4d62-bec8-3919b43fffbb/dd5bd69c-e962-4a43-9dbd-94faaaba1785/content.vmap?bc_token=NTllMTMxYjNfMTdkOTY2YThhNjU5MDk5ZTQ3NDBkNmUxOTYyOGRkNzM0ZjBiM2RjMGEwOThjOGFkYjk1MWQxMzFmNGYzMjA5YQ%3D%3D", "type": "application/x-mpegURL", "src": "https://ssaiplayback.prod.boltdns.net/playback/once/v1/hls/v4/clear/3723496277001/7a3316d9-1b06-4d62-bec8-3919b43fffbb/dd5bd69c-e962-4a43-9dbd-94faaaba1785/master.m3u8?bc_token=NTllMTMxYjNfZGM5ZDg0NGM2ZGJjZDcxZTFjOGYyODBlMzM2NmNmMmJkMWNhZDczNWViNzRiMjIwNjg5MjkzZGM0ZmJlMTc1Yw%3D%3D" }, ... ], "created_at": "2017-05-15T17:09:11.171Z" }
- Copia uno de los
vmap
URL y péguelo en la barra de búsqueda del navegador para ver la respuesta de VMAP. -
La respuesta de VMAP contiene un
<bc:Brightcove
etiqueta con uncontenturi
atributo. Esta es la URL que debe usar para cargar su reproductor.Ejemplo de respuesta VMAP
A continuación, se muestra un ejemplo de una respuesta de vmap:
<vmap:VMAP xmlns:bc="bc" xmlns:vmap="https://www.iab.net/vmap-1.0" xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance" version="1.0"> <vmap:Extensions> <bc:Brightcove ttl="3600" contenturi="https://ssaimanifest.prod.boltdns.net/us-east-1/playback/once/v1/hls/v4/clear/1752604059001/d6190656-2095-4ff3-8afe-1a0b60d67ed2/dca41ae8-d8f5-48a6-9853-564764d60b84/6830b2e4-3298-439d-beef-e04abef9f23c/content.m3u8?bc_token=NWZkMTE5NTlfZWQxNDAzNDRkNTAxNDRlMWEwODU3MTI1MzY2YjAyZWQ5YzlmZTkzY2UwMjM5NTM1MmI2NGRjZDNhNjE2ZDhlOA%3D%3D" contentlength="24.0574" payloadlength="50.1835" contenttype="application/x-mpegURL" /> <bc:thumbnailURL type="thumbnail" width="480" height="270" bandwidth="0">https://ssai.playback.us-east-1.prod.deploys.brightcove.com/v1/thumbnail/1752604059001/dca41ae8-d8f5-48a6-9853-564764d60b84/low-res/6830b2e4-3298-439d-beef-e04abef9f23c/thumbnail.vtt?bc_token=NWZkMTE5NTlfMmVmODIzZDJjMGZkMDBjZjY1YWIxNDQ4Y2YyZmUxYTExNzg5YmIxZDI5ZTdkMjgyODBmMDBmYTViMTE2Yzc0MQ%3D%3D</bc:thumbnailURL> </vmap:Extensions> <vmap:AdBreak breakType="linear" breakId="PreRoll_0_0" timeOffset="start"> <vmap:AdSource allowMultipleAds="true" followRedirects="true" id="0"> <vmap:VASTData> <VAST xmlns:xsd="https://www.w3.org/2001/XMLSchema" xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance"> <Ad id="1"> <InLine> <AdSystem>Test Ad Server</AdSystem> <AdTitle>Portals</AdTitle> <Description>Demo ad number 6</Description> <Error></Error> <Creatives> <Creative> <Linear> <CreativeExtensions> <CreativeExtension> <BrightcoveForeignKey>1</BrightcoveForeignKey> </CreativeExtension> </CreativeExtensions> <Duration>00:00:05.9392</Duration> <AdParameters> <xml></xml> </AdParameters> <VideoClicks/> </Linear> </Creative> </Creatives> <Extensions> <Extension> <xml>data</xml> </Extension> </Extensions> </InLine> </Ad> </VAST> </vmap:VASTData> </vmap:AdSource> </vmap:AdBreak> <vmap:AdBreak breakType="linear" breakId="MidRoll_5_0" timeOffset="00:00:04.8381"> <vmap:AdSource allowMultipleAds="true" followRedirects="true" id="1"> <vmap:VASTData> <VAST xmlns:xsd="https://www.w3.org/2001/XMLSchema" xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance"> <Ad id="2"> <InLine> <AdSystem>Test Ad Server</AdSystem> <AdTitle>Marketing</AdTitle> <Description>Demo ad number 4</Description> <Error></Error> <Creatives> <Creative> <Linear skipoffset="00:00:05"> <CreativeExtensions> <CreativeExtension> <BrightcoveForeignKey>2</BrightcoveForeignKey> </CreativeExtension> </CreativeExtensions> <Duration>00:00:12.1788</Duration> <AdParameters> <xml></xml> </AdParameters> <VideoClicks/> </Linear> </Creative> </Creatives> <Extensions> <Extension> <xml>data</xml> </Extension> </Extensions> </InLine> </Ad> </VAST> </vmap:VASTData> </vmap:AdSource> </vmap:AdBreak> <vmap:AdBreak breakType="linear" breakId="PostRoll_24_0" timeOffset="end"> <vmap:AdSource allowMultipleAds="true" followRedirects="true" id="2"> <vmap:VASTData> <VAST xmlns:xsd="https://www.w3.org/2001/XMLSchema" xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance"> <Ad id="3"> <InLine> <AdSystem>Test Ad Server</AdSystem> <AdTitle>Brand</AdTitle> <Description>Demo ad number 1</Description> <Error></Error> <Creatives> <Creative> <Linear> <CreativeExtensions> <CreativeExtension> <BrightcoveForeignKey>3</BrightcoveForeignKey> </CreativeExtension> </CreativeExtensions> <Duration>00:00:08.0080</Duration> <AdParameters> <xml></xml> </AdParameters> <VideoClicks/> </Linear> </Creative> </Creatives> <Extensions> <Extension> <xml>data</xml> </Extension> </Extensions> </InLine> </Ad> </VAST> </vmap:VASTData> </vmap:AdSource> </vmap:AdBreak> </vmap:VMAP>
Para más detalles, consulte el Implementación de SSAI con SDK y reproductores que no son de Brightcove documento.
Configura tu reproductor
Requerir ad_config_id
Con la API de políticas, puede crear una clave de política que requiera que incluya la ad_config_id
Parámetro de URL al realizar solicitudes a la API de reproducción. Para obtener detalles sobre cómo configurar esta función, consulte la Referencia de la API de políticas documento.
Cuando la clave de política está configurada para requerir un ad_config_id
y no lo agrega a una solicitud de API de reproducción, recibirá el siguiente error:
[
{
"error_subcode": "AD_CONFIG",
"error_code": "ACCESS_DENIED",
"message": "Missing required ad_config_id parameter"
}
]
Solicitudes de listas de reproducción
Un objeto de video de la lista de reproducción se puede recuperar utilizando la identificación de la lista de reproducción o su identificación de referencia.
Las listas de reproducción pueden contener hasta 1000 videos, pero de manera predeterminada, solo se devuelven los primeros 20. Usando los parámetros que se describen a continuación, puede devolver hasta 1000 videos a la vez, o usar una cantidad más pequeña limit
y usa el offset
parámetro para recuperar el grupo de videos que desea, o envíe varias solicitudes para devolverlos todos.
Parámetros
Los siguientes parámetros de URL se pueden utilizar para solicitudes de listas de reproducción
Parámetro | Descripción |
---|---|
límite | El número de videos a devolver (predeterminado=20; máximo=1000) |
compensar | número de videos para omitir (desde el inicio de la lista de reproducción; predeterminado = 0) |
Por ejemplo, estos parámetros agregados a su solicitud (?limit=100&offset=200) devolverían los videos 201-300 en la lista de reproducción (suponiendo que haya tantos).
Obtener lista de reproducción por id
Punto final
https://edge.api.brightcove.com/playback/v1/accounts/{account_id}/playlists/{playlist_id}
Ejemplo
https://edge.api.brightcove.com/playback/v1/accounts/57838016001/playlists/38467382999
Respuesta de muestra
{
"account_id": "107767373999",
"created_at": "2010-07-12T22:43:30.290Z",
"description": null,
"id": "111592530001",
"name": "Play One",
"reference_id": null,
"type": "EXPLICIT",
"updated_at": "2010-07-12T22:51:25.055Z",
"videos": [
{
"description": "Avatar_MakingAScene_Featurette",
"poster_sources": [
{
"src": "https://brightcove04.o.brightcove.com/107767373999/107767373999_111728861001_vs-111727994001.jpg?pubId=107767373999&videoId=38467382999"
}
],
"tags": [
"copied"
],
"cue_points": [
{
"id": "111637107001",
"name": "Pre-roll",
"type": "AD",
"time": 0,
"metadata": null,
"force_stop": false
}
],
"custom_fields": {
"moretext": "this is the first video uploaded",
"mylist": "abc"
},
"account_id": "107767373999",
"sources": [
{
"avg_bitrate": 379000,
"width": 320,
"duration": 595560,
"size": 28196307,
"stream_name": "mp4:107767373999/107767373999_111728840001_Avatar-MakingAScene-Featurette.mp4?__nn__=1497926354001&slist=107767373999/&auth=daEciavcicRbhbtdSaBdBdVbXd0aUdTcMaX-bvRrSa-hca-slyCzrux_zJAq_HFCB_EvE&aifp=bcosuds",
"codec": "H264",
"asset_id": "111728840001",
"container": "MP4",
"height": 180,
"app_name": "rtmp://cp150446.edgefcs.net/ondemand"
},
{
"avg_bitrate": 379000,
"width": 320,
"src": "https://uds.ak.o.brightcove.com/107767373999/107767373999_111728840001_Avatar-MakingAScene-Featurette.mp4?pubId=107767373999&videoId=38467382999",
"size": 28196307,
"height": 180,
"duration": 595560,
"container": "MP4",
"codec": "H264",
"asset_id": "111728840001"
},
{
"avg_bitrate": 267000,
"width": 320,
"duration": 595560,
"size": 19894997,
"stream_name": "mp4:107767373999/107767373999_111728852001_Avatar-MakingAScene-Featurette.mp4?__nn__=1497926354001&slist=107767373999/&auth=daEciavcicRbhbtdSaBdBdVbXd0aUdTcMaX-bvRrSa-hca-slyCzrux_zJAq_HFCB_EvE&aifp=bcosuds",
"codec": "H264",
"asset_id": "111728852001",
"container": "MP4",
"height": 180,
"app_name": "rtmp://cp150446.edgefcs.net/ondemand"
},
{
"avg_bitrate": 267000,
"width": 320,
"src": "https://uds.ak.o.brightcove.com/107767373999/107767373999_111728852001_Avatar-MakingAScene-Featurette.mp4?pubId=107767373999&videoId=38467382999",
"size": 19894997,
"height": 180,
"duration": 595560,
"container": "MP4",
"codec": "H264",
"asset_id": "111728852001"
},
{
"avg_bitrate": 549000,
"width": 480,
"duration": 595567,
"size": 40889436,
"stream_name": "mp4:107767373999/107767373999_111728860001_Avatar-MakingAScene-Featurette.mp4?__nn__=1497926354001&slist=107767373999/&auth=daEciavcicRbhbtdSaBdBdVbXd0aUdTcMaX-bvRrSa-hca-slyCzrux_zJAq_HFCB_EvE&aifp=bcosuds",
"codec": "H264",
"asset_id": "111728860001",
"container": "MP4",
"height": 268,
"app_name": "rtmp://cp150446.edgefcs.net/ondemand"
},
{
"avg_bitrate": 549000,
"width": 480,
"src": "https://uds.ak.o.brightcove.com/107767373999/107767373999_111728860001_Avatar-MakingAScene-Featurette.mp4?pubId=107767373999&videoId=38467382999",
"size": 40889436,
"height": 268,
"duration": 595567,
"container": "MP4",
"codec": "H264",
"asset_id": "111728860001"
},
{
"avg_bitrate": 835000,
"width": 640,
"duration": 595567,
"size": 62142992,
"stream_name": "mp4:107767373999/107767373999_111728865001_Avatar-MakingAScene-Featurette.mp4?__nn__=1497926354001&slist=107767373999/&auth=daEciavcicRbhbtdSaBdBdVbXd0aUdTcMaX-bvRrSa-hca-slyCzrux_zJAq_HFCB_EvE&aifp=bcosuds",
"codec": "H264",
"asset_id": "111728865001",
"container": "MP4",
"height": 360,
"app_name": "rtmp://cp150446.edgefcs.net/ondemand"
},
{
"avg_bitrate": 835000,
"width": 640,
"src": "https://uds.ak.o.brightcove.com/107767373999/107767373999_111728865001_Avatar-MakingAScene-Featurette.mp4?pubId=107767373999&videoId=38467382999",
"size": 62142992,
"height": 360,
"duration": 595567,
"container": "MP4",
"codec": "H264",
"asset_id": "111728865001"
},
{
"avg_bitrate": 1744000,
"width": 640,
"duration": 595567,
"size": 129836869,
"stream_name": "mp4:107767373999/107767373999_111735357001_Avatar-MakingAScene-Featurette.mp4?__nn__=1497926354001&slist=107767373999/&auth=daEciavcicRbhbtdSaBdBdVbXd0aUdTcMaX-bvRrSa-hca-slyCzrux_zJAq_HFCB_EvE&aifp=bcosuds",
"codec": "H264",
"asset_id": "111735357001",
"container": "MP4",
"height": 360,
"app_name": "rtmp://cp150446.edgefcs.net/ondemand"
},
{
"avg_bitrate": 1744000,
"width": 640,
"src": "https://uds.ak.o.brightcove.com/107767373999/107767373999_111735357001_Avatar-MakingAScene-Featurette.mp4?pubId=107767373999&videoId=38467382999",
"size": 129836869,
"height": 360,
"duration": 595567,
"container": "MP4",
"codec": "H264",
"asset_id": "111735357001"
},
{
"avg_bitrate": 1249000,
"width": 640,
"duration": 595567,
"size": 92994065,
"stream_name": "mp4:107767373999/107767373999_111735369001_Avatar-MakingAScene-Featurette.mp4?__nn__=1497926354001&slist=107767373999/&auth=daEciavcicRbhbtdSaBdBdVbXd0aUdTcMaX-bvRrSa-hca-slyCzrux_zJAq_HFCB_EvE&aifp=bcosuds",
"codec": "H264",
"asset_id": "111735369001",
"container": "MP4",
"height": 360,
"app_name": "rtmp://cp150446.edgefcs.net/ondemand"
},
{
"avg_bitrate": 1249000,
"width": 640,
"src": "https://uds.ak.o.brightcove.com/107767373999/107767373999_111735369001_Avatar-MakingAScene-Featurette.mp4?pubId=107767373999&videoId=38467382999",
"size": 92994065,
"height": 360,
"duration": 595567,
"container": "MP4",
"codec": "H264",
"asset_id": "111735369001"
}
],
"name": "Avatar_MakingAScene_Featurette",
"reference_id": "AvatarMakingShort",
"long_description": null,
"duration": 595560,
"published_at": "2010-07-12T22:37:34.760Z",
"text_tracks": [],
"updated_at": "2010-07-12T22:54:29.666Z",
"thumbnail": "https://brightcove04.o.brightcove.com/107767373999/107767373999_111728862001_th-111727994001.jpg?pubId=107767373999&videoId=38467382999",
"poster": "https://brightcove04.o.brightcove.com/107767373999/107767373999_111728861001_vs-111727994001.jpg?pubId=107767373999&videoId=38467382999",
"link": {
"text": "Full Dvd at Amazon",
"url": "https://www.amazon.com/Avatar-Sam-Worthington/dp/B002VPE1AW"
},
"id": "38467382999",
"ad_keys": null,
"thumbnail_sources": [
{
"src": "https://brightcove04.o.brightcove.com/107767373999/107767373999_111728862001_th-111727994001.jpg?pubId=107767373999&videoId=38467382999"
}
],
"created_at": "2010-07-12T22:37:34.760Z"
}
],
}
Obtener lista de reproducción por ID de referencia
Punto final
https://edge.api.brightcove.com/playback/v1/accounts/{account_id}/playlists/ref:{reference_id}
Ejemplo
https://edge.api.brightcove.com/playback/v1/accounts/57838016001/playlists/ref:nature_2010-07-12
Respuesta de muestra
{
"account_id": "107767373999",
"created_at": "2010-07-12T22:43:30.290Z",
"description": null,
"id": "111592530001",
"name": "Play One",
"reference_id": nature_2010-07-12,
"type": "EXPLICIT",
"updated_at": "2010-07-12T22:51:25.055Z",
"videos": [
{
"description": "Avatar_MakingAScene_Featurette",
"poster_sources": [
{
"src": "https://brightcove04.o.brightcove.com/107767373999/107767373999_111728861001_vs-111727994001.jpg?pubId=107767373999&videoId=38467382999"
}
],
"tags": [
"copied"
],
"cue_points": [
{
"id": "111637107001",
"name": "Pre-roll",
"type": "AD",
"time": 0,
"metadata": null,
"force_stop": false
}
],
"custom_fields": {
"moretext": "this is the first video uploaded",
"mylist": "abc"
},
"account_id": "107767373999",
"sources": [
{
"avg_bitrate": 379000,
"width": 320,
"duration": 595560,
"size": 28196307,
"stream_name": "mp4:107767373999/107767373999_111728840001_Avatar-MakingAScene-Featurette.mp4?__nn__=1497926354001&slist=107767373999/&auth=daEciavcicRbhbtdSaBdBdVbXd0aUdTcMaX-bvRrSa-hca-slyCzrux_zJAq_HFCB_EvE&aifp=bcosuds",
"codec": "H264",
"asset_id": "111728840001",
"container": "MP4",
"height": 180,
"app_name": "rtmp://cp150446.edgefcs.net/ondemand"
},
{
"avg_bitrate": 379000,
"width": 320,
"src": "https://uds.ak.o.brightcove.com/107767373999/107767373999_111728840001_Avatar-MakingAScene-Featurette.mp4?pubId=107767373999&videoId=38467382999",
"size": 28196307,
"height": 180,
"duration": 595560,
"container": "MP4",
"codec": "H264",
"asset_id": "111728840001"
},
{
"avg_bitrate": 267000,
"width": 320,
"duration": 595560,
"size": 19894997,
"stream_name": "mp4:107767373999/107767373999_111728852001_Avatar-MakingAScene-Featurette.mp4?__nn__=1497926354001&slist=107767373999/&auth=daEciavcicRbhbtdSaBdBdVbXd0aUdTcMaX-bvRrSa-hca-slyCzrux_zJAq_HFCB_EvE&aifp=bcosuds",
"codec": "H264",
"asset_id": "111728852001",
"container": "MP4",
"height": 180,
"app_name": "rtmp://cp150446.edgefcs.net/ondemand"
},
{
"avg_bitrate": 267000,
"width": 320,
"src": "https://uds.ak.o.brightcove.com/107767373999/107767373999_111728852001_Avatar-MakingAScene-Featurette.mp4?pubId=107767373999&videoId=38467382999",
"size": 19894997,
"height": 180,
"duration": 595560,
"container": "MP4",
"codec": "H264",
"asset_id": "111728852001"
},
{
"avg_bitrate": 549000,
"width": 480,
"duration": 595567,
"size": 40889436,
"stream_name": "mp4:107767373999/107767373999_111728860001_Avatar-MakingAScene-Featurette.mp4?__nn__=1497926354001&slist=107767373999/&auth=daEciavcicRbhbtdSaBdBdVbXd0aUdTcMaX-bvRrSa-hca-slyCzrux_zJAq_HFCB_EvE&aifp=bcosuds",
"codec": "H264",
"asset_id": "111728860001",
"container": "MP4",
"height": 268,
"app_name": "rtmp://cp150446.edgefcs.net/ondemand"
},
{
"avg_bitrate": 549000,
"width": 480,
"src": "https://uds.ak.o.brightcove.com/107767373999/107767373999_111728860001_Avatar-MakingAScene-Featurette.mp4?pubId=107767373999&videoId=38467382999",
"size": 40889436,
"height": 268,
"duration": 595567,
"container": "MP4",
"codec": "H264",
"asset_id": "111728860001"
},
{
"avg_bitrate": 835000,
"width": 640,
"duration": 595567,
"size": 62142992,
"stream_name": "mp4:107767373999/107767373999_111728865001_Avatar-MakingAScene-Featurette.mp4?__nn__=1497926354001&slist=107767373999/&auth=daEciavcicRbhbtdSaBdBdVbXd0aUdTcMaX-bvRrSa-hca-slyCzrux_zJAq_HFCB_EvE&aifp=bcosuds",
"codec": "H264",
"asset_id": "111728865001",
"container": "MP4",
"height": 360,
"app_name": "rtmp://cp150446.edgefcs.net/ondemand"
},
{
"avg_bitrate": 835000,
"width": 640,
"src": "https://uds.ak.o.brightcove.com/107767373999/107767373999_111728865001_Avatar-MakingAScene-Featurette.mp4?pubId=107767373999&videoId=38467382999",
"size": 62142992,
"height": 360,
"duration": 595567,
"container": "MP4",
"codec": "H264",
"asset_id": "111728865001"
},
{
"avg_bitrate": 1744000,
"width": 640,
"duration": 595567,
"size": 129836869,
"stream_name": "mp4:107767373999/107767373999_111735357001_Avatar-MakingAScene-Featurette.mp4?__nn__=1497926354001&slist=107767373999/&auth=daEciavcicRbhbtdSaBdBdVbXd0aUdTcMaX-bvRrSa-hca-slyCzrux_zJAq_HFCB_EvE&aifp=bcosuds",
"codec": "H264",
"asset_id": "111735357001",
"container": "MP4",
"height": 360,
"app_name": "rtmp://cp150446.edgefcs.net/ondemand"
},
{
"avg_bitrate": 1744000,
"width": 640,
"src": "https://uds.ak.o.brightcove.com/107767373999/107767373999_111735357001_Avatar-MakingAScene-Featurette.mp4?pubId=107767373999&videoId=38467382999",
"size": 129836869,
"height": 360,
"duration": 595567,
"container": "MP4",
"codec": "H264",
"asset_id": "111735357001"
},
{
"avg_bitrate": 1249000,
"width": 640,
"duration": 595567,
"size": 92994065,
"stream_name": "mp4:107767373999/107767373999_111735369001_Avatar-MakingAScene-Featurette.mp4?__nn__=1497926354001&slist=107767373999/&auth=daEciavcicRbhbtdSaBdBdVbXd0aUdTcMaX-bvRrSa-hca-slyCzrux_zJAq_HFCB_EvE&aifp=bcosuds",
"codec": "H264",
"asset_id": "111735369001",
"container": "MP4",
"height": 360,
"app_name": "rtmp://cp150446.edgefcs.net/ondemand"
},
{
"avg_bitrate": 1249000,
"width": 640,
"src": "https://uds.ak.o.brightcove.com/107767373999/107767373999_111735369001_Avatar-MakingAScene-Featurette.mp4?pubId=107767373999&videoId=38467382999",
"size": 92994065,
"height": 360,
"duration": 595567,
"container": "MP4",
"codec": "H264",
"asset_id": "111735369001"
}
],
"name": "Avatar_MakingAScene_Featurette",
"reference_id": "AvatarMakingShort",
"long_description": null,
"duration": 595560,
"published_at": "2010-07-12T22:37:34.760Z",
"text_tracks": [],
"updated_at": "2010-07-12T22:54:29.666Z",
"thumbnail": "https://brightcove04.o.brightcove.com/107767373999/107767373999_111728862001_th-111727994001.jpg?pubId=107767373999&videoId=38467382999",
"poster": "https://brightcove04.o.brightcove.com/107767373999/107767373999_111728861001_vs-111727994001.jpg?pubId=107767373999&videoId=38467382999",
"link": {
"text": "Full Dvd at Amazon",
"url": "https://www.amazon.com/Avatar-Sam-Worthington/dp/B002VPE1AW"
},
"id": "38467382999",
"ad_keys": null,
"thumbnail_sources": [
{
"src": "https://brightcove04.o.brightcove.com/107767373999/107767373999_111728862001_th-111727994001.jpg?pubId=107767373999&videoId=38467382999"
}
],
"created_at": "2010-07-12T22:37:34.760Z"
}
],
}
Subtítulos
Los subtítulos ocultos brindan información adicional sobre su video para las personas que desean acceder a él. Los subtítulos son necesarios para que las personas sordas y con problemas de audición accedan a la parte de audio de sus videos. Si es nuevo en los subtítulos, consulte la Descripción general: Agregar subtítulos a un video documento.
WebVTT externo
Los subtítulos externos de WebVTT son archivos de texto separados del video. Puede asociar archivos de subtítulos con un video de la siguiente manera:
Respuesta de muestra
A continuación se muestra una respuesta de muestra de la API de reproducción donde se ha agregado un archivo de subtítulos WebVTT a un video usando el módulo de Medios. Observe que la pista de texto src
Las propiedades apuntan a un archivo de subtítulos externo.
{
"text_tracks": [
{
"mime_type": null,
"account_id": "20318290001",
"default": true,
"sources": [
{
"src": "https://static.3playmedia.com/p/files/2240988/threeplay_transcripts/6418302.vtt?project_id=10127&format_id=51&refresh=1515241856"
}
],
"src": "https://static.3playmedia.com/p/files/2240988/threeplay_transcripts/6418302.vtt?project_id=10127&format_id=51&refresh=1515241856",
"asset_id": null,
"label": "English",
"id": "13d66def-d004-4e75-b160-4ac693eff7d7",
"kind": "captions",
"srclang": "en"
}
],
}
WebVTT en manifiesto
Los subtítulos de WebVTT en manifiesto se ingieren con sus videos. Esto se puede hacer la primera vez que ingiere su video o después de que se haya ingerido. Puede crear subtítulos en el manifiesto de la siguiente manera:
Respuesta de muestra
A continuación se muestra una respuesta de muestra de la API de reproducción donde se ha agregado un archivo de subtítulos WebVTT a un video usando el Dynamic API de ingesta. Observe que la pista de texto src
Las propiedades apuntan a archivos internos de Brightcove.
{
"text_tracks": [
{
"mime_type": "text/webvtt",
"account_id": "1752604059001",
"default": false,
"sources": [
{
"src": "https://bcboltbde696aa-a.akamaihd.net/media/v1/text/vtt/clear/1752604059001/3585c49a-5a95-4783-8625-e3af727d094a/92cb36a7-c836-4506-a87f-f649316c0cdf/text.vtt?akamai_token=exp=1518032480~acl=/media/v1/text/vtt/clear/1752604059001/3585c49a-5a95-4783-8625-e3af727d094a/92cb36a7-c836-4506-a87f-f649316c0cdf/text.vtt*~hmac=5aa9f206a8e970efb4cab95278e2e9b16a29b3ccf82951a91245352d9149b173"
},
{
"src": "https://bcboltbde696aa-a.akamaihd.net/media/v1/text/vtt/clear/1752604059001/3585c49a-5a95-4783-8625-e3af727d094a/92cb36a7-c836-4506-a87f-f649316c0cdf/text.vtt?akamai_token=exp=1518032480~acl=/media/v1/text/vtt/clear/1752604059001/3585c49a-5a95-4783-8625-e3af727d094a/92cb36a7-c836-4506-a87f-f649316c0cdf/text.vtt*~hmac=5aa9f206a8e970efb4cab95278e2e9b16a29b3ccf82951a91245352d9149b173"
}
],
"src": "https://bcboltbde696aa-a.akamaihd.net/media/v1/text/vtt/clear/1752604059001/3585c49a-5a95-4783-8625-e3af727d094a/92cb36a7-c836-4506-a87f-f649316c0cdf/text.vtt?akamai_token=exp=1518032480~acl=/media/v1/text/vtt/clear/1752604059001/3585c49a-5a95-4783-8625-e3af727d094a/92cb36a7-c836-4506-a87f-f649316c0cdf/text.vtt*~hmac=5aa9f206a8e970efb4cab95278e2e9b16a29b3ccf82951a91245352d9149b173",
"asset_id": null,
"label": "EN",
"id": "92cb36a7-c836-4506-a87f-f649316c0cdf",
"kind": "captions",
"in_band_metadata_track_dispatch_type": "",
"srclang": "en"
}
],
}
Manifiesto
El manifiesto de los archivos de video HLS o DASH también contiene la información necesaria para incluir los subtítulos de WebVTT.
HLS
#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="audio-0",NAME="en (Main)",DEFAULT=YES,AUTOSELECT=YES,LANGUAGE="en",URI="https://manifest.prod.boltdns.net/manifest/v1/hls/v4/clear/1752604059001/3585c49a-5a95-4783-8625-e3af727d094a/8b12c808-c5ea-47f3-abfa-c23b023db297/10s/rendition.m3u8?fastly_token=NWE3YjU3ZThfNzAwNTczOWM4MWQ4Mzk2NjFkYjVjYmFhYjQwNzY2MWUzM2MyNDM5ZDA5ZGExYTFkMzRmYzA0MDdhOTlmZWJhMw%3D%3D"
#EXT-X-MEDIA:TYPE=SUBTITLES,GROUP-ID="subtitles-0",NAME="EN",DEFAULT=YES,AUTOSELECT=YES,LANGUAGE="en",URI="https://manifest.prod.boltdns.net/manifest/v1/hls/v4/clear/1752604059001/3585c49a-5a95-4783-8625-e3af727d094a/92cb36a7-c836-4506-a87f-f649316c0cdf/rendition.m3u8?fastly_token=NWE3YjU3ZThfNDYzOThkZGJiZTU1NTlhOTdkYzA5OTA3M2UzZGRlYTgzMmRkZmUxMGIxYTJkY2Y5ZDQ1ODFiNTEyMmNiZDVhMw%3D%3D"
#EXT-X-STREAM-INF:PROGRAM-ID=0,BANDWIDTH=519200,CODECS="mp4a.40.2,avc1.420015",RESOLUTION=480x270,AUDIO="audio-0",CLOSED-CAPTIONS=NONE,SUBTITLES="subtitles-0"
https://manifest.prod.boltdns.net/manifest/v1/hls/v4/clear/1752604059001/3585c49a-5a95-4783-8625-e3af727d094a/5f7850d9-9a65-4eee-8810-86a1e18e05fb/10s/rendition.m3u8?fastly_token=NWE3YjU3ZThfY2Q5YmE2ODc2OWFiNTgyZjUxMjc1MzRhNmQxMzA0ZmJmY2RlMGU4ZjBiNDExZGRmNjc3YjQ0OGQ5N2RiOTVmMA%3D%3D
PIZCA
<AdaptationSet mimeType="text/vtt" lang="en">
<Representation bandwidth="256" id="92cb36a7-c836-4506-a87f-f649316c0cdf">
<BaseURL>https://bcboltbde696aa-a.akamaihd.net/media/v1/dash/live/clear/1752604059001/3585c49a-5a95-4783-8625-e3af727d094a/92cb36a7-c836-4506-a87f-f649316c0cdf.vtt?akamai_token=exp=1518032494~acl=/media/v1/dash/live/clear/1752604059001/3585c49a-5a95-4783-8625-e3af727d094a*~hmac=3e2edc412c273f1255f2c18bbbcee7afc6a2edb74573f9295b0f05feda69f0e2</BaseURL>
</Representation>
</AdaptationSet>