soporte Contactar con asistencia técnica | estado del sistema Estado del Sistema
Contenido de la página

    API de carga de archivos de origen para Dynamic Ingest

    En este tema, aprenderá cómo agregar videos a su Video Cloud cuenta utilizando la API de carga de archivo de origen para Dynamic Ingest. La API de carga de archivos de origen proporciona la capacidad de cargar ("empujar") archivos de origen en Video Cloud a través de Dynamic Ingest.

    Introducción

    Para la ingesta a través de la carga del archivo fuente, Brightcove proporciona un depósito S3 en el que puede cargar sus videos y archivos de activos, y Dynamic Ingest luego extrae el video del depósito S3 de la misma manera que lo haría desde su propio depósito S3 o URL. El siguiente diagrama muestra la diferencia entre los flujos de trabajo para la ingesta dinámica básica y la ingesta con la carga del archivo fuente.

    Diferencias de flujo de trabajo
    Diferencias de flujo de trabajo

    Preguntas Frecuentes

    ¿Cuánto tiempo se almacenan temporalmente los videos y cuándo las URL para ellos se vuelven inválidas?
    Los videos se eliminan del almacenamiento temporal después de 24 horas después de que se cargan, y las URL para ellos ya no son válidas después de eso.
    ¿Por cuánto tiempo son las credenciales de S3 devueltas por el Dynamic Ingest API ¿válido?
    Las credenciales S3 también son válidas para 24 horas después de que la API las envíe.
    ¿Los archivos de video se eliminan físicamente del depósito S3 después de 24 hours?
    ¿Se eliminan los videos del cubo S3 después de que se hayan ingerido correctamente?
    Todos los videos se eliminan del almacenamiento temporal después de 24 horas, ya sea que se hayan ingerido con éxito o no.
    ¿Alguien que tiene la URL puede acceder públicamente a los videos en almacenamiento temporal?
    No
    ¿Hay alguna manera de descargar o ver el video en almacenamiento temporal sin credenciales de seguridad?
    No
    ¿Las credenciales de seguridad para acceder al almacenamiento temporal se comparten con otros clientes de Brightcove?
    No, a cualquier cliente que use el almacenamiento temporal se le otorgan credenciales de seguridad únicas.
    ¿Hay alguna manera de que otros clientes de Brightcove puedan acceder a mis videos en almacenamiento temporal usando sus propias credenciales de seguridad?
    No, las credenciales de seguridad solo proporcionan acceso a los videos que enviaste al almacenamiento temporal.
    ¿En qué región reside el contenedor S3 para cargas de archivos?
    US-EAST-1 (esto es fijo).

    Nombres de archivos de origen

    Para evitar problemas en el acceso a videos y activos en el Brightcove Player, debe evitar el uso de caracteres especiales en los nombres de los archivos de origen, ya sean videos, imágenes o pistas de texto (archivos WebVTT). Esto también se aplica a los activos remotos. Los nombres de archivos solo deben incluir lo siguiente:

    • Un byte letras (mayúsculas o minúsculas)
    • NÚMEROS
    • Guiones (-) y guiones bajos (_)
    • espacios si están codificados en URL

    Autenticación

    La forma más fácil de obtener las credenciales del cliente para Dynamic Ingest es a través de la página de Studio Admin para Autenticación API. Para los permisos de API, necesita al menos:

    • CMS> Lectura de video
    • Ingesta dinámica> Crear
    • Ingesta dinámica> Archivos push (esta es la nueva API de carga de archivos de origen)
    Authetication API
    Authetication API

    La autenticación para las solicitudes de API de Brightcove para la ingestión basada en inserción requiere un permiso adicional sobre las otras solicitudes de ingesta dinámica:

          video-cloud/upload-urls/read

    El conjunto completo de permisos necesarios para la carga del archivo fuente es:

    • video-cloud / video / create
    • video-cloud / video / read
    • video-nube / video / actualización
    • video-cloud / upload-urls / read

    Estos permisos están disponibles en Estudio. Alternativamente, puede obtener credenciales de cliente para usar la API de carga del archivo fuente directamente desde el OAuth API haciendo una solicitud POST de la siguiente manera:

    URL de solicitud

          https://oauth.brightcove.com/v4/client_credentials

    Encabezados

    • Authorization: BC_TOKEN {YOUR_BC_TOKEN}
    • Tipo de contenido: application / json

    Solicitar cuerpo

          {
          "type": "credential",
          "maximum_scope": [
          {
            "identity": {
              "type": "video-cloud-account",
              "account-id": {YOUR_ACCOUNT_ID}
            },
            "operations": [
              "video-cloud/upload-urls/read",
              "video-cloud/video/create",
              "video-cloud/video/read",
              "video-cloud/video/update",
              "video-cloud/ingest-profiles/profile/write",
              "video-cloud/ingest-profiles/account/write",
              "video-cloud/ingest-profiles/profile/read",
              "video-cloud/ingest-profiles/account/read"
            ]
          }
          ],
          "name": "Source File Upload Credentials"
          }

    Solicitudes API

    Hay cuatro solicitudes de API involucradas en la ingesta basada en push:

    1. CMS API Solicitud POST para crear el objeto de video en Video Cloud (Igual que para la ingestión por tracción)
    2. Solicitud GET de ingesta dinámica para obtener las URL de bucket de Brightcove S3
    3. PONER solicitud para cargar el archivo fuente en el depósito Brightcove S3
    4. Solicitud de ingesta dinámica de POST para ingerir el archivo de origen (lo mismo que para la ingestión basada en la extracción)

    Estas solicitudes se detallan en las siguientes secciones.

    CMS API solicitar

    El CMS API la solicitud es la misma que para cualquier operación de ingesta dinámica para agregar un nuevo video. Esta solicitud es necesaria para ingerir un nuevo video. Si está reemplazando o agregando recursos a un video existente, no necesitará este paso; en su lugar, utilizará la identificación del video existente en las otras solicitudes.

    Solicitar sintaxis

    Esto es una POST solicitud de:

          https://cms.api.brightcove.com/v1/accounts/{ACCOUNT_ID}/videos

    parámetros

    Parámetros de URL para la solicitud:

    • {ACCOUNT_ID} - su identificación de cuenta

    Solicitar cuerpo

    El cuerpo de solicitud consiste en un objeto JSON que contiene el name (obligatorio) y otros metadatos para el video (opcional):

          {
          "name": "My Video"
          }

    ver el Referencia de la API para más detalles.

    Encabezados

    Los encabezados HTTP que debe incluir con la solicitud son:

    • Authorization: Bearer {ACCESS_TOKEN}
    • Content-Type: application/json

    Respuesta

    La respuesta será un objeto JSON que contiene los metadatos del video. El elemento importante para el resto de las operaciones de ingesta dinámica es el id, que sustituirás por el {VIDEO_ID} en las solicitudes a la API de Ingestión

    Solicitud de URL S3

    La primera solicitud a la API de ingesta recuperará la información que necesita para PONER su (s) archivo (s) de origen en el depósito Brightcove S3 y luego ingerir desde allí en Video Cloud.

    Solicitar sintaxis

    Esto es una GET solicitud de:

          https://ingest.api.brightcove.com/v1/accounts/{ACCOUNT_ID}/videos/{VIDEO_ID}/upload-urls/{SOURCE_NAME}

    parámetros

    Parámetros de URL para la solicitud:

    • {ACCOUNT_ID} - su identificación de cuenta
    • {VIDEO_ID} - la identificación del video regresó de CMS API solicitar
    • {SOURCE_NAME} - el nombre de archivo de la fuente de video - el nombre no debe contener ningún carácter reservado a la URL, como ?, &, # o espacios

    Encabezados

    Los encabezados HTTP que debe incluir con la solicitud son:

    • Authorization: Bearer {ACCESS_TOKEN}

    Respuesta

    La respuesta será un objeto JSON similar al siguiente:

          {
          "bucket": "ingestion-upload-production",
          "object_key": "57838016001/4752143002001/ed5a5ba0-1d97-4f95-a8ec-cbb786b04a37/greatblueheron.mp4",
          "access_key_id": "ACCESS_KEY_APPEARS_HERE",
          "secret_access_key": "SECRET_ACCESS_KEY_APPEARS_HERE",
          "session_token": "FQoDYXdzEKf//////////wEaDKR0wDgquq/qvkZgbyKOA7URC/9io6cmRBDkhbvxoHIKkPZlK/9YNvdWcESPkm75/2PvU6FV1Mc+/XENPzY8KgvP86MBJNxYLPdkuP1phgHs2Yh2p1KIDcQSCZJ3i6i9m4S14ewjWIugYLYDQi6CG+3fiFwfzbKT5jes1kh24m9BQQIuvVOiM1GLTldyDzlrdDopJkdYd4IEU7FU36CUT7RL/aeMwR2Usk56nwqyqkkQHPmvqmGyiLdrD3OrIbUU+6+ZP4usS9dbV3eAqOWDIk3HCN+Kuc9f/eUWhY21ftNDXWgasqQqXwPRs3T1i/hoiIKODbzr8F",
          "signed_url": "https://ingestion-upload-production.s3.amazonaws.com/57838016001/4752143002001/ed5a5ba0-1d97-4f95-a8ec-cbb786b04a37/greatblueheron.mp4?AWSAccessKeyId=ACCESS_KEY_HERE&Expires=1475673952&Signature=%2Fsr5cV%2FVOfGCBkodol9xQIKlbu4%3D",
          "api_request_url": "https://ingestion-upload-production.s3.amazonaws.com/57838016001/4752143002001/ed5a5ba0-1d97-4f95-a8ec-cbb786b04a37/greatblueheron.mp4"
          }

    Los elementos en la respuesta son:

    • bucket - el nombre del cubo S3
    • object_key - la clave de objeto para la carga del archivo (utilizada en la construcción de la URL de destino para cargas múltiples)
    • access_key_id - la clave de acceso utilizada para autenticar la solicitud de carga (utilizada para cargas múltiples)
    • secret_access_key - la clave de acceso secreta utilizada para autenticar la solicitud de carga (utilizada para cargas de varias partes)
    • session_token - un token de AWS de corta duración que proporciona la capacidad de escribir en el objetivo objec
    • signed_url - esta es una URL S3 abreviada a la que PUEDE PONER sus archivos de origen si tiene videos relativamente pequeños y no está implementando la carga multiparte
    • api_request_url - esta es la URL que incluirá en su solicitud POST de ingesta dinámica para la url maestra o url para los activos image / text_tracks

    Se recomienda que use la carga de varias partes utilizando el SDK de AWS para el idioma que está usando. Los SDK están disponibles para muchos idiomas, incluidos Java, .NET, Ruby, PHP, Python, JavaScript, Go y C ++. Ver el Blog de desarrolladores de AWS .

    Si está implementando la carga de varias partes, los siguientes documentos y código de muestra serán útiles:

    Aquí hay un ejemplo simple en PHP:

          <?php
          // AWS SDK (for push ingests)
          require 'vendor/aws-autoloader.php';
          
          use Aws\S3\S3Client;
          use Aws\S3\MultipartUploader;
          use Aws\Exception\MultipartUploadException;
          
          /**
           * get S3 information as described above in this doc
           * the code below assumes it has been decoded as $s3response
           * and that $filePath is the local path to the asset file
           */
          
          s3 = new S3Client([
              'version' => 'latest',
              'region'  => 'us-east-1',
              'credentials' => array(
                  'key'    => $s3response->access_key_id,
                  'secret' => $s3response->secret_access_key,
                  'token'	 => $s3response->session_token
              )
          ]);
          $params = array(
              'bucket' => $s3response->s3->bucket,
              'key' => $s3response->s3->object_key
          );
          $uploader = new MultipartUploader($this->s3, $filePath, $params);
          try {
              $uploadResponse = $uploader->upload();
          } catch (MultipartUploadException $e) {
              echo $e->getMessage() . "\n";
          }
          ?>

    PONER archivo (s) fuente a S3

    Después de obtener las URL S3, realiza una solicitud PUT para cargar su archivo de video, usando el signed_url como el destino.

    Puedes usar lo siguiente rizo comando para probar la operación PUT:

          curl -X PUT "SIGNED_URL_GOES_HERE" --upload-file FILE_PATH_FOR_LOCAL_ASSET_GOES_HERE 

    Subida simple o multiparte

    AWS permite cargas de una sola parte para archivos de hasta 5 GB en tamaño (no hay otros límites en el tamaño de archivo). Para archivos más grandes, debe usar cargas multiparte. Aunque la carga de una parte es algo más fácil de configurar, recomendamos usar la carga multiparte siempre que sea posible. Aquí están las diferencias entre los dos:

    • Subida de una sola parte carga el video todo como un archivo. La carga de una sola parte está limitada a los tamaños de archivo de 5 GB o menos. Si la carga se interrumpe por algún motivo, debe comenzar de nuevo.
    • La carga multiparte empuja el archivo en trozos. Esto es más eficiente porque la carga puede aprovechar múltiples conexiones. Además, si se interrumpe la carga, puede reanudarse donde se detuvo con los fragmentos restantes.

    Solicitud de ingesta dinámica

    Después de que su archivo se haya cargado en el depósito Brightcove S3, realiza una solicitud de ingesta dinámica normal para ingerir el archivo desde su ubicación S3.

    Solicitar sintaxis

    Esto es una POST solicitud de:

          https://ingest.api.brightcove.com/v1/accounts/{ACCOUNT_ID}/videos/{VIDEO_ID}/ingest-requests

    parámetros

    Parámetros de URL para la solicitud:

    • {ACCOUNT_ID} - su identificación de cuenta
    • {VIDEO_ID} - la identificación del video regresó de CMS API solicitar

    Solicitar cuerpo

    El cuerpo de solicitud consiste en un objeto JSON que contiene el master (requerido) detalles para el trabajo de ingesta. los url para master será el api_request_url devuelto por la solicitud de la información del depósito S3

          {
          "master": {
              "url": "https://ingestion-upload-prod.s3.amazonaws.com/12345/5678/3712cd37504911ab06a77a26a387ce/source.mp4"
          },
          "profile": "multi-platform-standard-static",
          "capture-images": true
          }

    ver el Referencia de la API para más detalles.

    Encabezados

    Los encabezados HTTP que debe incluir con la solicitud son:

    • Authorization: Bearer {ACCESS_TOKEN}
    • Content-Type: application/json

    Respuesta

    La respuesta contendrá el job_id para la solicitud de ingesta, que le permite rastrear el estado a través de Notificaciones.

    Código de muestra

    Para ayudarlo a comenzar con el ingesta dinámica basada en push, hemos creado algunas aplicaciones de ejemplo en Java y Python. Puedes encontrarlos en nuestra Sitio de Github.


    Página actualizada por última vez el 28 Sep 2020