Introduction
L'API de lecture est une API à faible latence destinée à être utilisée côté client pour extraire des données de vidéos ou de listes de lecture à partir de pages Web ou d'applications mobiles. Il ne s'agit pas d'une API de gestion des médias générale à utiliser pour intégrer Video Cloud avec votre CMS ou d'autres systèmes - pour cela, vous devez utiliser l' API CMS.
Les résultats de l'API de lecture sont filtrés pour renvoyer uniquement les vidéos lisibles (état = actif, ingestion complete flag = true, et dans les données/heure correctes si planifié). Cela signifie que le lecteur pourra lire la vidéo dès qu'un rendu existe, même si d'autres sont encore en cours de traitement. Si vous avez besoin de récupérer des vidéos qui ne sont pas actuellement lisibles, vous devez à nouveau utiliser l' API CMS à la place.
Sachez également que pour optimiser les performances, les données vidéo accédées par l'API de lecture sont mises en cache pendant une courte période de temps. La durée d'un identifiant de jeu de données particulier mis en cache varie, mais peut durer jusqu'à 20 minutes.
Voir également la référence de l'API.
Cas d'utilisation
le Lecteur Brightcove et le Lecteurs SDK Brightcove inclure des méthodes de catalogue identiques aux méthodes de l'API de lecture, et pour la plupart, vous pouvez simplement les utiliser si vous récupérez simplement des vidéos ou des listes de lecture au moment de l'exécution pour les lire.
Toutefois, vous pouvez fournir une vue de la vidéo ou des listes de lecture dans un écran d'application mobile où aucun lecteur n'est présent.
En outre, il peut y avoir des occasions où vous voulez récupérer des vidéos ou des listes de lecture pour afficher des informations à leur sujet, sans avoir de lecteur sur l'écran, comme page de destination d'un portail vidéo, par exemple.
L'API de lecture est utile dans ces cas.
Informations générales
URL de base
L'URL de base de l'API de lecture est :
https://edge.api.brightcove.com/playback/v1
Chemin du compte
Dans tous les cas, des demandes seront faites pour un compte Video Cloud spécifique. Ainsi, vous ajouterez toujours le terme accounts
suivi de votre identifiant de compte à l'URL de base :
https://edge.api.brightcove.com/playback/v1/accounts/{account_id}
Authentification
Les demandes sont authentifiées par une clé de stratégie, qui peut être transmise de l'une des trois manières suivantes :
- Dans un argument à un
Accept
en-tête :Accept: application/json;pk={policy_key}
Il s'agit de la méthode recommandée pour un client basé sur un navigateur, car elle permet à la demande d'aller de l'avant sans demande supplémentaire dans le cadre de la vérification « pré-vol » CORS du navigateur. Cela permet d'économiser la latence lors de la première demande du navigateur.
- Dans un
Authorization
en-tête utilisant le mot-clé realmBCOV-Policy
:Authorization: BCOV-Policy {policy_key}
- Dans un
BCOV-Policy
en-tête :BCOV-Policy: {policy_key}
Obtention d'une clé de stratégie
Il y a trois façons d'obtenir une clé de stratégie :
- Chaque joueur Brightcove en reçoit automatiquement un. Vous trouverez des instructions pour obtenir la clé de stratégie d'un joueur dans ce document. Étant donné que les clés de stratégie sont valables à l'échelle du compte, vous pouvez l'utiliser que ce lecteur soit incorporé ou non sur la page.
- Vous pouvez générer une clé de stratégie de base à l'aide des touches de stratégie Démarrage rapide
- Vous pouvez faire une demande à l' API Policy
Authentification jeton
L'authentification par jeton pour le contenu HLS et DASH est prise en charge. Si vous avez besoin d'une authentification par jeton, contactez votre responsable de compte pour l'activer pour votre compte.
Évitez les URL codées en dur
Les URL des miniatures, des affiches, des fichiers vidéo et d'autres supports ne doivent jamais être codées en dur dans vos pages ou applications. Le Playback API renvoie la dernière version mise en cache des URL pour les fichiers multimédias, mais les URL elles-mêmes sont sujettes à changement. Vous devez utiliser les CMS API (ou Playback API ) requêtes pour récupérer ces URL chaque fois que la page se charge, ou les mettre en cache pendant au plus six heures.
Mise en cache des URL vidéo et image
Vous pouvez mettre en cache les URL des vidéos et des images afin d'améliorer les performances des pages, mais le cache doit être actualisé régulièrement. Si vous mettez en cache les URL que vous récupérez pour améliorer la performance de vos pages, assurez-vous de rafraîchir la mémoire cache en répétant les appels de l'API au moins une fois toutes les six heures.
Méthodes
L'API ne prend en charge que les requêtes GET suivantes, des types suivants :
Demandes vidéo
Un seul objet vidéo peut être récupéré à l'aide de l'ID vidéo ou de référence.
Obtenir la vidéo par ID
Point de terminaison
https://edge.api.brightcove.com/playback/v1/accounts/{account_id}/videos/{video_id}
Exemple
https://edge.api.brightcove.com/playback/v1/accounts/57838016001/videos/38467382999
Exemple de réponse
{
"account_id": "107767373999",
"ad_keys": null,
"created_at": "2010-07-12T22:37:34.760Z",
"description": "Avatar_MakingAScene_Featurette",
"duration": 595560,
"id": "38467382999",
"long_description": null,
"name": "Avatar_MakingAScene_Featurette",
"published_at": "2010-07-12T22:37:34.760Z",
"reference_id": "AvatarMakingShort",
"text_tracks": [],
"updated_at": "2010-07-12T22:54:29.666Z",
"cue_points": [
{
"id": "111637107001",
"name": "Pre-roll",
"type": "AD",
"time": 0,
"metadata": null,
"force_stop": false
}
],
"custom_fields": {
"moretext": "this is the first video uploaded",
"mylist": "abc"
},
"link": {
"text": "Full Dvd at Amazon",
"url": "http://www.amazon.com/Avatar-Sam-Worthington/dp/B002VPE1AW"
},
"tags": [
"copied"
],
"poster_sources": [
{
"src": "http://brightcove04.o.brightcove.com/107767373999/107767373999_111728861001_vs-111727994001.jpg?pubId=107767373999&videoId=38467382999"
}
],
"thumbnail_sources": [
{
"src": "http://brightcove04.o.brightcove.com/107767373999/107767373999_111728862001_th-111727994001.jpg?pubId=107767373999&videoId=38467382999"
}
],
"poster": "http://brightcove04.o.brightcove.com/107767373999/107767373999_111728861001_vs-111727994001.jpg?pubId=107767373999&videoId=38467382999",
"thumbnail": "http://brightcove04.o.brightcove.com/107767373999/107767373999_111728862001_th-111727994001.jpg?pubId=107767373999&videoId=38467382999",
"sources": [
{
"avg_bitrate": 379000,
"width": 320,
"duration": 595560,
"size": 28196307,
"stream_name": "mp4:107767373999/107767373999_111728840001_Avatar-MakingAScene-Featurette.mp4?__nn__=1497926354001&slist=107767373999/&auth=daEciavcicRbhbtdSaBdBdVbXd0aUdTcMaX-bvRrSa-hca-slyCzrux_zJAq_HFCB_EvE&aifp=bcosuds",
"codec": "H264",
"asset_id": "111728840001",
"container": "MP4",
"height": 180,
"app_name": "rtmp://cp150446.edgefcs.net/ondemand"
},
{
"avg_bitrate": 379000,
"width": 320,
"src": "http://uds.ak.o.brightcove.com/107767373999/107767373999_111728840001_Avatar-MakingAScene-Featurette.mp4?pubId=107767373999&videoId=38467382999",
"size": 28196307,
"height": 180,
"duration": 595560,
"container": "MP4",
"codec": "H264",
"asset_id": "111728840001"
}, ... 6 more sources ...
]
}
Obtenir la vidéo par ID de référence
Point de terminaison
https://edge.api.brightcove.com/playback/v1/accounts/{account_id}/videos/ref:{reference_id}
Exemple
https://edge.api.brightcove.com/playback/v1/accounts/57838016001/videos/ref:nature_2010-07-12
Exemple de réponse
{
"account_id": "107767373999",
"ad_keys": null,
"created_at": "2010-07-12T22:37:34.760Z",
"description": "Avatar_MakingAScene_Featurette",
"duration": 595560,
"id": "38467382999",
"long_description": null,
"name": "Avatar_MakingAScene_Featurette",
"published_at": "2010-07-12T22:37:34.760Z",
"reference_id": "nature_2010-07-12",
"text_tracks": [],
"updated_at": "2010-07-12T22:54:29.666Z",
"cue_points": [
{
"id": "111637107001",
"name": "Pre-roll",
"type": "AD",
"time": 0,
"metadata": null,
"force_stop": false
}
],
"custom_fields": {
"moretext": "this is the first video uploaded",
"mylist": "abc"
},
"link": {
"text": "Full Dvd at Amazon",
"url": "http://www.amazon.com/Avatar-Sam-Worthington/dp/B002VPE1AW"
},
"tags": [
"copied"
],
"poster_sources": [
{
"src": "http://brightcove04.o.brightcove.com/107767373999/107767373999_111728861001_vs-111727994001.jpg?pubId=107767373999&videoId=38467382999"
}
],
"thumbnail_sources": [
{
"src": "http://brightcove04.o.brightcove.com/107767373999/107767373999_111728862001_th-111727994001.jpg?pubId=107767373999&videoId=38467382999"
}
],
"poster": "http://brightcove04.o.brightcove.com/107767373999/107767373999_111728861001_vs-111727994001.jpg?pubId=107767373999&videoId=38467382999",
"thumbnail": "http://brightcove04.o.brightcove.com/107767373999/107767373999_111728862001_th-111727994001.jpg?pubId=107767373999&videoId=38467382999",
"sources": [
{
"avg_bitrate": 379000,
"width": 320,
"duration": 595560,
"size": 28196307,
"stream_name": "mp4:107767373999/107767373999_111728840001_Avatar-MakingAScene-Featurette.mp4?__nn__=1497926354001&slist=107767373999/&auth=daEciavcicRbhbtdSaBdBdVbXd0aUdTcMaX-bvRrSa-hca-slyCzrux_zJAq_HFCB_EvE&aifp=bcosuds",
"codec": "H264",
"asset_id": "111728840001",
"container": "MP4",
"height": 180,
"app_name": "rtmp://cp150446.edgefcs.net/ondemand"
},
{
"avg_bitrate": 379000,
"width": 320,
"src": "http://uds.ak.o.brightcove.com/107767373999/107767373999_111728840001_Avatar-MakingAScene-Featurette.mp4?pubId=107767373999&videoId=38467382999",
"size": 28196307,
"height": 180,
"duration": 595560,
"container": "MP4",
"codec": "H264",
"asset_id": "111728840001"
}, ... 6 more sources ...
]
}
Rechercher vidéos
Vous devez utiliser une clé de stratégie activée pour la recherche, lorsque vous recherchez des vidéos à l'aide de l'API Lecture. Pour plus d'informations, consultez le document de référence de l'API de lecture .
Paramètres
Notez que tous les paramètres sont facultatifs. Ils ne s'appliquent qu'aux GET Videos
demandes.
Paramètre | Description |
---|---|
q |
Chaîne de requête pour les recherches - pour plus de détails, voir le guide de recherche |
limit |
Nombre de vidéos à renvoyer - doit être un entier compris entre 1 et 100. Par défaut : 20 |
offset |
Nombre de vidéos à ignorer (pour les résultats de pagination). Doit être un entier positif. Par défaut : 0 |
sort |
Chaîne qui spécifie le champ à trier.- Commencez par trier décroissant.Si une valeur pour q est fournie, alors le tri par défaut est par « score » (pertinence des résultats de recherche par rapport à la requête d'origine).Si aucune valeur pour n' q est fournie, le tri par défaut est updated_at décroissant.Les champs suivants sont valides pour le tri: name , reference_id , created_at , published_at , updated_at , schedule_starts_at , schedule_ends_at , state , plays_total , et plays_trailing_week Pour plus de détails, consultez le Obtenir des vidéos section de la référence de l'API Playback |
Utilisation des paramètres de recherche
Brightcove's Playback API fournit un moyen programmatique de rechercher des vidéos dans votre Video Cloud bibliothèque.
Pour effectuer des recherches de base et complexes sur vos données vidéo, vous utiliserez le q
paramètre :
https://edge.api.brightcove.com/playback/v1/accounts/1752604051111/videos?q={search terms}
Pour plus d'informations sur la recherche de vidéos, consultez le document Rechercher des vidéos .
Résultats de pagination
Utilisez le limit
paramètre pour spécifier le nombre d'éléments que vous souhaitez renvoyer sur une demande - jusqu'à 100. Vous pouvez ensuite utiliser le offset
paramètre pour parcourir les jeux de résultats qui sont plus grands que le limit
. offset
Le nombre d'éléments à ignorer.
Par exemple, la recherche suivante renvoie 51-75 vidéos du jeu total de résultats, en supposant que le jeu de résultats total comporte au moins 75 vidéos :
/videos?q=updated_at:2014-01-01..2014-06-30&limit=25&offset=50
le limit
et offset
Les paramètres ne peuvent être utilisés que pour les vidéos.
Meilleures pratiques de pagination
Lors de la pagination de votre jeu de résultats à partir de l'API de lecture, il est recommandé de suivre les étapes suivantes :
- Utilisez le
limit
etoffset
paramètres pour renvoyer des groupes de données à partir de votre jeu de résultats./accounts/578380111111/videos?q=tags:nature&limit=20&offset=50
- À chaque réponse, vous verrez que le
count
champ affiche toujours le nombre maximal de vidéos dans votre jeu de résultats.{"count": 171, "videos": [ ... ] }
- Le nombre total
count
de vidéos de votre première demande peut être utilisé pour déterminer combien de pages supplémentaires vous devrez demander.
Vous pouvez également interroger lacount
valeur avec chaque réponse et continuer jusqu'à ce que lecount
soit inférieur ou égal à la taille de page fois la valeurlimit
.count <= page-number * limit
Tri des résultats vidéo
Utilisez le paramètre sort=field_name
pour spécifier comment les résultats doivent être triés. Vous pouvez trier les champs vidéo suivants :[1-1]
- name
- reference_id
- created_at
- published_at
- updated_at
- schedule_starts_at (note : ceci est le champ de tri - le champ de recherche est
schedule.starts_at
) - schedule_ends_at (note : ceci est le champ de tri - le champ de recherche est
schedule.ends_at
) - state
- plays_total[1-2]
- plays_trailing_week[1-2]
Notes
- [ 1-1] Si vous ne fournissez pas de valeur de tri pour un appel de recherche vidéo, les résultats seront triés par pertinence. Si vous ne fournissez pas de valeur de tri pour un appel
GET
vidéo, les résultats seront triés parupdated_at
ordre décroissant. - [ 1-2] Vous pouvez trier sur
plays_total
ouplays_trailing_week
, mais ces champs ne sont pas inclus dans les résultats
Toutes les vidéos et les grands ensembles de données
Si vous récupérez toutes les vidéos de votre compte, ou un grand nombre de vidéos, vous devez être conscient de certaines choses :
- Vous pouvez être tenté d'utiliser le plus grand permis
limit
(100), mais il est préférable de récupérer des vidéos par lots de 25 ou moins afin de minimiser la possibilité que les demandes d'API soient épuisées - Au fur et à mesure que vous parcourez des ensembles de données volumineux, il est possible que les données vidéo soient mises à jour pendant l'opération, ce qui pourrait entraîner le déplacement des éléments dans les réponses :
- Vous pouvez voir un élément répété sur les pages successives
- Un élément peut être manqué, car il a été déplacé vers un jeu de réponses précédent
Pour tenir compte de la première possibilité, votre application doit dédupliquer la liste complète des éléments une fois que vous avez terminé la récupération des vidéos. Pour gérer la deuxième possibilité, vous devez comparer le nombre total d'éléments récupérés (après dédupage) au nombre que vous attendiez, puis réexécuter les requêtes, trier les résultats par last_modified_date (décroissant) - vous ne devriez pas avoir besoin de récupérer plus d'un lot pour récupérer les éléments manqués.
- Vous pouvez réduire la probabilité des scénarios de l'élément précédent en triant les résultats renvoyés de manière appropriée. Le tri par défaut par pertinence pour les recherches est basé sur un algorithme complexe qui regarde des combinaisons de mots-clés, de balises et de valeurs de champ personnalisées. Si vous recherchez des vidéos basées sur plusieurs mots-clés, balises et/ou champs personnalisés, trier par pertinence correspond exactement à ce que vous voulez. Cependant, si vous essayez simplement de récupérer la totalité ou une grande partie de vos vidéos, la définition explicite du
sort
paramètre vous donnera plus de contrôle sur l'ordre des éléments retournés.
Obtenir des vidéos
Point de terminaison
https://edge.api.brightcove.com/playback/v1/accounts/{account_id}/videos
Exemple
https://edge.api.brightcove.com/playback/v1/accounts/57838016001/videos?q=tags:nature,name:nature
Exemple de réponse
{
"count": 123,
"videos":
[
{<video1 fields>},
{<video2 fields>},
...
]
}
Réponse d'erreur
si vous tentez d'utiliser le point de terminaison Obtenir des vidéos avec une clé de stratégie qui n'est PAS activée pour la recherche, le message d'erreur suivant s'affiche à partir de l'API de lecture :
[
{
"api_call": "search",
"error_subcode": "API",
"error_code": "ACCESS_DENIED",
"message": "Access to this resource is forbidden by access policy."
}
]
Trouver des vidéos connexes
L'API Lecture vous permet de rechercher dans votre compte les vidéos liées à la vidéo spécifiée. En fonction du name
et short description
de la vidéo spécifiée, l'API recherchera les correspondances partielles dans les champs suivants :
name
short description
long description
tags
Si la géo-restriction est en vigueur, il se peut que vous ne receviez pas une page complète des résultats.
Paramètres
Les paramètres d'URL suivants peuvent être utilisés pour les demandes de vidéos liées à GET :
Paramètre | Description |
---|---|
limit |
Nombre de vidéos à renvoyer (par défaut = 20 ; maximum = 100) |
ad_config_id |
Ajoutez votre ad_config_id pour renvoyer des vidéos avec SSAI |
Par défaut, la réponse contiendra jusqu'à 20 vidéos. Vous pouvez utiliser le limit
paramètre pour renvoyer jusqu'à un maximum de 100 vidéos, avec un coût de latence accru.
Notez qu'il n'y a pas de offset
paramètre lors de la recherche de vidéos associées, de sorte que vous ne pourrez pas parcourir les résultats de vos vidéos.
Obtenir des vidéos associées à l'aide de l'identifiant
Point de terminaison
https://edge.api.brightcove.com/playback/v1/accounts/{account_id}/videos/{video_id}/related
Exemple
https://edge.api.brightcove.com/playback/v1/accounts/1752604059001/videos/5565662146001/related
Obtenir des vidéos associées en utilisant l'ID de référence
Point de terminaison
https://edge.api.brightcove.com/playback/v1/accounts/{account_id}/videos/ref:{reference_id}/related
Exemple
https://edge.api.brightcove.com/playback/v1/accounts/1752604059001/videos/ref:nature/related
Exemple de réponse
Dans la réponse ci-dessous, notez qu'il n'y a pas de count
champ, contrairement à la réponse de recherche vidéo .
{
"videos":
[
{<video1 fields>},
{<video2 fields>},
...
]
}
Réponse d'erreur
Si vous tentez d'utiliser le point de terminaison associé de recherche avec une clé de stratégie qui n'est PAS activée pour la recherche, le message d'erreur suivant s'affiche à partir de l'API de lecture :
[
{
"api_call": "search",
"error_subcode": "API",
"error_code": "ACCESS_DENIED",
"message": "Access to this resource is forbidden by access policy."
}
]
Demande vidéo avec SSAI
Même si vous n'utilisez PAS un lecteur Web Brightcove ou les SDK natifs Brightcove dans votre application, vous pouvez toujours utiliser l'insertion d'annonces côté serveur (SSAI) avec votre propre lecteur.
Obtenir une vidéo avec SSAI
Pour renvoyer une vidéo avec SSAI, ajoutez votre identifiant de configuration d'annonce en tant que paramètre d'URL à votre demande d'API de lecture. Avec cette demande, vous pouvez utiliser un ID vidéo ou un ID de référence vidéo.
Point de terminaison avec paramètre d'URL
Ajoutez votre ad_config_id
à la fin de la demande d'API de lecture :
https://edge.api.brightcove.com/playback/v1/accounts/{account_id}/videos/{video_id}?ad_config_id={ad_config_id}
Exemple
https://edge.api.brightcove.com/playback/v1/accounts/1752604059001/videos/5565662146001?ad_config_id=1234abcd
Dans l'exemple de réponse ci-dessous, vous remarquerez ce qui suit :
- La réponse est similaire à celle si vous n'avez pas inclus d'ID de configuration d'annonce.
- Les éléments du
sources
tableau contiendront une nouvelle propriété appeléevmap
. - Si vous souhaitez savoir où se trouvent les annonces dans le contenu, vous pouvez lire le fichier VMAP lié dans la
vmap
propriété. - La
src
propriété dans lesources
tableau contiendra l'URL de la source HLS ou DASH. C'est la même chose que la réponse lorsqu'aucun ID de configuration d'annonce n'est utilisé, mais les annoncessrc
seront cousues avec le contenu principal.
Exemple de réponse
{
"description": "The story of a giant rabbit with a heart bigger than himself. ",
"poster_sources": [
{
"src": "https://cf-images.us-east-1.prod.boltdns.net/v1/jit/3723496277001/dd5bd69c-e962-4a43-9dbd-94faaaba1785/main/1280x720/5m17s130ms/match/image.jpg"
}
],
"tags": [],
"cue_points": [],
"custom_fields": {},
"account_id": "3723496277001",
"sources": [
{
"ext_x_version": "4",
"vmap": "http://ssaiplayback.prod.boltdns.net/playback/once/v1/vmap/hls/v4/clear/3723496277001/7a3316d9-1b06-4d62-bec8-3919b43fffbb/dd5bd69c-e962-4a43-9dbd-94faaaba1785/content.vmap?bc_token=NTllMTMxYjNfMTdkOTY2YThhNjU5MDk5ZTQ3NDBkNmUxOTYyOGRkNzM0ZjBiM2RjMGEwOThjOGFkYjk1MWQxMzFmNGYzMjA5YQ%3D%3D",
"type": "application/x-mpegURL",
"src": "http://ssaiplayback.prod.boltdns.net/playback/once/v1/hls/v4/clear/3723496277001/7a3316d9-1b06-4d62-bec8-3919b43fffbb/dd5bd69c-e962-4a43-9dbd-94faaaba1785/master.m3u8?bc_token=NTllMTMxYjNfZGM5ZDg0NGM2ZGJjZDcxZTFjOGYyODBlMzM2NmNmMmJkMWNhZDczNWViNzRiMjIwNjg5MjkzZGM0ZmJlMTc1Yw%3D%3D"
},
...
],
"created_at": "2017-05-15T17:09:11.171Z"
}
Exiger ad_config_id
À l'aide de l'API Policy, vous pouvez créer une clé de stratégie qui vous oblige à inclure le paramètre ad_config_id
URL lorsque vous effectuez des requêtes à l'API de lecture. Pour plus d'informations sur la définition de cette fonctionnalité, reportez-vous au document Référence de l'API de stratégie .
Lorsque la clé de stratégie est définie pour exiger un ad_config_id
, et que vous ne l'ajoutez pas à une demande d'API de lecture, vous obtiendrez l'erreur suivante :
[
{
"error_subcode": "AD_CONFIG",
"error_code": "ACCESS_DENIED",
"message": "Missing required ad_config_id parameter"
}
]
Demandes de playlist
Un objet vidéo de playlist peut être récupéré à l'aide de l'identifiant de la playlist ou de son identifiant de référence.
Paramètres
Les paramètres d'URL suivants peuvent être utilisés pour les demandes de sélection
Paramètre | Description |
---|---|
limite | Nombre de vidéos à renvoyer (par défaut = 20 ; maximum = 100) |
décalage | nombre de vidéos à ignorer (depuis le début de la playlist ; par défaut = 0) |
Par exemple, ces paramètres ajoutés à votre demande - ?limit=40&offset=20 - renverrait des vidéos 21-60 dans la playlist (en supposant qu'il y en ait beaucoup).
Obtenir la liste de lecture par ID
Point de terminaison
https://edge.api.brightcove.com/playback/v1/accounts/{account_id}/playlists/{playlist_id}
Exemple
https://edge.api.brightcove.com/playback/v1/accounts/57838016001/playlists/38467382999
Exemple de réponse
{
"account_id": "107767373999",
"created_at": "2010-07-12T22:43:30.290Z",
"description": null,
"id": "111592530001",
"name": "Play One",
"reference_id": null,
"type": "EXPLICIT",
"updated_at": "2010-07-12T22:51:25.055Z",
"videos": [
{
"description": "Avatar_MakingAScene_Featurette",
"poster_sources": [
{
"src": "http://brightcove04.o.brightcove.com/107767373999/107767373999_111728861001_vs-111727994001.jpg?pubId=107767373999&videoId=38467382999"
}
],
"tags": [
"copied"
],
"cue_points": [
{
"id": "111637107001",
"name": "Pre-roll",
"type": "AD",
"time": 0,
"metadata": null,
"force_stop": false
}
],
"custom_fields": {
"moretext": "this is the first video uploaded",
"mylist": "abc"
},
"account_id": "107767373999",
"sources": [
{
"avg_bitrate": 379000,
"width": 320,
"duration": 595560,
"size": 28196307,
"stream_name": "mp4:107767373999/107767373999_111728840001_Avatar-MakingAScene-Featurette.mp4?__nn__=1497926354001&slist=107767373999/&auth=daEciavcicRbhbtdSaBdBdVbXd0aUdTcMaX-bvRrSa-hca-slyCzrux_zJAq_HFCB_EvE&aifp=bcosuds",
"codec": "H264",
"asset_id": "111728840001",
"container": "MP4",
"height": 180,
"app_name": "rtmp://cp150446.edgefcs.net/ondemand"
},
{
"avg_bitrate": 379000,
"width": 320,
"src": "http://uds.ak.o.brightcove.com/107767373999/107767373999_111728840001_Avatar-MakingAScene-Featurette.mp4?pubId=107767373999&videoId=38467382999",
"size": 28196307,
"height": 180,
"duration": 595560,
"container": "MP4",
"codec": "H264",
"asset_id": "111728840001"
},
{
"avg_bitrate": 267000,
"width": 320,
"duration": 595560,
"size": 19894997,
"stream_name": "mp4:107767373999/107767373999_111728852001_Avatar-MakingAScene-Featurette.mp4?__nn__=1497926354001&slist=107767373999/&auth=daEciavcicRbhbtdSaBdBdVbXd0aUdTcMaX-bvRrSa-hca-slyCzrux_zJAq_HFCB_EvE&aifp=bcosuds",
"codec": "H264",
"asset_id": "111728852001",
"container": "MP4",
"height": 180,
"app_name": "rtmp://cp150446.edgefcs.net/ondemand"
},
{
"avg_bitrate": 267000,
"width": 320,
"src": "http://uds.ak.o.brightcove.com/107767373999/107767373999_111728852001_Avatar-MakingAScene-Featurette.mp4?pubId=107767373999&videoId=38467382999",
"size": 19894997,
"height": 180,
"duration": 595560,
"container": "MP4",
"codec": "H264",
"asset_id": "111728852001"
},
{
"avg_bitrate": 549000,
"width": 480,
"duration": 595567,
"size": 40889436,
"stream_name": "mp4:107767373999/107767373999_111728860001_Avatar-MakingAScene-Featurette.mp4?__nn__=1497926354001&slist=107767373999/&auth=daEciavcicRbhbtdSaBdBdVbXd0aUdTcMaX-bvRrSa-hca-slyCzrux_zJAq_HFCB_EvE&aifp=bcosuds",
"codec": "H264",
"asset_id": "111728860001",
"container": "MP4",
"height": 268,
"app_name": "rtmp://cp150446.edgefcs.net/ondemand"
},
{
"avg_bitrate": 549000,
"width": 480,
"src": "http://uds.ak.o.brightcove.com/107767373999/107767373999_111728860001_Avatar-MakingAScene-Featurette.mp4?pubId=107767373999&videoId=38467382999",
"size": 40889436,
"height": 268,
"duration": 595567,
"container": "MP4",
"codec": "H264",
"asset_id": "111728860001"
},
{
"avg_bitrate": 835000,
"width": 640,
"duration": 595567,
"size": 62142992,
"stream_name": "mp4:107767373999/107767373999_111728865001_Avatar-MakingAScene-Featurette.mp4?__nn__=1497926354001&slist=107767373999/&auth=daEciavcicRbhbtdSaBdBdVbXd0aUdTcMaX-bvRrSa-hca-slyCzrux_zJAq_HFCB_EvE&aifp=bcosuds",
"codec": "H264",
"asset_id": "111728865001",
"container": "MP4",
"height": 360,
"app_name": "rtmp://cp150446.edgefcs.net/ondemand"
},
{
"avg_bitrate": 835000,
"width": 640,
"src": "http://uds.ak.o.brightcove.com/107767373999/107767373999_111728865001_Avatar-MakingAScene-Featurette.mp4?pubId=107767373999&videoId=38467382999",
"size": 62142992,
"height": 360,
"duration": 595567,
"container": "MP4",
"codec": "H264",
"asset_id": "111728865001"
},
{
"avg_bitrate": 1744000,
"width": 640,
"duration": 595567,
"size": 129836869,
"stream_name": "mp4:107767373999/107767373999_111735357001_Avatar-MakingAScene-Featurette.mp4?__nn__=1497926354001&slist=107767373999/&auth=daEciavcicRbhbtdSaBdBdVbXd0aUdTcMaX-bvRrSa-hca-slyCzrux_zJAq_HFCB_EvE&aifp=bcosuds",
"codec": "H264",
"asset_id": "111735357001",
"container": "MP4",
"height": 360,
"app_name": "rtmp://cp150446.edgefcs.net/ondemand"
},
{
"avg_bitrate": 1744000,
"width": 640,
"src": "http://uds.ak.o.brightcove.com/107767373999/107767373999_111735357001_Avatar-MakingAScene-Featurette.mp4?pubId=107767373999&videoId=38467382999",
"size": 129836869,
"height": 360,
"duration": 595567,
"container": "MP4",
"codec": "H264",
"asset_id": "111735357001"
},
{
"avg_bitrate": 1249000,
"width": 640,
"duration": 595567,
"size": 92994065,
"stream_name": "mp4:107767373999/107767373999_111735369001_Avatar-MakingAScene-Featurette.mp4?__nn__=1497926354001&slist=107767373999/&auth=daEciavcicRbhbtdSaBdBdVbXd0aUdTcMaX-bvRrSa-hca-slyCzrux_zJAq_HFCB_EvE&aifp=bcosuds",
"codec": "H264",
"asset_id": "111735369001",
"container": "MP4",
"height": 360,
"app_name": "rtmp://cp150446.edgefcs.net/ondemand"
},
{
"avg_bitrate": 1249000,
"width": 640,
"src": "http://uds.ak.o.brightcove.com/107767373999/107767373999_111735369001_Avatar-MakingAScene-Featurette.mp4?pubId=107767373999&videoId=38467382999",
"size": 92994065,
"height": 360,
"duration": 595567,
"container": "MP4",
"codec": "H264",
"asset_id": "111735369001"
}
],
"name": "Avatar_MakingAScene_Featurette",
"reference_id": "AvatarMakingShort",
"long_description": null,
"duration": 595560,
"published_at": "2010-07-12T22:37:34.760Z",
"text_tracks": [],
"updated_at": "2010-07-12T22:54:29.666Z",
"thumbnail": "http://brightcove04.o.brightcove.com/107767373999/107767373999_111728862001_th-111727994001.jpg?pubId=107767373999&videoId=38467382999",
"poster": "http://brightcove04.o.brightcove.com/107767373999/107767373999_111728861001_vs-111727994001.jpg?pubId=107767373999&videoId=38467382999",
"link": {
"text": "Full Dvd at Amazon",
"url": "http://www.amazon.com/Avatar-Sam-Worthington/dp/B002VPE1AW"
},
"id": "38467382999",
"ad_keys": null,
"thumbnail_sources": [
{
"src": "http://brightcove04.o.brightcove.com/107767373999/107767373999_111728862001_th-111727994001.jpg?pubId=107767373999&videoId=38467382999"
}
],
"created_at": "2010-07-12T22:37:34.760Z"
}
],
}
Obtenir la playlist par ID de référence
Point de terminaison
https://edge.api.brightcove.com/playback/v1/accounts/{account_id}/playlists/ref:{reference_id}
Exemple
https://edge.api.brightcove.com/playback/v1/accounts/57838016001/playlists/ref:nature_2010-07-12
Exemple de réponse
{
"account_id": "107767373999",
"created_at": "2010-07-12T22:43:30.290Z",
"description": null,
"id": "111592530001",
"name": "Play One",
"reference_id": nature_2010-07-12,
"type": "EXPLICIT",
"updated_at": "2010-07-12T22:51:25.055Z",
"videos": [
{
"description": "Avatar_MakingAScene_Featurette",
"poster_sources": [
{
"src": "http://brightcove04.o.brightcove.com/107767373999/107767373999_111728861001_vs-111727994001.jpg?pubId=107767373999&videoId=38467382999"
}
],
"tags": [
"copied"
],
"cue_points": [
{
"id": "111637107001",
"name": "Pre-roll",
"type": "AD",
"time": 0,
"metadata": null,
"force_stop": false
}
],
"custom_fields": {
"moretext": "this is the first video uploaded",
"mylist": "abc"
},
"account_id": "107767373999",
"sources": [
{
"avg_bitrate": 379000,
"width": 320,
"duration": 595560,
"size": 28196307,
"stream_name": "mp4:107767373999/107767373999_111728840001_Avatar-MakingAScene-Featurette.mp4?__nn__=1497926354001&slist=107767373999/&auth=daEciavcicRbhbtdSaBdBdVbXd0aUdTcMaX-bvRrSa-hca-slyCzrux_zJAq_HFCB_EvE&aifp=bcosuds",
"codec": "H264",
"asset_id": "111728840001",
"container": "MP4",
"height": 180,
"app_name": "rtmp://cp150446.edgefcs.net/ondemand"
},
{
"avg_bitrate": 379000,
"width": 320,
"src": "http://uds.ak.o.brightcove.com/107767373999/107767373999_111728840001_Avatar-MakingAScene-Featurette.mp4?pubId=107767373999&videoId=38467382999",
"size": 28196307,
"height": 180,
"duration": 595560,
"container": "MP4",
"codec": "H264",
"asset_id": "111728840001"
},
{
"avg_bitrate": 267000,
"width": 320,
"duration": 595560,
"size": 19894997,
"stream_name": "mp4:107767373999/107767373999_111728852001_Avatar-MakingAScene-Featurette.mp4?__nn__=1497926354001&slist=107767373999/&auth=daEciavcicRbhbtdSaBdBdVbXd0aUdTcMaX-bvRrSa-hca-slyCzrux_zJAq_HFCB_EvE&aifp=bcosuds",
"codec": "H264",
"asset_id": "111728852001",
"container": "MP4",
"height": 180,
"app_name": "rtmp://cp150446.edgefcs.net/ondemand"
},
{
"avg_bitrate": 267000,
"width": 320,
"src": "http://uds.ak.o.brightcove.com/107767373999/107767373999_111728852001_Avatar-MakingAScene-Featurette.mp4?pubId=107767373999&videoId=38467382999",
"size": 19894997,
"height": 180,
"duration": 595560,
"container": "MP4",
"codec": "H264",
"asset_id": "111728852001"
},
{
"avg_bitrate": 549000,
"width": 480,
"duration": 595567,
"size": 40889436,
"stream_name": "mp4:107767373999/107767373999_111728860001_Avatar-MakingAScene-Featurette.mp4?__nn__=1497926354001&slist=107767373999/&auth=daEciavcicRbhbtdSaBdBdVbXd0aUdTcMaX-bvRrSa-hca-slyCzrux_zJAq_HFCB_EvE&aifp=bcosuds",
"codec": "H264",
"asset_id": "111728860001",
"container": "MP4",
"height": 268,
"app_name": "rtmp://cp150446.edgefcs.net/ondemand"
},
{
"avg_bitrate": 549000,
"width": 480,
"src": "http://uds.ak.o.brightcove.com/107767373999/107767373999_111728860001_Avatar-MakingAScene-Featurette.mp4?pubId=107767373999&videoId=38467382999",
"size": 40889436,
"height": 268,
"duration": 595567,
"container": "MP4",
"codec": "H264",
"asset_id": "111728860001"
},
{
"avg_bitrate": 835000,
"width": 640,
"duration": 595567,
"size": 62142992,
"stream_name": "mp4:107767373999/107767373999_111728865001_Avatar-MakingAScene-Featurette.mp4?__nn__=1497926354001&slist=107767373999/&auth=daEciavcicRbhbtdSaBdBdVbXd0aUdTcMaX-bvRrSa-hca-slyCzrux_zJAq_HFCB_EvE&aifp=bcosuds",
"codec": "H264",
"asset_id": "111728865001",
"container": "MP4",
"height": 360,
"app_name": "rtmp://cp150446.edgefcs.net/ondemand"
},
{
"avg_bitrate": 835000,
"width": 640,
"src": "http://uds.ak.o.brightcove.com/107767373999/107767373999_111728865001_Avatar-MakingAScene-Featurette.mp4?pubId=107767373999&videoId=38467382999",
"size": 62142992,
"height": 360,
"duration": 595567,
"container": "MP4",
"codec": "H264",
"asset_id": "111728865001"
},
{
"avg_bitrate": 1744000,
"width": 640,
"duration": 595567,
"size": 129836869,
"stream_name": "mp4:107767373999/107767373999_111735357001_Avatar-MakingAScene-Featurette.mp4?__nn__=1497926354001&slist=107767373999/&auth=daEciavcicRbhbtdSaBdBdVbXd0aUdTcMaX-bvRrSa-hca-slyCzrux_zJAq_HFCB_EvE&aifp=bcosuds",
"codec": "H264",
"asset_id": "111735357001",
"container": "MP4",
"height": 360,
"app_name": "rtmp://cp150446.edgefcs.net/ondemand"
},
{
"avg_bitrate": 1744000,
"width": 640,
"src": "http://uds.ak.o.brightcove.com/107767373999/107767373999_111735357001_Avatar-MakingAScene-Featurette.mp4?pubId=107767373999&videoId=38467382999",
"size": 129836869,
"height": 360,
"duration": 595567,
"container": "MP4",
"codec": "H264",
"asset_id": "111735357001"
},
{
"avg_bitrate": 1249000,
"width": 640,
"duration": 595567,
"size": 92994065,
"stream_name": "mp4:107767373999/107767373999_111735369001_Avatar-MakingAScene-Featurette.mp4?__nn__=1497926354001&slist=107767373999/&auth=daEciavcicRbhbtdSaBdBdVbXd0aUdTcMaX-bvRrSa-hca-slyCzrux_zJAq_HFCB_EvE&aifp=bcosuds",
"codec": "H264",
"asset_id": "111735369001",
"container": "MP4",
"height": 360,
"app_name": "rtmp://cp150446.edgefcs.net/ondemand"
},
{
"avg_bitrate": 1249000,
"width": 640,
"src": "http://uds.ak.o.brightcove.com/107767373999/107767373999_111735369001_Avatar-MakingAScene-Featurette.mp4?pubId=107767373999&videoId=38467382999",
"size": 92994065,
"height": 360,
"duration": 595567,
"container": "MP4",
"codec": "H264",
"asset_id": "111735369001"
}
],
"name": "Avatar_MakingAScene_Featurette",
"reference_id": "AvatarMakingShort",
"long_description": null,
"duration": 595560,
"published_at": "2010-07-12T22:37:34.760Z",
"text_tracks": [],
"updated_at": "2010-07-12T22:54:29.666Z",
"thumbnail": "http://brightcove04.o.brightcove.com/107767373999/107767373999_111728862001_th-111727994001.jpg?pubId=107767373999&videoId=38467382999",
"poster": "http://brightcove04.o.brightcove.com/107767373999/107767373999_111728861001_vs-111727994001.jpg?pubId=107767373999&videoId=38467382999",
"link": {
"text": "Full Dvd at Amazon",
"url": "http://www.amazon.com/Avatar-Sam-Worthington/dp/B002VPE1AW"
},
"id": "38467382999",
"ad_keys": null,
"thumbnail_sources": [
{
"src": "http://brightcove04.o.brightcove.com/107767373999/107767373999_111728862001_th-111727994001.jpg?pubId=107767373999&videoId=38467382999"
}
],
"created_at": "2010-07-12T22:37:34.760Z"
}
],
}
Sous-titres
Les sous-titres codés fournissent des informations supplémentaires sur votre vidéo pour les personnes qui souhaitent y accéder. Les sous-titres sont nécessaires pour que les sourds et les malentendants puissent accéder à la partie audio de vos vidéos. Si vous débutez dans les sous-titres, reportez-vous à la section Généralités : Ajout de légendes à un document Vidéo .
WebVTT externe
Les sous-titres WebVTT externes sont des fichiers texte distincts de la vidéo. Vous pouvez associer des fichiers de sous-titres à une vidéo comme suit :
Exemple de réponse
Voici un exemple de réponse de l'API de lecture où un fichier de sous-titres WebVTT a été ajouté à une vidéo à l'aide du module Media. Notez que les src
propriétés de la piste de texte pointent vers un fichier de sous-titres externe.
{
"text_tracks": [
{
"mime_type": null,
"account_id": "20318290001",
"default": true,
"sources": [
{
"src": "https://static.3playmedia.com/p/files/2240988/threeplay_transcripts/6418302.vtt?project_id=10127&format_id=51&refresh=1515241856"
}
],
"src": "https://static.3playmedia.com/p/files/2240988/threeplay_transcripts/6418302.vtt?project_id=10127&format_id=51&refresh=1515241856",
"asset_id": null,
"label": "English",
"id": "13d66def-d004-4e75-b160-4ac693eff7d7",
"kind": "captions",
"srclang": "en"
}
],
}
WebVTT dans le manifeste
Les légendes WebVTT dans le manifeste sont ingérées avec vos vidéos. Cela peut être fait lorsque vous ingérez votre vidéo pour la première fois ou après l'ingestion de votre vidéo. Vous pouvez créer des légendes dans le manifeste comme suit :
Exemple de réponse
Voici un exemple de réponse de l'API Playback où un fichier de sous-titres WebVTT a été ajouté à une vidéo à l'aide de l'API Dynamic Ingest. Notez que les src
propriétés de la piste de texte pointent vers des fichiers Brightcove internes.
{
"text_tracks": [
{
"mime_type": "text/webvtt",
"account_id": "1752604059001",
"default": false,
"sources": [
{
"src": "http://bcboltbde696aa-a.akamaihd.net/media/v1/text/vtt/clear/1752604059001/3585c49a-5a95-4783-8625-e3af727d094a/92cb36a7-c836-4506-a87f-f649316c0cdf/text.vtt?akamai_token=exp=1518032480~acl=/media/v1/text/vtt/clear/1752604059001/3585c49a-5a95-4783-8625-e3af727d094a/92cb36a7-c836-4506-a87f-f649316c0cdf/text.vtt*~hmac=5aa9f206a8e970efb4cab95278e2e9b16a29b3ccf82951a91245352d9149b173"
},
{
"src": "https://bcboltbde696aa-a.akamaihd.net/media/v1/text/vtt/clear/1752604059001/3585c49a-5a95-4783-8625-e3af727d094a/92cb36a7-c836-4506-a87f-f649316c0cdf/text.vtt?akamai_token=exp=1518032480~acl=/media/v1/text/vtt/clear/1752604059001/3585c49a-5a95-4783-8625-e3af727d094a/92cb36a7-c836-4506-a87f-f649316c0cdf/text.vtt*~hmac=5aa9f206a8e970efb4cab95278e2e9b16a29b3ccf82951a91245352d9149b173"
}
],
"src": "http://bcboltbde696aa-a.akamaihd.net/media/v1/text/vtt/clear/1752604059001/3585c49a-5a95-4783-8625-e3af727d094a/92cb36a7-c836-4506-a87f-f649316c0cdf/text.vtt?akamai_token=exp=1518032480~acl=/media/v1/text/vtt/clear/1752604059001/3585c49a-5a95-4783-8625-e3af727d094a/92cb36a7-c836-4506-a87f-f649316c0cdf/text.vtt*~hmac=5aa9f206a8e970efb4cab95278e2e9b16a29b3ccf82951a91245352d9149b173",
"asset_id": null,
"label": "EN",
"id": "92cb36a7-c836-4506-a87f-f649316c0cdf",
"kind": "captions",
"in_band_metadata_track_dispatch_type": "",
"srclang": "en"
}
],
}
Manifeste
Le manifeste des fichiers vidéo HLS ou DASH contient également les informations nécessaires pour inclure les légendes WebVTT.
HLS
#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="audio-0",NAME="en (Main)",DEFAULT=YES,AUTOSELECT=YES,LANGUAGE="en",URI="https://manifest.prod.boltdns.net/manifest/v1/hls/v4/clear/1752604059001/3585c49a-5a95-4783-8625-e3af727d094a/8b12c808-c5ea-47f3-abfa-c23b023db297/10s/rendition.m3u8?fastly_token=NWE3YjU3ZThfNzAwNTczOWM4MWQ4Mzk2NjFkYjVjYmFhYjQwNzY2MWUzM2MyNDM5ZDA5ZGExYTFkMzRmYzA0MDdhOTlmZWJhMw%3D%3D"
#EXT-X-MEDIA:TYPE=SUBTITLES,GROUP-ID="subtitles-0",NAME="EN",DEFAULT=YES,AUTOSELECT=YES,LANGUAGE="en",URI="https://manifest.prod.boltdns.net/manifest/v1/hls/v4/clear/1752604059001/3585c49a-5a95-4783-8625-e3af727d094a/92cb36a7-c836-4506-a87f-f649316c0cdf/rendition.m3u8?fastly_token=NWE3YjU3ZThfNDYzOThkZGJiZTU1NTlhOTdkYzA5OTA3M2UzZGRlYTgzMmRkZmUxMGIxYTJkY2Y5ZDQ1ODFiNTEyMmNiZDVhMw%3D%3D"
#EXT-X-STREAM-INF:PROGRAM-ID=0,BANDWIDTH=519200,CODECS="mp4a.40.2,avc1.420015",RESOLUTION=480x270,AUDIO="audio-0",CLOSED-CAPTIONS=NONE,SUBTITLES="subtitles-0"
https://manifest.prod.boltdns.net/manifest/v1/hls/v4/clear/1752604059001/3585c49a-5a95-4783-8625-e3af727d094a/5f7850d9-9a65-4eee-8810-86a1e18e05fb/10s/rendition.m3u8?fastly_token=NWE3YjU3ZThfY2Q5YmE2ODc2OWFiNTgyZjUxMjc1MzRhNmQxMzA0ZmJmY2RlMGU4ZjBiNDExZGRmNjc3YjQ0OGQ5N2RiOTVmMA%3D%3D
TIRET
<AdaptationSet mimeType="text/vtt" lang="en">
<Representation bandwidth="256" id="92cb36a7-c836-4506-a87f-f649316c0cdf">
<BaseURL>http://bcboltbde696aa-a.akamaihd.net/media/v1/dash/live/clear/1752604059001/3585c49a-5a95-4783-8625-e3af727d094a/92cb36a7-c836-4506-a87f-f649316c0cdf.vtt?akamai_token=exp=1518032494~acl=/media/v1/dash/live/clear/1752604059001/3585c49a-5a95-4783-8625-e3af727d094a*~hmac=3e2edc412c273f1255f2c18bbbcee7afc6a2edb74573f9295b0f05feda69f0e2</BaseURL>
</Representation>
</AdaptationSet>