Aperçu: API d'ingestion dynamique

Dans cette rubrique, vous apprendrez comment utiliser le Dynamic Ingest API pour ingérer des vidéos afin qu'elles puissent être livrées via Dynamic Delivery.

Introduction

Brightcove Dynamic Ingest API est basé sur la fonctionnalité où les fichiers source vidéo sont téléchargés à partir de l'emplacement de stockage du client et créé des formats associés spécifiés des fichiers source. (Il y a aussi une option pour téléchargez vos fichiers sources vers un emplacement temporaire où Dynamic Ingest peut y accéder.) La plate-forme est centrée sur le cloud, distribuée dans le monde entier et basée sur des pratiques modernes pour offrir une cohérence et une vitesse optimales.

Voir aussi le Référence API.

Présentation du flux de travail

Un certain nombre de systèmes/technologies sont utilisés dans l'ensemble du transcodage et du stockage des médias. Il s'agit de :

  • API CMS: Crée un objet vidéo à utiliser dans l'API DI
  • Zencoder: Transcode la vidéo en créant plusieurs rendus
  • Amazon S3: Déplace le maître et les rendus vers le stockage, en fonction des paramètres de profil
  • Catalogue: Stocke les informations requises associées à la vidéo

Après le transcodage initial, vous pouvez effectuer les actions suivantes sur le support :

Opérations

Lorsque vous utilisez l'API DI, vous effectuez différentes opérations, telles que la lecture d'un profil d'ingestion et l'écriture d'informations d'ingestion sur votre compte. Voici une liste complète des opérations requises pour les tâches DI :

  • video-cloud/video/create
  • video-cloud/video/read
  • video-cloud/video/update
  • video-cloud/ingest-profiles/profile/read
  • video-cloud/ingest-profiles/account/read
  • video-cloud/ingest-profiles/account/write
  • video-cloud/ingest-profiles/profile/write
  • video-cloud/upload-urls/read

Pour obtenir les informations d'identification du client, utilisez le Studio outils d'administration ou consultez l'un des documents suivants :

Les meilleures pratiques

Voir API d'ingestion dynamique : Les meilleures pratiques.

Emplacements sources valides

Ingestion basée sur l'extraction

L'ingestion dynamique peut extraire les fichiers vidéo source de : HTTP/HTTPS, S3 et FTP - avec ou sans authentification

Exemples :

  • https://example.com/path/to/input.avi
  • https://dl.dropboxusercontent.com/u/3641457/Bird_Titmouse.mp4
  • s3://my-bucket/video.mp4
  • ftp://serveur/fichier.mp4

Remarques sur S3

Si vos vidéos se trouvent dans un compartiment S3 protégé, consultez Utilisation de l'ingestion dynamique avec S3 pour plus d'informations sur la configuration des autorisations pour Dynamic Ingest afin d'accéder à vos fichiers.

Remarques sur le FTP

Si vos vidéos sont sur un serveur FTP protégé, utilisez la méthode standard pour transmettre le nom d'utilisateur et le mot de passe sur l'URL, comme ceci :

    ftp://username:password@server/file.mp4

Téléchargement du fichier source

Vous pouvez également télécharger vos fichiers dans un emplacement temporaire sécurisé à partir duquel Dynamic Ingest peut les extraire. Pour plus de détails, voir Téléchargement du fichier source.

Caractères spéciaux

Si vous fournissez une URL à Video Cloud pour récupérer vos vidéos et que vous envoyez des informations d'identification dans le cadre de l'URL , vous devez pourcentage-encoder certains caractères spéciaux réservés :

Caractères spéciaux
Personnage Encodé en pourcentage
] %5B
[ %5D
? %3F
/ %2F
< %3C
~ %7E
# %23
` %6D
! %21
@ %40
$ %24
% %25
^ %5E
& %26
* %2A
( %28
) %29
+ %2B
= %3D
} %7D
| %7C
: %3A
" %22
; %3B
' %27
, %2C
> %3E
{ %7B
espacer %20

Par exemple :

/* unencoded */
ftp://user@example.com:pass!word@example.com/path/to/input.mp3

/* encoded */
ftp://user%40example.com:pass%21word@example.com/path/to/input.mp3

Encodage URL double

Chaque fois qu'une URL est décodée une fois avant le traitement, vous devez encoder l'URL d'entrée deux fois avant de soumettre la tâche d'ingestion.

Par exemple :

UNE master.url de

https://some.file.storage.com/path/to/video.mp4?Signature=some%2Bcool%2B%25sig

sera converti en ce qui suit avant le traitement :

https://some.file.storage.com/path/to/video.mp4?Signature=some+cool+%sig

Vous devriez plutôt l'encoder en double comme ceci :

https://some.file.storage.com/path/to/video.mp4?Signature=some%252Bcool%252B%2525sig

Pour encoder une URL, consultez le Encodeur de chaîne document.

Noms des fichiers sources

Toutes les URL d'entrée doivent être correctement codées selon RFC 3986 lors de son envoi à Brightcove. Cela signifie que tout caractères réservés trouvés dans le chemin de l'url sont encodés en pourcentage (les espaces sont encodés pour %20), et tous les caractères réservés trouvés dans la requête de l'url sont encodés en pourcentage (les espaces sont encodés pour + ou %20 , et + étant encodé pour %2B).

Un S3 présigné (v2 contient Signature , Expire et AWSAccessKeyId , et v4 contient X-Amz-Algorithm, X-Amz-Credential, X-Amz-Date, X-Amz-Expire, X-AMZ signedHeaders et X-Amz-Signature) ou GCS(contient Signature, Expire et GoogleAccessid) url doit déjà être correctement codé et peut être utilisé tel qu'il est.

Exemples d'actifs

Brightcove Learning Services fournit quelques exemples d'actifs que vous pouvez utiliser pour expérimenter pour démarrer avec Dynamic Ingest. Ces éléments incluent de courtes vidéos, images et légendes WebVTT en plusieurs langues :

Profil d'ingestion

Des profils d'ingestion spéciaux sont requis pour créer des vidéos Dynamic Delivery. Vous trouverez quelques profils d'acquisition standard dans votre compte lorsque la livraison dynamique est activée, et ceux-ci sont recommandés.

Vous pouvez également ajouter un profil de livraison dynamique personnalisé à vos profils d'ingestion dans la section Admin de Studio - voir Création de profils d'ingestion pour la livraison dynamique pour les détails.

Exemple de profil de livraison dynamique

Vous trouverez ci-dessous un exemple de profil de livraison dynamique que vous pouvez utiliser pour commencer. Tout ce que vous avez à faire est de remplacer YOUR_ACCOUNT_ID avec votre identifiant de compte, puis vous pouvez copier et coller le profil dans l'éditeur de profil d'ingestion.

    {
      "name": "DynamicDeliveryIngestProfile",
      "description": "Dynamic Delivery ingest profile.",
      "account_id": "YOUR_ACCOUNT_ID",
      "digital_master": {
        "rendition": "passthrough",
        "distribute": false
      },
      "dynamic_origin": {
        "renditions": [
          "default/audio64",
          "default/audio96",
          "default/audio128",
          "default/video450",
          "default/video700",
          "default/video900",
          "default/video1200",
          "default/video1700",
          "default/video2000"
        ],
        "images": [
          {
            "label": "poster",
            "height": 720,
            "width": 1280
          },
          {
            "label": "thumbnail",
            "height": 90,
            "width": 160
          }
        ]
      }
    }
    

Pour plus de détails sur les profils de diffusion dynamique standard et les rendus, voir Profils d'ingestion standard pour la livraison dynamique

Ingérer des vidéos

Deux requêtes API sont requises pour ingérer des vidéos :

  1. Appelez le CMS API pour créer un objet vidéo dans le système Video Cloud et obtenir son identifiant
  2. Appelez le Dynamic Ingest API pour fournir l'URL du fichier source vidéo et spécifier d'autres fichiers et paramètres pour l'ingestion selon les besoins

Un exemple d'ensemble de requêtes de base ressemblerait à ce qui suit :

Demande d'API CMS

Méthode HTTP
POST
URL de demande
https://cms.api.brightcove.com/v1/accounts/{account_id}/videos
Corps de la demande
    {
    "name": "My First Dynamic Delivery Video"
    }
    
    

Les données de réponse incluront la vidéo id , qui est utilisé dans la requête suivante.

Ingérer la demande d'API

Méthode HTTP
POST
URL de demande
https://ingest.api.brightcove.com/v1/accounts/{account_id}/videos/{video_id}/ingest-requests
Corps de la demande
    {
      "master": {
        "url": "https://host/master.mp4"
      },
      "profile": "DynamicDeliverIngestProfile",
      "callbacks": [
        "https://mydomain.com/di-callbacks.php"
      ]
    }
    

Remarques

  • Si vous n'incluez pas le profile champ, ce profil par défaut de compte sera utilisé. Nous vous recommandons d'utiliser le compte par défaut, sauf si vous devez utiliser différents profils pour différents types de vidéos. Assurez-vous de définir le compte par défaut sur le profil que vous souhaitez (le plus souvent) utiliser.
  • Les callbacks est facultatif, mais nous vous recommandons fortement de l'utiliser comme le meilleur moyen de suivre la progression des tâches d'ingestion. Voir au dessous de pour en savoir plus sur les notifications.

Affichage des rendus

Vous pouvez voir les rendus de votre vidéo en allant sur le Module multimédia dans Studio.

Pour afficher toutes les propriétés des rendus, vous pouvez utiliser le Demande d'API CMS détaillée ci-dessous.

Pour récupérer des URL pour la lecture, vous pouvez utiliser le Demande d'API de lecture détaillée ci-dessous.

Remplacer une vidéo

Pour remplacer une vidéo par une nouvelle version ou un nouveau jeu de rendus, l' Dynamic Ingest API appel est exactement le même que pour l' ingestion de nouvelles vidéos - la seule différence est que vous n'avez pas besoin d'effectuer un appel préalable à la CMS API pour créer l'objet vidéo dans le système Video Cloud et obtenir un identifiant pour celui-ci. Si le fichier vidéo source à l'URL spécifiée est le même que celui ingéré à l'origine, vous obtiendrez simplement un nouvel ensemble de rendus. Si le fichier source est nouveau, vous remplacerez la vidéo existante. Toutes les vidéos resteront lisibles avec les rendus existants jusqu'à ce que le retranscodage soit terminé.

Voir le exemple de travail ici.

Retranscoder une vidéo

Si vous avez choisi d'archiver un maître lorsque vous avez ingéré la vidéo via le module Dynamic Ingest API ou Studio Upload Module, vous pouvez également retranscoder la vidéo depuis le maître. Encore une fois, l'URL de la demande d'ingestion sera la même, mais le corps de la demande aura les éléments suivants :

    // request
    POST /v1/accounts/{account_id}/videos/{video_id}/ingest-requests
    // request body
    {
      "master": { "use_archived_master": true },
      "profile": "multi-platform-extended-static"
    }
    
    

Acquisition d'images

Au lieu d'avoir des affiches et des vignettes capturées pendant le transcodage, vous pouvez inclure vos propres images avec la demande d'acquisition ou les ajouter ultérieurement dans une demande distincte.

Exemple de corps de requête

    {
      "profile": "multi-platform-extended-static",
      "poster": {
        "url": "https://bcls@solutions.brightcove.com/bcls/assets/images/great-blue-heron-poster.png",
        "width": 1280,
        "height": 720
      },
      "thumbnail": {
        "url": "https://bcls@solutions.brightcove.com/bcls/assets/images/great-blue-heron-thumbnail.png",
        "width": 160,
        "height": 90
      },
      "callbacks": [
        "https://solutions.brightcove.com/bcls/di-api/di-callbacks.php"
      ]
    }
    

Notifications pour l'ingestion d'éléments d'image

Vous trouverez ci-dessous des exemples de notifications que vous recevez spécifiquement pour les ingestions d'images.

    {
        "entity": "thumbnail",
        "entityType": "ASSET",
        "version": "1",
        "action": "CREATE",
        "jobId": "0c2767c1-19ea-479d-b371-a0f5f3d154f5",
        "videoId": "5209530177001",
        "accountId": "57838016001",
        "status": "SUCCESS"
      }
      {
        "entity": "poster",
        "entityType": "ASSET",
        "version": "1",
        "action": "CREATE",
        "jobId": "0c2767c1-19ea-479d-b371-a0f5f3d154f5",
        "videoId": "5209530177001",
        "accountId": "57838016001",
        "status": "SUCCESS"
    }
    
    

Les sous-titres ingèrent

Des sous-titres au format WebVTT peuvent être ajoutés à votre vidéo avec la demande d'acquisition initiale ou dans une demande ultérieure.

Exemple de corps de requête

    {
      "text_tracks": [
        {
          "url": "https://solutions.brightcove.com/bcls/assets/vtt/sample.vtt",
          "srclang": "en",
          "kind": "captions",
          "label": "EN",
          "default": true
        },
        {
          "url": "https://solutions.brightcove.com/bcls/assets/vtt/sample-es.vtt",
          "srclang": "es",
          "kind": "captions",
          "label": "ES",
          "default": false
        }
      ],
      "callbacks": [
        "https://solutions.brightcove.com/bcls/di-api/di-callbacks.php"
      ]
    }
    

Les pistes textuelles annexes s'afficheront dans les réponses CMS ou Playback, comme c'est le cas pour les vidéos de diffusion non dynamique :

    "text_tracks": [
        {
        "id": null,
        "src": "https://bcbolt446c5271-a.akamaihd.net/media/v1/text/vtt/clear/57838016001/3de8c552-74e8-4c53-aa11-2a4375edf658/bce0d3dc-11d9-4ca4-ae1b-a39cb7b88a1c/text.vtt?akamai_token=exp=1479236791~acl=/media/v1/text/vtt/clear/57838016001/3de8c552-74e8-4c53-aa11-2a4375edf658/bce0d3dc-11d9-4ca4-ae1b-a39cb7b88a1c/text.vtt*~hmac=df5b4ba1ef2549a7572346dd36a761534ffafe4b8cfbdf92d89013ec2f95699c",
        "srclang": "en",
        "label": "EN",
        "kind": "captions",
        "mime_type": "text/webvtt",
        "asset_id": null,
        "sources": [
          {
          "src": "https://bcbolt446c5271-a.akamaihd.net/media/v1/text/vtt/clear/57838016001/3de8c552-74e8-4c53-aa11-2a4375edf658/bce0d3dc-11d9-4ca4-ae1b-a39cb7b88a1c/text.vtt?akamai_token=exp=1479236791~acl=/media/v1/text/vtt/clear/57838016001/3de8c552-74e8-4c53-aa11-2a4375edf658/bce0d3dc-11d9-4ca4-ae1b-a39cb7b88a1c/text.vtt*~hmac=df5b4ba1ef2549a7572346dd36a761534ffafe4b8cfbdf92d89013ec2f95699c"
          }
        ],
        "in_band_metadata_track_dispatch_type": "",
        "default": false
      ]
    }
    

Les pistes de texte apparaîtront également dans les manifestes HLS et DASH :

HLS

    #EXT-X-MEDIA:TYPE=SUBTITLES,GROUP-ID="subtitles-0",NAME="Captions",DEFAULT=NO,AUTOSELECT=YES,LANGUAGE="es",URI="https://manifest.prod.boltdns.net/manifest/v1/hls/v5/clear/57838016001/1bd49b7b-df40-414f-bb05-8840624663e1/de8144f4-b7d7-46ca-848f-dd2f7fa453d7/rendition.m3u8?fastly_token=NTg0ZjA5MWZfMzU1N2VhY2Y2MDA3NzkzYWM0ZjU2ZWQwNWE2NTYzMmI4MzMzMmJkZWM5Y2JmNzQ1MjRjM2QxYjI0NTYzODA5Zg%3D%3D"
    #EXT-X-MEDIA:TYPE=SUBTITLES,GROUP-ID="subtitles-0",NAME="Captions",DEFAULT=NO,AUTOSELECT=YES,LANGUAGE="en",URI="https://manifest.prod.boltdns.net/manifest/v1/hls/v5/clear/57838016001/1bd49b7b-df40-414f-bb05-8840624663e1/6399fcf2-cd27-4d97-ad30-e443f13563bd/rendition.m3u8?fastly_token=NTg0ZjA5MWZfYWMxYjllNDlkYzVlOTJkZWQ3ODk2YjE3MGI5NDlhYTlkOGQ1YzI5ZmI4ZjRlOWMzMzU5YmM1YzZkNTA4MTFmNQ%3D%3D"
    
    

TIRET

    <AdaptationSet mimeType="text/vtt" lang="en">
      <Representation bandwidth="256" id="2f4bb3fb-1a7d-4f4c-bf44-00ef0e611131">
      <BaseURL>https://bcbolt446c5271-a.akamaihd.net/media/v1/dash/live/clear/57838016001/785d5ddf-6672-4ece-9191-d105445b2557/2f4bb3fb-1a7d-4f4c-bf44-00ef0e611131.vtt?akamai_token=exp=1484784452~acl=/media/v1/dash/live/clear/57838016001/785d5ddf-6672-4ece-9191-d105445b2557*~hmac=ae568ea5294280968de0a2766afd82922ea9aa83fe23a81b3379a46b8ef13284</BaseURL>
      </Representation>
      </AdaptationSet>
      <AdaptationSet mimeType="text/vtt" lang="hi">
      <Representation bandwidth="256" id="f5875617-40f4-4991-bc5b-7152c6e2a93a">
      <BaseURL>https://bcbolt446c5271-a.akamaihd.net/media/v1/dash/live/clear/57838016001/785d5ddf-6672-4ece-9191-d105445b2557/f5875617-40f4-4991-bc5b-7152c6e2a93a.vtt?akamai_token=exp=1484784452~acl=/media/v1/dash/live/clear/57838016001/785d5ddf-6672-4ece-9191-d105445b2557*~hmac=ae568ea5294280968de0a2766afd82922ea9aa83fe23a81b3379a46b8ef13284</BaseURL>
      </Representation>
    </AdaptationSet>
    
    

Notifications pour les ressources de piste de texte

Vous trouverez ci-dessous des exemples de notifications spécifiques à l'ingestion de pistes de texte.

    {
      "entity": "en-captions-EN",
      "entityType": "ASSET",
      "version": "1",
      "action": "CREATE",
      "jobId": "ed429284-77c9-4905-a700-4c8edb77be3e",
      "videoId": "5209530177001",
      "accountId": "57838016001",
      "status": "SUCCESS"
    }
    {
      "entity": "es-captions-ES",
      "entityType": "ASSET",
      "version": "1",
      "action": "CREATE",
      "jobId": "ed429284-77c9-4905-a700-4c8edb77be3e",
      "videoId": "5209530177001",
      "accountId": "57838016001",
      "status": "SUCCESS"
    }
    
    

Lecteur d'échantillons avec pistes de texte (anglais et espagnol)

Lecteur vidéo de livraison dynamique

Légendes de side-car dans une application iOS

Sous-titres d'accompagnement de livraison dynamique
Sous-titres d'accompagnement de livraison dynamique

Récupérer les rendus dynamiques

Pour récupérer des informations sur les rendus dynamiques d'une vidéo, envoyez une demande GET à :

    https://cms.api.brightcove.com/v1/accounts/account_id/videos/video_id/assets/dynamic_renditions
    
    

Exemple de réponse

    [
      {
        "rendition_id": "default/audio128",
        "frame_height": null,
        "frame_width": null,
        "media_type": "audio",
        "size": 506818,
        "created_at": "2016-11-14T15:05:56.209214859Z",
        "updated_at": "2016-11-14T15:05:56.209214859Z",
        "encoding_rate": 125,
        "duration": 31488,
        "audio_configuration": "L_R",
        "language": "en"
      },
      {
        "rendition_id": "default/audio64",
        "frame_height": null,
        "frame_width": null,
        "media_type": "audio",
        "size": 261129,
        "created_at": "2016-11-14T15:05:53.926747456Z",
        "updated_at": "2016-11-14T15:05:53.926747456Z",
        "encoding_rate": 62,
        "duration": 31488,
        "audio_configuration": "L_R",
        "language": "en"
      },
      {
        "rendition_id": "default/audio96",
        "frame_height": null,
        "frame_width": null,
        "media_type": "audio",
        "size": 384568,
        "created_at": "2016-11-14T15:05:59.023381448Z",
        "updated_at": "2016-11-14T15:05:59.023381448Z",
        "encoding_rate": 94,
        "duration": 31488,
        "audio_configuration": "L_R",
        "language": "en"
      },
      {
        "rendition_id": "default/video1200",
        "frame_height": 540,
        "frame_width": 960,
        "media_type": "video",
        "size": 4761241,
        "created_at": "2016-11-14T15:06:10.410020728Z",
        "updated_at": "2016-11-14T15:06:10.410020728Z",
        "encoding_rate": 1206,
        "duration": 31465
      },
      {
        "rendition_id": "default/video1700",
        "frame_height": 540,
        "frame_width": 960,
        "media_type": "video",
        "size": 6712422,
        "created_at": "2016-11-14T15:06:15.593063021Z",
        "updated_at": "2016-11-14T15:06:15.593063021Z",
        "encoding_rate": 1703,
        "duration": 31465
      },
      {
        "rendition_id": "default/video2500",
        "frame_height": 720,
        "frame_width": 1280,
        "media_type": "video",
        "size": 9795721,
        "created_at": "2016-11-14T15:06:12.148783841Z",
        "updated_at": "2016-11-14T15:06:12.148783841Z",
        "encoding_rate": 2486,
        "duration": 31465
      },
      {
        "rendition_id": "default/video4000",
        "frame_height": 1080,
        "frame_width": 1920,
        "media_type": "video",
        "size": 15718943,
        "created_at": "2016-11-14T15:06:15.463012005Z",
        "updated_at": "2016-11-14T15:06:15.463012005Z",
        "encoding_rate": 3992,
        "duration": 31465
      },
      {
        "rendition_id": "default/video450",
        "frame_height": 270,
        "frame_width": 480,
        "media_type": "video",
        "size": 1784858,
        "created_at": "2016-11-14T15:06:20.719400854Z",
        "updated_at": "2016-11-14T15:06:20.719400854Z",
        "encoding_rate": 451,
        "duration": 31465
      },
      {
        "rendition_id": "default/video700",
        "frame_height": 360,
        "frame_width": 640,
        "media_type": "video",
        "size": 2746520,
        "created_at": "2016-11-14T15:06:10.918331816Z",
        "updated_at": "2016-11-14T15:06:10.918331816Z",
        "encoding_rate": 695,
        "duration": 31465
      },
      {
        "rendition_id": "default/video900",
        "frame_height": 360,
        "frame_width": 640,
        "media_type": "video",
        "size": 3561912,
        "created_at": "2016-11-14T15:06:17.295871425Z",
        "updated_at": "2016-11-14T15:06:17.295871425Z",
        "encoding_rate": 902,
        "duration": 31465
      }
    ]
    

Récupérer les URL pour la lecture

Pour récupérer des informations sur les rendus dynamiques d'une vidéo, envoyez une demande GET à :

    https://edge.api.brightcove.com/playback/v1/accounts/account_id/videos/video_id
    
    

Exemple de réponse

    {
      "description": null,
      "poster_sources": [
      {
        "src": "https://cf-images.us-east-1.prod.boltdns.net/v1/jit/57838016001/853641cb-d66b-4f08-bb02-8489b5fba897/main/1280x720/24s816ms/match/image.jpg"
      }
      ],
      "tags": [
        "dd-static"
      ],
      "cue_points": [],
      "custom_fields": {},
      "account_id": "57838016001",
      "sources": [
        {
          "ext_x_version": "4",
          "type": "application/x-mpegURL",
          "src": "https://manifest.prod.boltdns.net/manifest/v1/hls/v4/clear/57838016001/853641cb-d66b-4f08-bb02-8489b5fba897/10s/master.m3u8?fastly_token=NTk1YmE0ZmZfOGU5Njg0NGU1OWQ3NjI3ZDhmY2FhZTVmNGE0YzI1MWM1NjMyNTZkNzMzZmExMzRkN2ZmYzU0YWU5NzUyZTM2YQ%3D%3D"
        },
        {
          "ext_x_version": "5",
          "type": "application/x-mpegURL",
          "src": "https://manifest.prod.boltdns.net/manifest/v1/hls/v5/clear/57838016001/853641cb-d66b-4f08-bb02-8489b5fba897/10s/master.m3u8?fastly_token=NTk1YmE0ZmZfOTBkOThhYmQ5MWM0MmQwYmQwYTM4MGEzMjAzZTgyNDVlMDYzYzNhMzQ1ZWQ3MTMyMzVmM2Q1YjM2N2VlMjM0Yg%3D%3D"
        },
        {
          "type": "application/dash+xml",
          "src": "https://manifest.prod.boltdns.net/manifest/v1/dash/live-baseurl/clear/57838016001/853641cb-d66b-4f08-bb02-8489b5fba897/2s/manifest.mpd?fastly_token=NTk1YmE0ZmZfYzQyOWJiOTEzMGJmNGIyMjM1NmMwMzZmNGZkZjlkYjEzMzNmNzFlYmQxODg0Y2YzZDk3ZTljNzVhODg1YzRjMQ%3D%3D",
          "profiles": "urn:mpeg:dash:profile:isoff-live:2011"
        },
        {
          "avg_bitrate": 2129000,
          "width": 1280,
          "src": "https://bcbolt446c5271-a.akamaihd.net/media/v1/pmp4/static/clear/57838016001/853641cb-d66b-4f08-bb02-8489b5fba897/high.mp4?akamai_token=exp=1499178239~acl=/media/v1/pmp4/static/clear/57838016001/853641cb-d66b-4f08-bb02-8489b5fba897/high.mp4*~hmac=5880698556297bbe2f2f43ac8904c659c61fb9510db1a9bb106037eaea393339",
          "size": 13242064,
          "height": 720,
          "duration": 49690,
          "container": "MP4",
          "codec": "H264"
        },
        {
          "avg_bitrate": 574000,
          "width": 480,
          "src": "https://bcbolt446c5271-a.akamaihd.net/media/v1/pmp4/static/clear/57838016001/853641cb-d66b-4f08-bb02-8489b5fba897/mid.mp4?akamai_token=exp=1499178239~acl=/media/v1/pmp4/static/clear/57838016001/853641cb-d66b-4f08-bb02-8489b5fba897/mid.mp4*~hmac=75e51439623a41b93d2a234c25683e76d43656f97a9dfb8efe61a5342d5ff2da",
          "size": 3586929,
          "height": 270,
          "duration": 49690,
          "container": "MP4",
          "codec": "H264"
        }
      ],
      "name": "Canada_Geese_Family",
      "reference_id": null,
      "long_description": null,
      "duration": 49633,
      "economics": "AD_SUPPORTED",
      "published_at": "2017-06-05T11:20:52.412Z",
      "text_tracks": [],
      "updated_at": "2017-06-05T12:06:55.121Z",
      "thumbnail": "https://cf-images.us-east-1.prod.boltdns.net/v1/jit/57838016001/853641cb-d66b-4f08-bb02-8489b5fba897/main/160x90/24s816ms/match/image.jpg",
      "poster": "https://cf-images.us-east-1.prod.boltdns.net/v1/jit/57838016001/853641cb-d66b-4f08-bb02-8489b5fba897/main/1280x720/24s816ms/match/image.jpg",
      "offline_enabled": false,
      "link": null,
      "id": "5459968909001",
      "ad_keys": null,
      "thumbnail_sources": [
        {
          "src": "https://cf-images.us-east-1.prod.boltdns.net/v1/jit/57838016001/853641cb-d66b-4f08-bb02-8489b5fba897/main/160x90/24s816ms/match/image.jpg"
        }
      ],
      "created_at": "2017-06-05T11:20:52.412Z"
    }
    
    

GDN

DRM est pris en charge, mais fonctionne différemment de l'acquisition vidéo ordinaire. Tu fais ne pas besoin de spécifier l'emballage dans le profil d'ingestion. Au lieu de cela, l'empaquetage est automatique en fonction des paramètres DRM de votre compte. Contacter l'assistance Brightcove pour définir les valeurs par défaut pour l'empaquetage DRM de vos vidéos.

Pour plus de détails, voir Ingérer du contenu avec DRM.

Rendus en filigrane

Rendus en filigrane sont pris en charge. Si vous souhaitez ajouter des filigranes à certaines ou à toutes vos vidéos, veuillez contacter l'assistance Brightcove.

Notez que des rendus en filigrane peuvent être ajoutés pour les profils de livraison dynamique statiques, mais ne pas pour les profils de codage contextuel (CAE).

Statut d'ingestion

Vous pouvez recevoir des informations sur votre traitement d'ingestion Dynamic Delivery en vous abonnant à des rappels et/ou en interrogeant une API de statut pour obtenir le statut de la tâche.

Rappels

Dans votre demande d'ingestion, vous pouvez spécifier une ou plusieurs URL de rappel pour recevoir des notifications des résultats du processus d'ingestion. Les URL que vous spécifiez doivent être destinées aux applications pouvant accepter les requêtes POST. Les notifications seront envoyées au format JSON.

Les détails de la réception et de l'interprétation des notifications peuvent être trouvés dans Notifications

API d'état

Vous pouvez également obtenir l'état actuel des tâches d'ingestion à l'aide de l'API Status. Les messages d'état ne sont disponibles que pour les tâches d'ingestion soumises au cours des 7 derniers jours.

Points de terminaison

Tous les messages d'état d'une vidéo
    https://cms.api.brightcove.com/v1/accounts/:account_id/videos/:video_id/ingest_jobs
    
    
Exemple
    https://cms.api.brightcove.com/v1/accounts/57838016001/videos/5128433746001/ingest_jobs
    
    
Message d'état pour un travail particulier
    https://cms.api.brightcove.com/v1/accounts/:account_id/videos/:video_id/ingest_jobs/:job_id
    
    
Exemple

Réponses

Vous trouverez ci-dessous un exemple de réponse pour une tâche en cours de traitement.

    {
    "id": "7a196557-56ba-4218-ada5-e107ed554555",
    "state": "processing",
    "account_id": "57838016001",
    "video_id": "5128433746001",
    "error_code": null,
    "error_message": null,
    "updated_at": "2016-09-16T16:51:46.313Z",
    "started_at": "2016-09-16T16:51:22.258Z"
    }
    
    

Les éléments les plus importants ici sont :

  • state : le statut du travail ( processing | publishing | finished | failed - lorsque ce travail est terminé et que la vidéo est prête à être lue, le state sera finished )
  • error_code et error_message : pour un travail réussi, ceux-ci seront null ; pour les travaux échoués, vous obtiendrez un code d'erreur et un message explicatif

Voici un exemple de message d'état pour une tâche ayant échoué à des fins de comparaison :

    {
    "id": "bc9dfb58-d502-43d5-97e4-41f3dcd44265",
    "state": "failed",
    "account_id": "57838016001",
    "video_id": "5128710227001",
    "error_code": "NoMediaError",
    "error_message": "Audio-only output was requested on a file that only contains video.",
    "updated_at": "2016-09-16T20:30:58.016Z",
    "started_at": "2016-09-16T20:29:14.139Z"
    }
    
    

Encodage conscient du contexte

Context Aware Encoding (CAE) est une technologie développée par Brightcove pour analyser la vidéo source pendant le transcodage et générer un ensemble optimal de rendus et de débits binaires en fonction de la complexité de la vidéo et d'un ensemble de paramètres de délimitation fournis (nombre minimum de rendus, débit binaire max. , etc.).

Pour apprendre à utiliser les profils CAE, voir Encodage contextuel.

Plusieurs pistes audio

Les comptes configurés pour la livraison dynamique peuvent être activés pour autoriser plusieurs pistes audio pour les vidéos.

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

Pour plus de détails sur l'utilisation de cette fonction, consultez Plusieurs pistes audio.

Exemple de code

Learning Services fournit plusieurs exemples d'applications qui fournissent une interface web et envoient des Dynamic Ingest API requêtes via un proxy PHP. Voir les exemples d'applications.

De plus, les référentiels GitHub suivants contiennent des exemples de code en Java, Python et C# - notez que cet exemple de code est non supporté par Brightcove :

Contraintes

  • Pour les types de vidéo segmentés (HLS et DASH), certains lecteurs ne gèrent pas le cas où les longueurs de flux audio et vidéo diffèrent de plus de la durée d'un segment. Si vous rencontrez cette situation, essayez d'utiliser une longueur de segment plus courte.