Implementación de múltiples pistas de audio

Este tema explica cómo agregar y administrar múltiples pistas de audio para videos usando Dynamic Ingest y CMS API.

Introducción

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.

Tenga en cuenta que también se pueden agregar pistas de audio en Studio; consulte Agregar pistas de audio a videos usando el módulo de medios para más detalles.

Formatos de video compatibles

Se admiten varias pistas de audio para HLS V4+ y DASH - con y sin DRM proteccion.

Muestra

A continuación se muestra un ejemplo simple de un video con múltiples pistas de audio.

Configuración

La configuración para Dynamic Ingest solicitudes es el mismo, ya sea que esté ingiriendo un video, imágenes, pistas de audio, WebVTT archivos, o todos estos:

Solicitar URL
      https://ingest.api.brightcove.com/v1/accounts/{account_id}/videos/{video_id}/ingest-requests
Autenticación
La autenticación requiere un token de acceso pasado como Bearer token en un Authorization encabezamiento:
      Authorization: Bearer {access_token}

Para obtener tokens de acceso, necesitará credenciales del cliente (vea abajo). Para conocer el proceso de obtención de un token de acceso, consulte Obtener tokens de acceso.

Nota sobre S3

Si sus archivos de origen se extraerán de un depósito de S3 protegido, deberá establecer una política de depósito para permitir Video Cloud para acceder a los archivos. Ver Utilizando Dynamic Ingest con S3 para detalles.

Obtención de credenciales

Para obtener un client_id y client_secret, tendrás que ir a la interfaz de usuario de OAuth y registrar esta aplicación:

Estos son los permisos que necesitarás:

Ingesta dinámica Permisos
Dynamic Ingest Permisos

También puede obtener sus credenciales a través de CURL o Postman - ver:

Si obtienes credenciales directamente de la API, estos son los permisos que necesitas:

      [
        "video-cloud/video/all",
        "video-cloud/ingest-profiles/profile/read",
        "video-cloud/ingest-profiles/account/read",
        "video-cloud/upload-urls/read"
      ]

Flujo de trabajo

Hay dos casos de uso principales:

  • Ingesta un nuevo video con múltiples pistas de audio
    Nuevo flujo de trabajo de video
    Nuevo flujo de trabajo de video
  • Agregar múltiples pistas de audio a un video existente
    Flujo de trabajo de video existente
    Flujo de trabajo de video existente

Veremos los detalles de las solicitudes de API en una sección a continuación.

Metadatos de pista de audio

Hay algunos campos de metadatos adjuntos a las pistas de audio; algunos de ellos se configuran cuando ingieres las pistas, mientras que otros son creados por Video Cloud. Algunos de estos campos son de solo lectura y usted puede actualizar otros. Los campos de metadatos se detallarán a continuación en el contexto de las solicitudes de API relevantes, pero dos en particular requieren una explicación aquí, ya que son cruciales para determinar cómo Brightcove Player manejará las múltiples pistas de audio.

language

La language campo, establecido para cada pista durante la ingestión, especifica el idioma de la pista. Esto es importante si la pista es una copia de las palabras habladas en el video. Puede utilizar códigos básicos como fr o códigos con un identificador local, como fr-CA. See the ISO Language Code Table.

variant

La variant El campo describe el tipo de pista de audio. Los valores posibles, con significados estándar son:

  • main- la pista principal, generalmente la que está mezclada en el archivo de video
  • alternate- una pista de audio alternativa
  • commentary- una pista de audio que proporciona comentarios sobre la pista de video
  • dub- una pista que contiene una versión doblada de palabras habladas en un idioma diferente
  • descriptive- la pista es descriptiva del contenido del video de alguna manera

Valores predeterminados de la cuenta

Puede establecer valores predeterminados de la cuenta para language y variant para determinar qué pista de audio será tratada como predeterminada por Brightcove Player (la predeterminada también se puede anular actualizando los metadatos de la pista, como veremos en una sección a continuación). Para configurar los valores predeterminados de su cuenta, Póngase en contacto con el soporte de Brightcove.

Ingesta pistas de audio

Ahora veremos las llamadas a la API para ingerir pistas de audio para los dos casos de uso descritos anteriormente.

Nuevo video con múltiples pistas de audio

Crea el objeto de video (CMS API)

  1. Puede agregar varios elementos de metadatos de video cuando crea el objeto de video, pero aquí solo agregaremos el mínimo: a name para el video:
          {
              "name": "YOUR_VIDEO_NAME"
          }
  2. Envíe el JSON anterior (con el texto del marcador de posición reemplazado por el nombre de su video) como el cuerpo de la solicitud para POST solicitud de https://cms.api.brightcove.com/v1/accounts/YOUR_ACCOUNT_ID/videos
  3. Obtendrá una gran cantidad de metadatos de video en la respuesta, pero la pieza importante aquí es la id (la identificación del video), que necesita para el siguiente paso.

Ingesta las pistas de audio y video

A continuación, ingeriremos las pistas de video y audio (podríamos agregar otros activos como imágenes y pistas de texto, pero lo mantendremos simple aquí). Lo único que puede resultarle un poco confuso es que audio_tracks aparece dos veces en el JSON para el cuerpo de la solicitud:

  • Un audio_tracks objeto dentro del master El objeto contiene metadatos para la pista de audio incluida en el archivo de video (si existe, esto también se conoce como el audio muxed); esto incluirá solo metadatos, sin una URL para el archivo de audio, ya que la pista de audio ya está incluida en el archivo de video. Recuerde que la pista de audio codificada se puede comprimir como Estéreo, 5.1, 7.1 siempre que cumpla con las reglas para Formatos de audio y, como se indica en el Problemas conocidos , más allá de establecer un Audio Predeterminado, no hay otra forma de ordenar las pistas de audio
  • Un nivel superior audio_tracks objeto que describe las pistas de audio adicionales que está ingiriendo; estas incluirán una URL para el archivo de audio, así como otros metadatos
  1. Los datos JSON que se enviarán en el cuerpo de la solicitud son los siguientes:
          {
            "master": {
                "url": "https://support.brightcove.com/test-assets/videos/Great_Blue_Heron.mp4",
                "audio_tracks": [
                    {
                        "language": "en",
                        "variant": "main"
                    }
                ]
            },
            "audio_tracks": {
                "merge_with_existing": true,
                "masters": [
                    {
                        "url": "https://support.brightcove.com/test-assets//audio/celtic_lullaby.m4a",
                        "language": "en",
                        "variant": "alternate"
                    },
                    {
                        "url": "https://support.brightcove.com/test-assets//audio/audio1.m4a",
                        "language": "en",
                        "variant": "commentary"
                    }
                ]
            },
              "profile": "BoltIngestProfile",
              "capture-images": true,
              "callbacks": [
                  "https://solutions.brightcove.com/bcls/di-api/di-callbacks.php"
              ]
          }
  2. Envíe el JSON anterior, sustituya los marcadores de posición por sus propias URL y ajuste el language y variant valores, en un POST solicitud de https://ingest.api.brightcove.com/v1/accounts/ACCOUNT_ID/videos/ID/ingest-requests (la ID aquí está la identificación de video devuelta de la solicitud para crear el objeto de video)

Agregar pistas de audio a un video existente

Para agregar pistas de audio adicionales a un video existente, el procedimiento es el mismo, excepto que no necesita realizar la solicitud al CMS API para crear el video, porque ya existe. Y en la solicitud al Dynamic Ingest API, no necesitará incluir la URL del archivo de video o el audio_tracks debajo master proporcionando los metadatos para el audio muxed. Sin embargo, sí desea incluir los metadatos para la pista de audio muxed en el video existente. También es importante recordar que la pista de audio debe comprimirse siguiendo las reglas de Formatos de audio. Entonces, el JSON para la solicitud de ingesta se verá así:

      {
        "audio_tracks": {
            "merge_with_existing": true,
            "masters": [
                {
                    "url": "https://support.brightcove.com/test-assets/audio/celtic_lullaby.m4a",
                    "language": "en",
                    "variant": "alternate"
                },
                {
                    "url": "https://support.brightcove.com/test-assets/audio/audio1.m4a",
                    "language": "en",
                    "variant": "commentary"
                }
            ]
        },
          "profile": "BoltIngestProfile",
          "capture-images": true,
          "callbacks": [
              "https://solutions.brightcove.com/bcls/di-api/di-callbacks.php"
          ]
      }

Campos de pista de audio para ingesta

Campos de pista de audio
Campo Tipo Descripción
master.audio_tracks Objeto[] Metadatos para el audio muxed
master.audio_tracks.language Cadena Código de idioma para el audio multiplexado. Puede utilizar códigos básicos como fr o códigos con un identificador local, como fr-CA. See the ISO Language Code Table.
master.audio_tracks.variant Cadena El tipo de pista de audio: main|alternate|dub|commentary|descriptive (main generalmente se usaría para el audio muxed)
audio_tracks Objeto Información para las pistas de audio adicionales
audio_tracks.merge_with_existing booleano Si estas pistas deben fusionarse con las existentes o reemplazarlas
audio_tracks.masters Objeto[] Información para las pistas de audio individuales
audio_tracks.masters.url Cadena URL del archivo de la pista de audio
audio_tracks.masters.language Cadena Código de idioma para la pista de audio. Puede utilizar códigos básicos como fr o códigos con un identificador local, como fr-CA. See the ISO Language Code Table.
audio_tracks.masters.variant Cadena El tipo de pista de audio: main|alternate|dub|commentary|descriptive (main generalmente se usaría para el audio muxed)

Notificaciones

Si especifica uno o más llamar de vuelta URL (como en el JSON de muestra para la solicitud de ingesta anterior), Video Cloud enviará una notificación por cada una de las pistas de audio que ingiera. Las notificaciones se verán así:

      {
        "entity": "default/audio128",
        "entityType": "DYNAMIC_RENDITION",
        "version": "1",
        "action": "CREATE",
        "jobId": "0f703adb-0f17-4a35-8395-21c7fcdd2649",
        "videoId": "5298468208001",
        "dynamicRenditionId": "default/audio128",
        "accountId": "1910141565001",
        "status": "SUCCESS",
        "language" : "en",
        "variant" : "alternate"
      }

Para identificar notificaciones de pistas de audio, busque el language y variant campos en la notificación. La "action": "CREATE" y "status": "SUCCESS" Los campos indican que la pista se ingirió correctamente.

Administrar pistas de audio

Una vez que haya ingerido las pistas de audio, puede administrarlas a través del CMS API.

Obtener todos los metadatos de la pista de audio de un video

Para recuperar los metadatos de todas las pistas de audio asociadas con un video, haga un GET solicitud de:

      https://cms.api.brightcove.com/v1/accounts/account_id/videos/video id/audio_tracks

La respuesta será una serie de objetos que contienen metadatos para cada pista de audio. Consulte la tabla de campos de respuesta a continuación para obtener más detalles.

      [
        {
          "id": "en_alternate",
          "language": "en",
          "variant": "alternate",
          "duration": 86100,
          "encoding_rates": [
            64000,
            96000,
            127000
          ]
        },
        {
          "id": "en_commentary",
          "language": "en",
          "variant": "commentary",
          "duration": 34203,
          "encoding_rates": [
            10000,
            13000,
            15000
          ]
        },
        {
          "id": "en_main",
          "language": "en",
          "variant": "main",
          "duration": 31488,
          "encoding_rates": [
            62000,
            94000,
            125000
          ]
        }
      ]

También puede ver esta información en Studio viendo el video en el módulo de Medios:

Información de la pista de audio en Studio
Información de la pista de audio en Studio

Obtener metadatos para una pista de audio

Para recuperar los metadatos de una pista de audio asociada con un video, haga un GET solicitud de:

      https://cms.api.brightcove.com/v1/accounts/account_id/videos/video id/audio_tracks/audio_track_id

La respuesta será un objeto que contiene metadatos para cada pista de audio. Consulte la tabla de campos de respuesta a continuación para obtener más detalles.

Actualizar metadatos de pistas de audio

Puede actualizar cualquier campo de metadatos grabables para una pista de audio haciendo un PATCH solicitud de:

      https://cms.api.brightcove.com/v1/accounts/account_id/videos/video id/audio_tracks/audio_track_id

En el cuerpo de la solicitud, incluya los campos que desea modificar, por ejemplo:

      {
          "language": "es",
          "is_default": true
      }

Eliminar una pista de audio

Para eliminar una pista de audio, envíe una solicitud DELETE a:

      https://cms.api.brightcove.com/v1/accounts/account_id/videos/video id/audio_tracks/audio_track_id

Tenga en cuenta que el código de respuesta correcta puede ser 202 (Aceptado) en lugar de 204 (Sin contenido) porque el proceso de eliminación es asincrónico y es posible que no se complete de inmediato.

Campos de metadatos de pistas de audio
Campo Tipo Solo lectura Descripción
id Cadena Id para la pista, formada como language_variant - tenga en cuenta que la identificación puede cambiar si se cambian estos valores
language Cadena No Código de idioma para la pista de audio. Puede utilizar códigos básicos como fr o códigos con un identificador local, como fr-CA. See the ISO Language Code Table.
variant Cadena No El tipo de pista de audio: main|alternate|dub|commentary|descriptive (main generalmente se usaría para el audio muxed)
duration Número La longitud de la pista en milisegundos.
encoding_rates Número[] Una lista de codificaciones disponibles de esta pista, en bps
is_default booleano No Si es verdadero, se utilizará la pista predeterminada para la reproducción (anulando cualquier valor predeterminado a nivel de cuenta)

Reproducción

Para obtener información sobre cómo los reproductores web y SDK de Brightcove manejan varias pistas de audio, consulte:

Problemas conocidos

Maestros de audio no almacenados
  • Video Cloud voluntad no almacenar masters de audio
Deben usarse archivos de solo audio
Las pistas de audio deben ser archivos de solo audio sin pistas de video
HLSv3, HLS con audio y video en el mismo segmento
  • La API de reproducción no volverá HLSv3 manifiesta
  • Todas HLS Los manifiestos incluirán video / audio desmultiplicado.
Transmisión fluida
Las URL de transmisión fluida no estarán disponibles.
Distribución social
No es posible seleccionar qué pista de audio se utilizará para la distribución. Siempre se utilizará la pista incluida en la fuente de vídeo (la multiplexada en audio).
Estudio
  • Studio mostrará información sobre las pistas de audio
  • Para agregar pistas de audio con Studio, consulte Varias pistas de audio
Orden de pistas de audio más allá de la pista "predeterminada"
  • Puede elegir una pista de audio predeterminada con CMS API por título configurando el is_default campo a true
  • También hay una cuenta predeterminada, que puede ser configurada por Soporte
  • Esto solo afectará a la pista "predeterminada" en los manifiestos de HLS
  • Ningún otro pedido es posible
Ingesta de más de una pista de audio de una sola fuente
Solo apoyamos una pista de audio por fuente. Cada pista de audio debe ingerirse por separado.
Protección DRM en videos que solo incluyen audio
Tan pronto como se agregue una pista de video, se habilitará la protección DRM.
Etiquetas fáciles de usar para el usuario final
No admitimos etiquetas personalizadas para pistas de audio. Si lo necesita, deberá realizar el cambio en el lado del cliente a través de Player API.
En algunos casos, cambiar de pista puede hacer que Brightcove Player se vuelva inestable
  • Cambio de pista antes de que se hayan descargado todos los segmentos de audio
  • Cuando el video se reproduce usando el complemento Silverlight (en versiones de IE inferiores a 10, o cualquier versión de IE en versiones de Windows inferiores a 8), se reproducen varias pistas de audio. no compatible con Silverlight.
  • Si el audio y el video tienen duraciones diferentes, el reproductor se detendrá cuando se acabe el más corto.
Video "duration"
El video duration informado por el catálogo / API de reproducción puede ser incorrecto si las pistas de audio tienen diferentes duraciones.