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 unAuthorization
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 :
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 principaux cas d'utilisation :
- Ingérer une nouvelle vidéo avec plusieurs pistes audio
- Ajouter plusieurs pistes audio à une vidéo existante
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éoalternate
- une piste audio alternativecommentary
- une piste audio qui commente la piste vidéodub
- une piste contenant une version doublée de paroles prononcées dans une langue différentedescriptive
- 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)
- 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" }
- 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
- 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 lemaster
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
- 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" ] }
- 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
(lesID
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
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 :
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.
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é
- L'API de lecture ne reviendra pas
- 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 surtrue
- 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
- Vous pouvez choisir une piste audio par défaut CMS API par titre en définissant le
- 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.