Introducción
Brightcove's Dynamic Ingest API se basa en la funcionalidad en la que los archivos fuente de video se descargan desde la ubicación de almacenamiento del cliente y se crean representaciones específicas de los archivos fuente. (También hay una opción para sube tus archivos fuente a una ubicación temporal donde Dynamic Ingest pueda acceder a ellos). La plataforma está centrada en la nube, distribuida globalmente y basada en prácticas modernas para ofrecer la mejor consistencia y velocidad de su clase.
También vea el Referencia de API.
Descripción general del flujo de trabajo
Se utilizan varios sistemas / tecnologías en la transcodificación y almacenamiento generales de medios. Son:
- API de CMS: Crea un objeto de video para usar en la API de DI
- Zencoder: Transcodifica el video creando múltiples versiones.
- Amazon S3: Mueve el maestro y las representaciones al almacenamiento, según la configuración del perfil
- Catalogar: Almacena la información necesaria asociada con el video.
Después de la transcodificación inicial, tiene las siguientes acciones que puede realizar en los medios:
- Retranscodificar: Crear nuevas representaciones cuando el maestro está presente (error si el maestro no está presente)
- Reemplazar: Apunta a un nuevo maestro o reemplaza un maestro existente
- Ingesta recursos multimedia adicionales:
- imágenes en miniatura y póster
- leyendas, subtítulos o definiciones de capítulos
- Pistas de audio adicionales (si su cuenta está habilitada para múltiples pistas de audio)
Operaciones
Cuando utilice la API de DI, realizará diferentes operaciones, como leer un perfil de ingesta y escribir información de ingesta en su cuenta. La siguiente es una lista completa de las operaciones necesarias para las tareas de DI:
video-cloud/video/create
video-cloud/video/read
video-cloud/video/update
video-cloud/ingest-profiles/profile/read
video-cloud/ingest-profiles/account/read
video-cloud/ingest-profiles/account/write
video-cloud/ingest-profiles/profile/write
video-cloud/upload-urls/read
Para obtener las credenciales del cliente, use Studio herramientas de administración o vea uno de los siguientes documentos:
Mejores prácticas
Ubicaciones de origen válidas
Ingestión basada en pull
Dynamic Ingest puede extraer archivos de video de origen de: HTTP / HTTPS, S3 y FTP, con o sin autenticación
Ejemplos:
- https://example.com/path/to/input.avi
- https://dl.dropboxusercontent.com/u/3641457/Bird_Titmouse.mp4
- s3: //my-bucket/video.mp4
- ftp: //server/file.mp4
Notas sobre S3
Si sus videos están en un bucket de S3 protegido, consulte Uso de Dynamic Ingest con S3 para obtener detalles sobre cómo configurar permisos para Dynamic Ingest para acceder a sus archivos.
Notas sobre FTP
Si sus videos están en un servidor FTP protegido, use el método estándar para pasar el nombre de usuario y la contraseña en la URL, como este:
ftp://username:password@server/file.mp4
Carga del archivo de origen
También puede cargar sus archivos en una ubicación temporal segura desde la que Dynamic Ingest puede extraerlos. Para obtener más detalles, consulte Carga del archivo de origen.
Caracteres especiales
Si está proporcionando una URL para que Video Cloud obtenga sus videos y está enviando credenciales como parte de la URL , necesitas codificación porcentual ciertos caracteres especiales reservados:
Personaje | Codificado en porcentaje |
---|---|
] | %5B |
[ | %5D |
? | %3F |
/ | %2F |
< | %3C |
~ | %7E |
# | %23 |
' | %6D |
! | %21 |
@ | %40 |
$ | %24 |
% | %25 |
^ | %5E |
& | %26 |
* | %2A |
( | %28 |
) | %29 |
+ | %2B |
= | %3D |
} | %7D |
| | %7C |
: | %3A |
" | %22 |
; | %3B |
' | %27 |
, | %2C |
> | %3E |
{ | %7B |
espacio | %20 |
Por ejemplo:
/* unencoded */
ftp://user@example.com:pass!word@example.com/path/to/input.mp3
/* encoded */
ftp://user%40example.com:pass%21word@example.com/path/to/input.mp3
Codificación de URL doble
Cada vez que una URL se decodifica una vez antes de procesarla, debe codificar la URL de entrada dos veces antes de enviar el trabajo de ingesta.
Por ejemplo:
A master.url de
https://some.file.storage.com/path/to/video.mp4?Signature=some%2Bcool%2B%25sig
se convertirá a lo siguiente antes de su procesamiento:
https://some.file.storage.com/path/to/video.mp4?Signature=some+cool+%sig
En su lugar, debería codificarlo doble de esta manera:
https://some.file.storage.com/path/to/video.mp4?Signature=some%252Bcool%252B%2525sig
Para codificar una URL, consulte la Codificador de cadena documento.
Nombres de archivos de origen
Todas las URL de entrada deben codificarse correctamente de acuerdo con RFC 3986 cuando se envía a Brightcove. Esto significa que cualquier caracteres reservados que se encuentran en la ruta de la URL están codificados en porcentaje (los espacios se codifican para %20
), y los caracteres reservados que se encuentran en la consulta de la URL están codificados en porcentaje (los espacios se codifican para +
o %20
, y +
siendo codificado para %2B
).
A pre-firmado S3 (v2 contiene Firma , Caduca y ID de clave de acceso de AWS , y v4 contiene Algoritmo X-Amz , Credencial X-Amz , X-Amz-Fecha , X-Amz-Caduca , X-Amz-SignedHeaders , y Firma X-Amz ) o SGC (contiene Firma , Caduca , y ID de acceso de Google ) la URL ya debería estar codificada correctamente y se puede usar tal cual.
Activos de muestra
Brightcove Learning Services proporciona algunos activos de muestra que puede utilizar para experimentar y comenzar con Dynamic Ingest. Estos activos incluyen videos cortos, imágenes y subtítulos WebVTT en varios idiomas:
Perfil de ingesta
Se requieren perfiles de ingesta especiales para crear videos de Dynamic Delivery. Encontrarás un par de perfiles de ingesta estándar en su cuenta cuando Dynamic Delivery está habilitado, y se recomiendan.
También puede agregar un perfil de Dynamic Delivery personalizado a sus perfiles de ingesta en la sección Admin de Studio; consulte Creación de perfiles de ingesta para una entrega dinámica para detalles.
Ejemplo de perfil de entrega dinámica
A continuación, se muestra un perfil de entrega dinámica de muestra que puede usar para comenzar. Todo lo que necesitas hacer es reemplazar YOUR_ACCOUNT_ID
con su ID de cuenta, y luego puede copiar y pegar el perfil en el editor de perfiles de ingestión.
{
"name": "DynamicDeliveryIngestProfile",
"description": "Dynamic Delivery ingest profile.",
"account_id": "YOUR_ACCOUNT_ID",
"digital_master": {
"rendition": "passthrough",
"distribute": false
},
"dynamic_origin": {
"renditions": [
"default/audio64",
"default/audio96",
"default/audio128",
"default/video450",
"default/video700",
"default/video900",
"default/video1200",
"default/video1700",
"default/video2000"
],
"images": [
{
"label": "poster",
"height": 720,
"width": 1280
},
{
"label": "thumbnail",
"height": 90,
"width": 160
}
]
}
}
Para obtener detalles sobre las representaciones y los perfiles de entrega dinámica estándar, consulte Perfiles de ingesta estándar para entrega dinámica
Ingestión de videos
Hay dos solicitudes de API necesarias para la ingesta de videos:
- Llama a CMS API para crear un objeto de video en el sistema Video Cloud y obtener su identificación
- Llama a Dynamic Ingest API para proporcionar la URL del archivo de origen del video y especificar otros archivos y configuraciones para la ingesta según sea necesario
Un conjunto de muestra de solicitudes básicas tendría el siguiente aspecto:
Solicitud de API de CMS
- Método HTTP
- PUBLICACIÓN
- Solicitar URL
- https://cms.api.brightcove.com/v1/accounts/{account_id}/videos
- Cuerpo de la solicitud
-
{ "name": "My First Dynamic Delivery Video" }
Los datos de respuesta incluirán el video. id
, que se utiliza en la siguiente solicitud.
Solicitud de API de ingesta
- Método HTTP
- PUBLICACIÓN
- Solicitar URL
- https://ingest.api.brightcove.com/v1/accounts/{account_id}/videos/{video_id}/ingest-requests
- Cuerpo de la solicitud
-
{ "master": { "url": "https://host/master.mp4" }, "profile": "DynamicDeliverIngestProfile", "callbacks": [ "https://mydomain.com/di-callbacks.php" ] }
Notas
- Si no incluye el
profile
campo, se utilizará el perfil predeterminado de esa cuenta. Recomendamos usar la cuenta predeterminada, a menos que necesite usar diferentes perfiles para diferentes tipos de videos. Asegúrese de establecer la cuenta predeterminada en el perfil que (con mayor frecuencia) desea utilizar. - La
callbacks
El campo es opcional, pero le recomendamos encarecidamente que lo utilice como la mejor forma de realizar un seguimiento del progreso de los trabajos de ingesta. Ver debajo para obtener más información sobre las notificaciones.
Visualización de copias
Puede ver las versiones de su video yendo a la Módulo de medios en Studio.
Para ver las propiedades completas de las representaciones, puede utilizar la Solicitud de API de CMS detallada a continuación.
Para recuperar las URL para su reproducción, puede utilizar el Solicitud de API de reproducción que se detalla a continuación.
Reemplazar un video
Para reemplazar un video con una nueva versión o un nuevo conjunto de representaciones, el Dynamic Ingest API la llamada es exactamente la misma que sería para ingiriendo nuevos videos - la única diferencia es que no es necesario realizar una llamada previa al CMS API para crear el objeto de video en el sistema Video Cloud y obtener una identificación para él. Si el archivo de video de origen en la URL especificada es el mismo que se ingirió originalmente, simplemente obtendrá un nuevo conjunto de representaciones. Si el archivo de origen es nuevo, reemplazará el video existente. Todos los videos se seguirán reproduciendo con las interpretaciones existentes hasta que se complete la retranscodificación.
Ver el muestra de trabajo aquí.
Retranscodificar un video
Si eliges archivar un maestro cuando ingeriste el video a través del Dynamic Ingest API o el módulo de carga de Studio, entonces también puede retranscodificar el video desde el maestro. Nuevamente, la URL para la solicitud de ingesta será la misma, pero el cuerpo de la solicitud tendrá lo siguiente:
// request
POST /v1/accounts/{account_id}/videos/{video_id}/ingest-requests
// request body
{
"master": { "use_archived_master": true },
"profile": "multi-platform-extended-static"
}
Ingesta de imágenes
En lugar de capturar imágenes en miniatura y póster durante la transcodificación, puede incluir sus propias imágenes con la solicitud de ingesta o agregarlas en una solicitud separada más adelante.
Cuerpo de solicitud de muestra
{
"profile": "multi-platform-extended-static",
"poster": {
"url": "https://bcls@solutions.brightcove.com/bcls/assets/images/great-blue-heron-poster.png",
"width": 1280,
"height": 720
},
"thumbnail": {
"url": "https://bcls@solutions.brightcove.com/bcls/assets/images/great-blue-heron-thumbnail.png",
"width": 160,
"height": 90
},
"callbacks": [
"https://solutions.brightcove.com/bcls/di-api/di-callbacks.php"
]
}
Notificaciones de ingestión de elementos de imagen
A continuación, se muestran ejemplos de las notificaciones que recibe específicamente para la ingesta de imágenes.
{
"entity": "thumbnail",
"entityType": "ASSET",
"version": "1",
"action": "CREATE",
"jobId": "0c2767c1-19ea-479d-b371-a0f5f3d154f5",
"videoId": "5209530177001",
"accountId": "57838016001",
"status": "SUCCESS"
}
{
"entity": "poster",
"entityType": "ASSET",
"version": "1",
"action": "CREATE",
"jobId": "0c2767c1-19ea-479d-b371-a0f5f3d154f5",
"videoId": "5209530177001",
"accountId": "57838016001",
"status": "SUCCESS"
}
Ingesta de subtítulos
Se pueden agregar subtítulos en formato WebVTT a su video con la solicitud de ingesta inicial o en una solicitud posterior.
Cuerpo de solicitud de muestra
{
"text_tracks": [
{
"url": "https://solutions.brightcove.com/bcls/assets/vtt/sample.vtt",
"srclang": "en",
"kind": "captions",
"label": "EN",
"default": true
},
{
"url": "https://solutions.brightcove.com/bcls/assets/vtt/sample-es.vtt",
"srclang": "es",
"kind": "captions",
"label": "ES",
"default": false
}
],
"callbacks": [
"https://solutions.brightcove.com/bcls/di-api/di-callbacks.php"
]
}
Las pistas de texto de sidecar se mostrarán en las respuestas de CMS o de reproducción, como lo hacen para los videos que no son de Dynamic Delivery:
"text_tracks": [
{
"id": null,
"src": "https://bcbolt446c5271-a.akamaihd.net/media/v1/text/vtt/clear/57838016001/3de8c552-74e8-4c53-aa11-2a4375edf658/bce0d3dc-11d9-4ca4-ae1b-a39cb7b88a1c/text.vtt?akamai_token=exp=1479236791~acl=/media/v1/text/vtt/clear/57838016001/3de8c552-74e8-4c53-aa11-2a4375edf658/bce0d3dc-11d9-4ca4-ae1b-a39cb7b88a1c/text.vtt*~hmac=df5b4ba1ef2549a7572346dd36a761534ffafe4b8cfbdf92d89013ec2f95699c",
"srclang": "en",
"label": "EN",
"kind": "captions",
"mime_type": "text/webvtt",
"asset_id": null,
"sources": [
{
"src": "https://bcbolt446c5271-a.akamaihd.net/media/v1/text/vtt/clear/57838016001/3de8c552-74e8-4c53-aa11-2a4375edf658/bce0d3dc-11d9-4ca4-ae1b-a39cb7b88a1c/text.vtt?akamai_token=exp=1479236791~acl=/media/v1/text/vtt/clear/57838016001/3de8c552-74e8-4c53-aa11-2a4375edf658/bce0d3dc-11d9-4ca4-ae1b-a39cb7b88a1c/text.vtt*~hmac=df5b4ba1ef2549a7572346dd36a761534ffafe4b8cfbdf92d89013ec2f95699c"
}
],
"in_band_metadata_track_dispatch_type": "",
"default": false
]
}
Las pistas de texto también aparecerán en los manifiestos de HLS y DASH:
HLS
#EXT-X-MEDIA:TYPE=SUBTITLES,GROUP-ID="subtitles-0",NAME="Captions",DEFAULT=NO,AUTOSELECT=YES,LANGUAGE="es",URI="https://manifest.prod.boltdns.net/manifest/v1/hls/v5/clear/57838016001/1bd49b7b-df40-414f-bb05-8840624663e1/de8144f4-b7d7-46ca-848f-dd2f7fa453d7/rendition.m3u8?fastly_token=NTg0ZjA5MWZfMzU1N2VhY2Y2MDA3NzkzYWM0ZjU2ZWQwNWE2NTYzMmI4MzMzMmJkZWM5Y2JmNzQ1MjRjM2QxYjI0NTYzODA5Zg%3D%3D"
#EXT-X-MEDIA:TYPE=SUBTITLES,GROUP-ID="subtitles-0",NAME="Captions",DEFAULT=NO,AUTOSELECT=YES,LANGUAGE="en",URI="https://manifest.prod.boltdns.net/manifest/v1/hls/v5/clear/57838016001/1bd49b7b-df40-414f-bb05-8840624663e1/6399fcf2-cd27-4d97-ad30-e443f13563bd/rendition.m3u8?fastly_token=NTg0ZjA5MWZfYWMxYjllNDlkYzVlOTJkZWQ3ODk2YjE3MGI5NDlhYTlkOGQ1YzI5ZmI4ZjRlOWMzMzU5YmM1YzZkNTA4MTFmNQ%3D%3D"
PIZCA
<AdaptationSet mimeType="text/vtt" lang="en">
<Representation bandwidth="256" id="2f4bb3fb-1a7d-4f4c-bf44-00ef0e611131">
<BaseURL>https://bcbolt446c5271-a.akamaihd.net/media/v1/dash/live/clear/57838016001/785d5ddf-6672-4ece-9191-d105445b2557/2f4bb3fb-1a7d-4f4c-bf44-00ef0e611131.vtt?akamai_token=exp=1484784452~acl=/media/v1/dash/live/clear/57838016001/785d5ddf-6672-4ece-9191-d105445b2557*~hmac=ae568ea5294280968de0a2766afd82922ea9aa83fe23a81b3379a46b8ef13284</BaseURL>
</Representation>
</AdaptationSet>
<AdaptationSet mimeType="text/vtt" lang="hi">
<Representation bandwidth="256" id="f5875617-40f4-4991-bc5b-7152c6e2a93a">
<BaseURL>https://bcbolt446c5271-a.akamaihd.net/media/v1/dash/live/clear/57838016001/785d5ddf-6672-4ece-9191-d105445b2557/f5875617-40f4-4991-bc5b-7152c6e2a93a.vtt?akamai_token=exp=1484784452~acl=/media/v1/dash/live/clear/57838016001/785d5ddf-6672-4ece-9191-d105445b2557*~hmac=ae568ea5294280968de0a2766afd82922ea9aa83fe23a81b3379a46b8ef13284</BaseURL>
</Representation>
</AdaptationSet>
Notificaciones para activos de seguimiento de texto
A continuación, se muestran ejemplos de notificaciones específicas para la ingestión de pistas de texto.
{
"entity": "en-captions-EN",
"entityType": "ASSET",
"version": "1",
"action": "CREATE",
"jobId": "ed429284-77c9-4905-a700-4c8edb77be3e",
"videoId": "5209530177001",
"accountId": "57838016001",
"status": "SUCCESS"
}
{
"entity": "es-captions-ES",
"entityType": "ASSET",
"version": "1",
"action": "CREATE",
"jobId": "ed429284-77c9-4905-a700-4c8edb77be3e",
"videoId": "5209530177001",
"accountId": "57838016001",
"status": "SUCCESS"
}
Reproductor de muestra con pistas de texto (inglés y español)
Subtítulos de sidecar en una aplicación de iOS
Recuperar representaciones dinámicas
Para recuperar información sobre las representaciones dinámicas de un video, envíe una solicitud GET a:
https://cms.api.brightcove.com/v1/accounts/account_id/videos/video_id/assets/dynamic_renditions
Respuesta de muestra
[
{
"rendition_id": "default/audio128",
"frame_height": null,
"frame_width": null,
"media_type": "audio",
"size": 506818,
"created_at": "2016-11-14T15:05:56.209214859Z",
"updated_at": "2016-11-14T15:05:56.209214859Z",
"encoding_rate": 125,
"duration": 31488,
"audio_configuration": "L_R",
"language": "en"
},
{
"rendition_id": "default/audio64",
"frame_height": null,
"frame_width": null,
"media_type": "audio",
"size": 261129,
"created_at": "2016-11-14T15:05:53.926747456Z",
"updated_at": "2016-11-14T15:05:53.926747456Z",
"encoding_rate": 62,
"duration": 31488,
"audio_configuration": "L_R",
"language": "en"
},
{
"rendition_id": "default/audio96",
"frame_height": null,
"frame_width": null,
"media_type": "audio",
"size": 384568,
"created_at": "2016-11-14T15:05:59.023381448Z",
"updated_at": "2016-11-14T15:05:59.023381448Z",
"encoding_rate": 94,
"duration": 31488,
"audio_configuration": "L_R",
"language": "en"
},
{
"rendition_id": "default/video1200",
"frame_height": 540,
"frame_width": 960,
"media_type": "video",
"size": 4761241,
"created_at": "2016-11-14T15:06:10.410020728Z",
"updated_at": "2016-11-14T15:06:10.410020728Z",
"encoding_rate": 1206,
"duration": 31465
},
{
"rendition_id": "default/video1700",
"frame_height": 540,
"frame_width": 960,
"media_type": "video",
"size": 6712422,
"created_at": "2016-11-14T15:06:15.593063021Z",
"updated_at": "2016-11-14T15:06:15.593063021Z",
"encoding_rate": 1703,
"duration": 31465
},
{
"rendition_id": "default/video2500",
"frame_height": 720,
"frame_width": 1280,
"media_type": "video",
"size": 9795721,
"created_at": "2016-11-14T15:06:12.148783841Z",
"updated_at": "2016-11-14T15:06:12.148783841Z",
"encoding_rate": 2486,
"duration": 31465
},
{
"rendition_id": "default/video4000",
"frame_height": 1080,
"frame_width": 1920,
"media_type": "video",
"size": 15718943,
"created_at": "2016-11-14T15:06:15.463012005Z",
"updated_at": "2016-11-14T15:06:15.463012005Z",
"encoding_rate": 3992,
"duration": 31465
},
{
"rendition_id": "default/video450",
"frame_height": 270,
"frame_width": 480,
"media_type": "video",
"size": 1784858,
"created_at": "2016-11-14T15:06:20.719400854Z",
"updated_at": "2016-11-14T15:06:20.719400854Z",
"encoding_rate": 451,
"duration": 31465
},
{
"rendition_id": "default/video700",
"frame_height": 360,
"frame_width": 640,
"media_type": "video",
"size": 2746520,
"created_at": "2016-11-14T15:06:10.918331816Z",
"updated_at": "2016-11-14T15:06:10.918331816Z",
"encoding_rate": 695,
"duration": 31465
},
{
"rendition_id": "default/video900",
"frame_height": 360,
"frame_width": 640,
"media_type": "video",
"size": 3561912,
"created_at": "2016-11-14T15:06:17.295871425Z",
"updated_at": "2016-11-14T15:06:17.295871425Z",
"encoding_rate": 902,
"duration": 31465
}
]
Recuperar URL para reproducir
Para recuperar información sobre las representaciones dinámicas de un video, envíe una solicitud GET a:
https://edge.api.brightcove.com/playback/v1/accounts/account_id/videos/video_id
Respuesta de muestra
{
"description": null,
"poster_sources": [
{
"src": "https://cf-images.us-east-1.prod.boltdns.net/v1/jit/57838016001/853641cb-d66b-4f08-bb02-8489b5fba897/main/1280x720/24s816ms/match/image.jpg"
}
],
"tags": [
"dd-static"
],
"cue_points": [],
"custom_fields": {},
"account_id": "57838016001",
"sources": [
{
"ext_x_version": "4",
"type": "application/x-mpegURL",
"src": "https://manifest.prod.boltdns.net/manifest/v1/hls/v4/clear/57838016001/853641cb-d66b-4f08-bb02-8489b5fba897/10s/master.m3u8?fastly_token=NTk1YmE0ZmZfOGU5Njg0NGU1OWQ3NjI3ZDhmY2FhZTVmNGE0YzI1MWM1NjMyNTZkNzMzZmExMzRkN2ZmYzU0YWU5NzUyZTM2YQ%3D%3D"
},
{
"ext_x_version": "5",
"type": "application/x-mpegURL",
"src": "https://manifest.prod.boltdns.net/manifest/v1/hls/v5/clear/57838016001/853641cb-d66b-4f08-bb02-8489b5fba897/10s/master.m3u8?fastly_token=NTk1YmE0ZmZfOTBkOThhYmQ5MWM0MmQwYmQwYTM4MGEzMjAzZTgyNDVlMDYzYzNhMzQ1ZWQ3MTMyMzVmM2Q1YjM2N2VlMjM0Yg%3D%3D"
},
{
"type": "application/dash+xml",
"src": "https://manifest.prod.boltdns.net/manifest/v1/dash/live-baseurl/clear/57838016001/853641cb-d66b-4f08-bb02-8489b5fba897/2s/manifest.mpd?fastly_token=NTk1YmE0ZmZfYzQyOWJiOTEzMGJmNGIyMjM1NmMwMzZmNGZkZjlkYjEzMzNmNzFlYmQxODg0Y2YzZDk3ZTljNzVhODg1YzRjMQ%3D%3D",
"profiles": "urn:mpeg:dash:profile:isoff-live:2011"
},
{
"avg_bitrate": 2129000,
"width": 1280,
"src": "https://bcbolt446c5271-a.akamaihd.net/media/v1/pmp4/static/clear/57838016001/853641cb-d66b-4f08-bb02-8489b5fba897/high.mp4?akamai_token=exp=1499178239~acl=/media/v1/pmp4/static/clear/57838016001/853641cb-d66b-4f08-bb02-8489b5fba897/high.mp4*~hmac=5880698556297bbe2f2f43ac8904c659c61fb9510db1a9bb106037eaea393339",
"size": 13242064,
"height": 720,
"duration": 49690,
"container": "MP4",
"codec": "H264"
},
{
"avg_bitrate": 574000,
"width": 480,
"src": "https://bcbolt446c5271-a.akamaihd.net/media/v1/pmp4/static/clear/57838016001/853641cb-d66b-4f08-bb02-8489b5fba897/mid.mp4?akamai_token=exp=1499178239~acl=/media/v1/pmp4/static/clear/57838016001/853641cb-d66b-4f08-bb02-8489b5fba897/mid.mp4*~hmac=75e51439623a41b93d2a234c25683e76d43656f97a9dfb8efe61a5342d5ff2da",
"size": 3586929,
"height": 270,
"duration": 49690,
"container": "MP4",
"codec": "H264"
}
],
"name": "Canada_Geese_Family",
"reference_id": null,
"long_description": null,
"duration": 49633,
"economics": "AD_SUPPORTED",
"published_at": "2017-06-05T11:20:52.412Z",
"text_tracks": [],
"updated_at": "2017-06-05T12:06:55.121Z",
"thumbnail": "https://cf-images.us-east-1.prod.boltdns.net/v1/jit/57838016001/853641cb-d66b-4f08-bb02-8489b5fba897/main/160x90/24s816ms/match/image.jpg",
"poster": "https://cf-images.us-east-1.prod.boltdns.net/v1/jit/57838016001/853641cb-d66b-4f08-bb02-8489b5fba897/main/1280x720/24s816ms/match/image.jpg",
"offline_enabled": false,
"link": null,
"id": "5459968909001",
"ad_keys": null,
"thumbnail_sources": [
{
"src": "https://cf-images.us-east-1.prod.boltdns.net/v1/jit/57838016001/853641cb-d66b-4f08-bb02-8489b5fba897/main/160x90/24s816ms/match/image.jpg"
}
],
"created_at": "2017-06-05T11:20:52.412Z"
}
DRM
Se admite DRM, pero funciona de manera diferente a la ingesta de video normal. Tú haces no es necesario especificar el embalaje en el perfil de ingesta. En cambio, el empaquetado es automático según la configuración de DRM de su cuenta. Póngase en contacto con el soporte de Brightcove para establecer valores predeterminados para el empaquetado DRM de sus videos.
Para obtener más detalles, consulte Ingestando contenido con DRM.
Interpretaciones con marca de agua
Interpretaciones con marca de agua son compatibles. Si necesita agregar marcas de agua a algunos o todos sus videos, comuníquese con el Soporte de Brightcove.
Tenga en cuenta que se pueden agregar representaciones con marca de agua para los perfiles de Dynamic Delivery estáticos, pero no para perfiles de codificación sensible al contexto (CAE).
Estado de la ingesta
Puede recibir información sobre el procesamiento de la ingesta de Dynamic Delivery suscribiéndose a las devoluciones de llamada y / o consultando una API de estado para obtener el estado del trabajo.
Devoluciones de llamada
En su solicitud de ingesta, puede especificar una o más URL de devolución de llamada para recibir notificaciones de los resultados del proceso de ingesta. Las URL que especifique deben ser para aplicaciones que puedan aceptar solicitudes POST. Las notificaciones se enviarán en formato JSON.
Los detalles sobre la recepción e interpretación de notificaciones se pueden encontrar en Notificaciones
API de estado
También puede obtener el estado actual de los trabajos de ingesta mediante la API de estado. Los mensajes de estado están disponibles solo para trabajos de ingesta enviados dentro de los últimos 7 días.
Puntos finales
Todos los mensajes de estado de un video
https://cms.api.brightcove.com/v1/accounts/:account_id/videos/:video_id/ingest_jobs
Ejemplo
https://cms.api.brightcove.com/v1/accounts/57838016001/videos/5128433746001/ingest_jobs
Mensaje de estado para un trabajo en particular
https://cms.api.brightcove.com/v1/accounts/:account_id/videos/:video_id/ingest_jobs/:job_id
Ejemplo
Respuestas
A continuación, se muestra una respuesta de muestra para un trabajo que se está procesando actualmente.
{
"id": "7a196557-56ba-4218-ada5-e107ed554555",
"state": "processing",
"account_id": "57838016001",
"video_id": "5128433746001",
"error_code": null,
"error_message": null,
"updated_at": "2016-09-16T16:51:46.313Z",
"started_at": "2016-09-16T16:51:22.258Z"
}
Los elementos más importantes aquí son:
state
: el estado del trabajo (processing
|publishing
|finished
|failed
- cuando este trabajo esté completo y el video esté listo para reproducirse, elstate
seráfinished
)error_code
yerror_message
: para un trabajo exitoso, estos seránnull
; para trabajos fallidos, obtendrá un código de error y un mensaje explicativo
A continuación, se muestra un ejemplo de un mensaje de estado de un trabajo fallido para comparar:
{
"id": "bc9dfb58-d502-43d5-97e4-41f3dcd44265",
"state": "failed",
"account_id": "57838016001",
"video_id": "5128710227001",
"error_code": "NoMediaError",
"error_message": "Audio-only output was requested on a file that only contains video.",
"updated_at": "2016-09-16T20:30:58.016Z",
"started_at": "2016-09-16T20:29:14.139Z"
}
Codificación consciente del contexto
La codificación contextual (CAE) es una tecnología desarrollada por Brightcove para analizar el video de origen durante la transcodificación y generar un conjunto óptimo de representaciones y tasas de bits en función de la complejidad del video y un conjunto de parámetros delimitadores proporcionados (número mínimo de representaciones, tasa de bits máxima). , etc.).
Para aprender a utilizar los perfiles CAE, consulte Codificación sensible al contexto.
Varias pistas de audio
Las cuentas configuradas para Dynamic Delivery se pueden habilitar para permitir múltiples pistas de audio para videos.
La capacidad de asociar varias pistas de audio con un solo título puede resultar útil en un par de situaciones clave:
- Reproducción del mismo video en diferentes idiomas para un alcance más amplio a nivel mundial
- Proporcionar audio con descripciones para personas con discapacidades visuales.
Para obtener detalles sobre el uso de esta función, consulte Varias pistas de audio.
Código de muestra
Los servicios de aprendizaje proporcionan varias aplicaciones de muestra que proporcionan una interfaz web y envían Dynamic Ingest API solicitudes a través de un proxy PHP. Ver las aplicaciones de muestra.
Además, los siguientes repositorios de GitHub contienen código de muestra en Java, Python y C #; tenga en cuenta que este código de muestra es No soportado por Brightcove:
Limitaciones
- Para los tipos de video segmentados (HLS y DASH), algunos reproductores no manejan el caso en el que las longitudes de transmisión de audio y video difieren en más de la duración de un segmento. Si lo encuentras, prueba a utilizar una longitud de segmento más corta.