Descripción general: API de ingesta dinámica

En este tema, aprenderá a utilizar el Dynamic Ingest API para ingerir videos para que puedan ser entregados a través de Dynamic Delivery.

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:

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

Ver API de ingesta dinámica: 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:

Caracteres especiales
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:

  1. Llama a CMS API para crear un objeto de video en el sistema Video Cloud y obtener su identificación
  2. 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)

Reproductor de video de entrega dinámica

Subtítulos de sidecar en una aplicación de iOS

Subtítulos de Sidecar de entrega dinámica
Subtítulos de Sidecar de entrega dinámica

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, el state será finished )
  • error_code y error_message : para un trabajo exitoso, estos serán null ; 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.