Implémentation de plusieurs pistes audio

Cette rubrique explique comment ajouter et gérer plusieurs pistes audio pour des vidéos à l'aide des API Dynamic Ingère et CMS.

Introduction

La possibilité d'associer plusieurs pistes audio à un seul titre peut être utile dans plusieurs scénarios clés :

  • Lecture de la même vidéo dans différentes langues pour une portée plus large à l'échelle mondiale 
  • Fournir de l'audio avec des descriptions pour les malvoyants

Notez que l'ajout de pistes audio peut également être fait dans Studio - voir Ajout de pistes audio aux vidéos à l'aide du module multimédia pour plus de détails.

Formats vidéo pris en charge

Plusieurs pistes audio sont prises en charge pour HLS V4+ et DASH - Avec et sans DRM protection.

échantillon

Vous trouverez ci-dessous un exemple simple d'une vidéo avec plusieurs pistes audio.

Configuration

La configuration des Dynamic Ingest requêtes est la même, que vous ingériez une vidéo, des images, des pistes audio, des WebVTT fichiers ou tous ces éléments :

URL de demande
      https://ingest.api.brightcove.com/v1/accounts/{account_id}/videos/{video_id}/ingest-requests
Authentification
L'authentification nécessite un jeton d'accès transmis en tant que Bearer jeton dans un Authorization entête:
      Authorization: Bearer {access_token}

Pour obtenir des jetons d'accès, vous aurez besoin informations d'identification du client (voir ci-dessous). Pour le processus d'obtention d'un jeton d'accès, voir Obtenir des jetons d'accès.

Remarque sur S3

Si vos fichiers source sont retirés d'un compartiment S3 protégé, vous devrez définir une stratégie de compartiment pour permettre l'accès Video Cloud aux fichiers. Pour plus de détails, reportez-vous à Utilisation Dynamic Ingest avec S3 .

Obtention d'informations

Pour obtenir un client_id et client_secret, vous devez accéder à l'interface utilisateur OAuth et enregistrer cette application :

Voici les autorisations dont vous aurez besoin :

Intégration dynamique Autorisations
Dynamic Ingest Autorisations

Vous pouvez également obtenir vos informations d'identification via CURL ou Postman - voir :

Si vous obtenez des informations d'identification directement à partir de l'API, voici les autorisations dont vous avez besoin :

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

Flux de travail

Il existe deux principaux cas d'utilisation :

  • Ingérer une nouvelle vidéo avec plusieurs pistes audio
    Nouveau flux de travail vidéo
    Nouveau flux de travail vidéo
  • Ajouter plusieurs pistes audio à une vidéo existante
    Flux de travail vidéo existant
    Flux de travail vidéo existant

Nous examinerons les détails des demandes d'API dans une section ci-dessous.

Métadonnées de la piste audio

Certains champs de métadonnées sont attachés aux pistes audio - certains d'entre eux sont définis lorsque vous ingérez les pistes, tandis que d'autres sont créés par Video Cloud. Certains de ces champs sont en lecture seule et d'autres peuvent être mis à jour par vous. Les champs de métadonnées seront détaillés ci-dessous dans le contexte des demandes d'API pertinentes, mais deux d'entre eux en particulier nécessitent quelques explications ici, car ils sont cruciaux pour déterminer comment le Brightcove Player gérera les multiples pistes audio.

language

Les language Le champ, défini pour chaque piste lors de l'ingestion, spécifie la langue de la piste. Ceci est important si la piste est un doublage de paroles prononcées dans la vidéo. Vous pouvez utiliser des codes de base tels que fr des codes avec un identifiant régional, tels que fr-CA. See the ISO Language Code Table.

variant

Les variant champ décrit le type de piste audio. Les valeurs possibles, avec des significations standard, sont :

  • main- la piste principale, généralement celle mixée dans le fichier vidéo
  • alternate- une piste audio alternative
  • commentary- une piste audio qui commente la piste vidéo
  • dub- une piste contenant une version doublée de paroles prononcées dans une langue différente
  • descriptive- la piste est descriptive du contenu vidéo d'une manière ou d'une autre

Valeurs par défaut du compte

Vous pouvez définir les valeurs par défaut du compte pour language et variant pour déterminer quelle piste audio sera traitée par défaut par Brightcove Player (la valeur par défaut peut également être remplacée en mettant à jour les métadonnées de la piste, comme nous le verrons dans une section ci-dessous). Pour définir les valeurs par défaut de votre compte, Contacter l'assistance Brightcove.

Ingérer des pistes audio

Nous allons maintenant examiner les appels d'API pour ingérer des pistes audio pour les deux cas d'utilisation décrits précédemment.

Nouvelle vidéo avec plusieurs pistes audio

Créer l'objet vidéo (CMS API)

  1. Vous pouvez ajouter plusieurs éléments de métadonnées vidéo lors de la création de l'objet vidéo, mais ici nous n'ajouterons que le minimum : un name pour la vidéo :
          {
              "name": "YOUR_VIDEO_NAME"
          }
  2. Soumettez le JSON ci-dessus (avec le texte d'espace réservé remplacé par le nom de votre vidéo) comme corps de demande pour POST demande à https://cms.api.brightcove.com/v1/accounts/YOUR_ACCOUNT_ID/videos
  3. Vous obtiendrez beaucoup de métadonnées vidéo dans la réponse, mais l'élément important ici est le id (l'identifiant de la vidéo), dont vous avez besoin pour l'étape suivante.

Ingérer les pistes vidéo et audio

Ensuite, nous ingérerons les pistes vidéo et audio (nous pourrions ajouter d'autres éléments tels que des images et des pistes de texte, mais nous resterons simples ici). La seule chose que vous pourriez trouver un peu déroutante, c'est que audio_tracks apparaît deux fois dans le JSON pour le corps de la requête :

  • Un audio_tracks objet dans le master L'objet contient des métadonnées pour la piste audio incluse dans le fichier vidéo (le cas échéant - ceci est également appelé le multiplexage dans l'audio) - cela inclura uniquement les métadonnées, sans URL pour le fichier audio, car la piste audio est déjà incluse dans le fichier vidéo. N'oubliez pas que la piste audio encodée peut être compressée en stéréo, 5.1, 7.1 tant qu'elle est conforme aux règles de Formats audio et, comme indiqué dans le Problèmes connus , au-delà de la définition d'un audio par défaut, il n'y a pas d'autre moyen de commander les pistes audio
  • Un niveau supérieur audio_tracks objet décrivant les pistes audio supplémentaires que vous ingérez - celles-ci incluront une URL pour le fichier audio, ainsi que d'autres métadonnées
  1. Les données JSON à envoyer dans le corps de la requête sont les suivantes :
          {
            "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. Envoyez le JSON ci-dessus, en remplaçant vos propres URL par les espaces réservés et en ajustant le language et variant valeurs, dans un POST demande à https://ingest.api.brightcove.com/v1/accounts/ACCOUNT_ID/videos/ID/ingest-requests (les ID voici l'identifiant vidéo renvoyé par la demande de création de l'objet vidéo)

Ajouter des pistes audio à une vidéo existante

Pour ajouter des pistes audio supplémentaires à une vidéo existante, la procédure est la même, sauf que vous n'avez pas besoin de CMS API demander la création de la vidéo, car elle existe déjà. Et dans la demande à l' Dynamic Ingest API, vous n'aurez pas besoin d'inclure l'URL pour le fichier vidéo ou audio_tracks sous master fournissant les métadonnées pour le muxed en audio. Cependant, vous souhaitez inclure les métadonnées de la piste audio multiplexée dans la vidéo existante. Il est également important de se rappeler que la piste audio doit être compressée en suivant les règles de Formats audio. Ainsi, le JSON pour la demande d'ingestion ressemblera à ceci :

      {
        "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"
          ]
      }

Champs de piste audio pour l'ingestion

Champs de piste audio
Champ Type Description
master.audio_tracks Objet[] Métadonnées pour l'audio multiplexé
master.audio_tracks.language Chaîne Code de langue pour l'audio muxé. Vous pouvez utiliser des codes de base tels que fr des codes avec un identifiant régional, tels que fr-CA. See the ISO Language Code Table.
master.audio_tracks.variant Chaîne Le type de piste audio : main|alternate|dub|commentary|descriptive (main serait généralement utilisé pour le multiplexage audio)
audio_tracks Objet Informations pour les pistes audio supplémentaires
audio_tracks.merge_with_existing Booléen Si ces pistes doivent être fusionnées avec celles existantes ou les remplacer
audio_tracks.masters Objet[] Informations pour les pistes audio individuelles
audio_tracks.masters.url Chaîne URL du fichier de piste audio
audio_tracks.masters.language Chaîne Code de la langue de la piste audio. Vous pouvez utiliser des codes de base tels que fr des codes avec un identifiant régional, tels que fr-CA. See the ISO Language Code Table.
audio_tracks.masters.variant Chaîne Le type de piste audio : main|alternate|dub|commentary|descriptive (main serait généralement utilisé pour le multiplexage audio)

Notifications

Si vous spécifiez une ou plusieurs URL de rappel (comme dans l'exemple JSON pour la requête d'ingest ci-dessus), Video Cloud enverra une notification pour chacune des pistes audio que vous ingérez. Les notifications ressembleront à ceci :

      {
        "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"
      }

Pour identifier les notifications pour les pistes audio, recherchez le language et variant champs dans la notification. Les "action": "CREATE" et "status": "SUCCESS" les champs indiquent que la piste a été ingérée avec succès.

Gestion des pistes audio

Une fois que vous avez ingéré les pistes audio, vous pouvez les gérer via le CMS API.

Obtenir toutes les métadonnées de piste audio pour une vidéo

Pour récupérer les métadonnées de toutes les pistes audio associées à une vidéo, faites un GET demande à:

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

La réponse sera un tableau d'objets contenant des métadonnées pour chaque piste audio. Voir le tableau des champs de réponse ci-dessous pour plus de détails.

      [
        {
          "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
          ]
        }
      ]

Vous pouvez également afficher ces informations dans Studio en visionnant la vidéo dans le module Média :

Informations sur les pistes audio dans Studio
Informations sur les pistes audio dans Studio

Obtenir des métadonnées pour une piste audio

Pour récupérer les métadonnées d'une piste audio associée à une vidéo, faites un GET demande à:

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

La réponse sera un objet contenant des métadonnées pour chaque piste audio. Voir le tableau des champs de réponse ci-dessous pour plus de détails.

Mise à jour des métadonnées de la piste audio

Vous pouvez mettre à jour n'importe quel champ de métadonnées inscriptibles pour une piste audio en créant un PATCH demande à:

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

Dans le corps de la requête, incluez le(s) champ(s) que vous souhaitez modifier - par exemple :

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

Supprimer une piste audio

Pour supprimer une piste audio, envoyez une demande DELETE à :

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

Notez que le code de réponse de réussite peut être 202 (Accepté) plutôt que 204 (Aucun contenu) car le processus de suppression est asynchrone et peut ne pas être terminé immédiatement.

Champs de métadonnées de piste audio
Champ Type Lecture seulement Description
id Chaîne Oui Id pour la piste, formé comme langue_variante - notez que l'id peut changer si ces valeurs sont modifiées
language Chaîne Non Code de la langue de la piste audio. Vous pouvez utiliser des codes de base tels que fr des codes avec un identifiant régional, tels que fr-CA. See the ISO Language Code Table.
variant Chaîne Non Le type de piste audio : main|alternate|dub|commentary|descriptive (main serait généralement utilisé pour le multiplexage audio)
duration Numéro Oui La longueur de la piste en millisecondes
encoding_rates Nombre[] Oui Une liste des encodages disponibles de cette piste, en bps
is_default Booléen Non Si vrai, cela sera utilisé la piste par défaut pour la lecture (remplace toute valeur par défaut au niveau du compte)

Relecture

Pour plus d'informations sur la façon dont les lecteurs Web et SDK de Brightcove gèrent plusieurs pistes audio, consultez :

Problèmes connus

Masters audio non stockés
  • Video Cloud ne stockera pas les maîtres audio
Les fichiers audio uniquement doivent être utilisés
Les pistes audio doivent être des fichiers audio uniquement sans pistes vidéo
HLSv3, HLS avec audio et vidéo dans le même segment
  • L'API de lecture ne reviendra pas HLSv3 manifeste
  • Tous HLS les manifestes incluront la vidéo/audio démultiplexé
Diffusion fluide
Les URL de streaming fluide ne seront pas disponibles.
Répartition sociale
Il n'est pas possible de sélectionner la piste audio qui sera utilisée pour la distribution. La piste incluse dans la source vidéo (le muxé en audio) sera toujours utilisée.
Studio
  • Studio affichera des informations sur les pistes audio
  • Pour ajouter des pistes audio à l'aide de Studio, consultez Plusieurs pistes audio
Classement des pistes audio au-delà de la piste "par défaut"
  • Vous pouvez choisir une piste audio par défaut CMS API par titre en définissant le is_default champ sur true
  • Il existe également un compte par défaut, qui peut être défini par le support
  • Cela n'affectera que la piste "par défaut" dans les manifestes HLS
  • Aucune autre commande n'est possible
Ingérer plus d'une piste audio à partir d'une seule source
Nous ne soutenons que une piste audio par source. Chaque piste audio doit être ingérée séparément.
Protection DRM sur les vidéos qui ne contiennent que de l'audio
Dès qu'une piste vidéo est ajoutée, la protection DRM sera activée.
Étiquettes conviviales pour l'utilisateur final
Nous ne prenons pas en charge les étiquettes personnalisées pour les pistes audio. Si vous en avez besoin, vous devrez effectuer la modification côté client via l'API Player.
Dans certains cas, le changement de piste peut rendre le Brightcove Player instable
  • Changement de piste avant que tous les segments audio aient été téléchargés
  • Lorsque la vidéo est lue à l'aide du plugin Silverlight (dans les versions d'IE inférieures à 10 ou dans toute version d'IE dans les versions de Windows inférieures à 8), plusieurs pistes audio ne sont pas prises en charge dans Silverlight.
  • Si l'audio et la vidéo ont des durées différentes, le lecteur peut s'arrêter chaque fois que la plus courte s'épuise.
Vidéo "duration"
La vidéo duration signalé par le catalogue/API de lecture peut être incorrect si les pistes audio ont des durées différentes.