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 unAuthorization
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 :

Vous pouvez également obtenir vos informations d'identification via CURL ou Postman - voir :
- Obtenir les informations d'identification du client CURL
- Obtenir les informations d'identification du client Postman
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 - Ajouter plusieurs pistes audio à une vidéo existante
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éoalternate
- une piste audio alternativecommentary
- une piste audio qui fournit des commentaires sur la piste vidéodub
- une piste contenant une version doublée de mots parlés dans une autre languedescriptive
- 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)
- 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" }
- 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
- 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
- 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" ] }
- Envoyez le JSON ci-dessus, en remplaçant vos propres URL par les espaces réservés et en ajustant le
language
etvariant
valeurs, dans unPOST
demande àhttps://ingest.api.brightcove.com/v1/accounts/ACCOUNT_ID/videos/ID/ingest-requests
(laID
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
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 :

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.
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.
- L'API de lecture ne retournera pas les
- 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 surtrue
- 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
- Vous pouvez choisir une piste audio par défaut CMS API par titre en définissant le
- 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.