assistance Contacter le support | Étatétat du système du système
Contenu de la page

    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 s'avérer utile dans quelques scénarios clés :

    • Lecture de la même vidéo dans différentes langues pour une portée globale plus large 
    • Fournir des informations audio avec des descriptions pour les personnes ayant des difficultés visuelles

    Notez que l'ajout de pistes audio peut également être effectué dans Studio. Pour plus de détails, reportez-vous à la section Ajout de pistes audio aux vidéos à l'aide du module multimédia .

    Formats vidéo supportés

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

    Exemple

    Voici 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 passé en tant que Bearer jeton dans un Authorization en-tête :
          Authorization: Bearer {access_token}

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

    Note 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 .

    Obtenir des informations

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

    Voici les autorisations dont vous aurez besoin :

    Autorisations d'ingestion dynamique
    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 cas d'utilisation principaux :

    • 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 allons examiner les détails des requêtes API dans une section ci-dessous.

    Métadonnées de 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 requêtes API pertinentes, mais deux particuliers nécessitent une explication ici, car ils sont cruciaux pour déterminer comment le Brightcove Player traitera les multiples pistes audio.

    language

    Le language champ, défini pour chaque piste pendant l'ingestion, spécifie la langue de la piste. Ceci est important si la piste est un dub de mots parlés dans la vidéo. La valeur de ce champ sera un code à deux lettres comme en ou hi. Pour obtenir la liste complète des codes linguistiques, consultez les Subtag valeurs de http://www.iana.org/assignments/language-subtag-registry/language-subtag-registry.

    variant

    Le 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 qui est muxée dans le fichier vidéo
    • alternate - une piste audio alternative
    • commentary - une piste audio qui fournit des commentaires sur la piste vidéo
    • dub - une piste contenant une version doublée de mots parlés dans une autre langue
    • 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 language et variant déterminer quelle piste audio sera traitée par défaut par le Brightcove Player (la valeur par défaut peut également être remplacée par la mise à jour des métadonnées de piste, comme nous le verrons dans une section ci - dessous). Pour définir les valeurs par défaut de votre compte, contactez le support technique Brightcove.

    Ingérer des pistes audio

    Maintenant, nous allons 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 lorsque vous créez l'objet vidéo, mais ici nous allons simplement ajouter le minimum : a name pour la vidéo :
            {
                "name": "YOUR_VIDEO_NAME"
            }
    2. Soumettez le JSON ci-dessus (avec le texte de l'espace réservé remplacé par votre nom vidéo) en tant que corps de POST requête à 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 vidéo), dont vous avez besoin pour l'étape suivante.

    Ingérer les pistes vidéo et audio

    Ensuite, nous allons ingérer les pistes vidéo et audio (nous pourrions ajouter d'autres ressources comme des images et des pistes de texte, mais nous allons garder cela simple ici). La seule chose que vous pouvez trouver un peu déroutant est qu' audio_tracks apparaît deux fois dans le JSON pour le corps de la requête :

    • Un audio_tracks objet dans l' master objet contient des métadonnées pour la piste audio incluse dans le fichier vidéo (le cas échéant - cela est également appelé le muxed in audio) - cela inclut uniquement les métadonnées, sans URL pour le , puisque la piste audio est déjà incluse dans le fichier vidéo
    • audio_tracks Objet de niveau supérieur décrivant les pistes audio supplémentaires que vous ingérez - celles-ci incluent 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://learning-services-media.brightcove.com/videos/Great_Blue_Heron.mp4",
                  "audio_tracks": [
                      {
                          "language": "en",
                          "variant": "main"
                      }
                  ]
              },
              "audio_tracks": {
                  "merge_with_existing": true,
                  "masters": [
                      {
                          "url": "http://learning-services-media.brightcove.com/audio/celtic_lullaby.m4a",
                          "language": "en",
                          "variant": "alternate"
                      },
                      {
                          "url": "http://learning-services-media.brightcove.com/audio/audio1.m4a",
                          "language": "en",
                          "variant": "commentary"
                      }
                  ]
              },
                "profile": "BoltIngestProfile",
                "capture-images": true,
                "callbacks": [
                    "http://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 (la ID voici l'ID 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. Toutefois, vous souhaitez inclure les métadonnées de la piste audio muxed dans la vidéo existante. Donc, le JSON pour la requête ingest ressemblera à ceci :

          {
            "audio_tracks": {
                "merge_with_existing": true,
                "masters": [
                    {
                        "url": "http://learning-services-media.brightcove.com/audio/celtic_lullaby.m4a",
                        "language": "en",
                        "variant": "alternate"
                    },
                    {
                        "url": "http://learning-services-media.brightcove.com/audio/audio1.m4a",
                        "language": "en",
                        "variant": "commentary"
                    }
                ]
            },
              "profile": "BoltIngestProfile",
              "capture-images": true,
              "callbacks": [
                  "http://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 le muxed en audio
    master.audio_tracks.language Chaîne Code de langue pour l'audio muxed dans les sous-balises de http://www.iana.org/assignments/language-subtag-registry/language-subtag-registry
    master.audio_tracks.variant Chaîne Le genre de piste audio : main|alternate|dub|commentary|descriptive(main serait généralement utilisé pour le muxed en 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 dans des pistes 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 langue pour la piste audio à partir des sous-balises de http://www.iana.org/assignments/language-subtag-registry/language-subtag-registry
    audio_tracks.masters.variant Chaîne Le genre de piste audio : main|alternate|dub|commentary|descriptive(main serait généralement utilisé pour le muxed en 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 des pistes audio, recherchez le language et variant champs dans la notification. le "action": "CREATE" et "status": "SUCCESS" les champs indiquent que la trace a été intégré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, GET demandez à :

          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 visualisant la vidéo dans le module Media :

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

    Obtenir les métadonnées pour une piste audio

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

          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 audio

    Vous pouvez mettre à jour n'importe quel champ de métadonnées accessible en écriture pour une piste audio en PATCH demandant à :

          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 ou les champs que vous souhaitez modifier, par exemple :

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

    Supprimer une piste audio

    Pour supprimer une piste audio, envoyez une requête 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 succès 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 audio piste
    Champ Type Lecture seule Description
    id Chaîne oui Id pour la piste, formé comme language_variant - notez que l'id peut changer si ces valeurs sont modifiées
    language Chaîne Non Code de langue pour la piste audio à partir des sous-balises de http://www.iana.org/assignments/language-subtag-registry/language-subtag-registry
    variant Chaîne Non Le genre de piste audio : main|alternate|dub|commentary|descriptive(main serait généralement utilisé pour le muxed en audio)
    duration Nombre 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 elle est true, cette piste sera utilisée par défaut pour la lecture (remplace toute valeur par défaut au niveau du compte)

    Lecture

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

    Problèmes connus

    Masques audio non stockés
    • Video Cloud ne stockera pas les maîtres audio
    • Si vous retranscodez la vidéo depuis le maître vidéo, les pistes audio supplémentaires seront perdues et doivent être réajoutées à l'aide de la méthode Ajouter des pistes audio à une vidéo existante décrite ci-dessus
    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 retournera pas les HLSv3 manifestes
    • Tous les HLS manifestes comprendront la vidéo/audio démuxée.
    Smooth Streaming
    Les URL Smooth Streaming ne seront pas disponibles.
    Répartition sociale
    Il n'est pas possible de sélectionner quelle piste audio sera utilisée pour la distribution. La piste incluse dans la source vidéo (le muxed en audio) sera toujours utilisée.
    Studio
    • Studio affichera des informations sur les pistes audio
    • Pour ajouter des pistes audio à l'aide de Studio, reportez-vous à la section 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 y a aussi 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
    Ingréter plus d'une piste audio à partir d'une seule source
    Nous ne prenons en charge qu' une seule piste audio par source ingérée. Chaque piste audio doit être ingérée séparément.
    Protection DRM sur les vidéos qui incluent uniquement l'audio
    Dès qu'une piste vidéo est ajoutée, la protection DRM est activée.
    Étiquettes conviviales
    Nous ne prenons pas en charge les étiquettes personnalisées pour les pistes audio. Si vous avez besoin de cela, vous devrez effectuer la modification côté client via l'API du lecteur.
    Dans certains cas, le changement de piste peut entraîner l'instabilité du lecteur Brightcove
    • Changement de piste avant le téléchargement de tous les segments audio
    • Lorsque la vidéo est lue à l'aide du plugin Silverlight (dans les versions d'IE inférieures à 10, ou n'importe quelle version d'IE dans les versions de Window inférieure à 8) - plusieurs pistes audio ne sont pas prises en charge dans Silverlight.
    • Si les durées audio et vidéo sont différentes, le lecteur peut s'arrêter chaque fois que la plus courte est épuisée.
    Vidéo "duration»
    La vidéo duration signalée par l'API Catalog/lecture peut être incorrecte si les pistes audio ont des durées différentes.