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

    Présentation : API Dynamic Ingest

    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. Notez que ce guide est destiné à la plupart des comptes Video Cloud qui se trouvent sur le système d'ingest de livraison dynamique. Ceux qui ont des comptes plus anciens encore sur le système d'ingest hérité devraient passer à Dynamic Ingest API Legacy à la place.

    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 existe également une option pour télécharger vos fichiers source vers un emplacement temporaire où Dynamic Ingest peut y accéder.) La plateforme est centrée sur le cloud, distribuée à l'échelle mondiale et basée sur des pratiques modernes pour offrir une cohérence et une rapidité optimales.

    Voir également la référence de l'API.

    Vue d'ensemble du

    Un certain nombre de systèmes/technologies sont utilisés pour le transcodage global et le stockage des supports. 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 formats associés
    • Amazon S3: Déplace le maître et les formats associés vers le stockage, en fonction des paramètres du 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 effectuerez différentes opérations, telles que la lecture d'un profil d'ingest et l'écriture d'informations d'ingest sur votre compte. Voici une liste complète des opérations requises pour les tâches d'AI :

      • 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 des informations d'identification client, utilisez les outils d'administration Studio ou consultez l'un des documents suivants :

    Meilleures pratiques

    Voir API d'ingest dynamique : Meilleures pratiques.

    Emplacements source valides

    Ingestion à base d'extraction

    Dynamic Inest peut extraire des fichiers vidéo source à partir de : HTTP/HTTPS, S3 et FTP - avec ou sans authentification

    Exemples :

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

    Notes sur S3

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

    Notes sur FTP

    Si vos vidéos sont dans 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 sécurisé et temporaire à partir duquel Dynamic Ingest peut les extraire. Pour plus d'informations, voir Chargement du fichier source.

    Caractères spéciaux

    Si vous fournissez une URL pour 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 encoder en pourcentage certains caractères spéciaux réservés :

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

    Noms des fichiers source

    Toutes les URL d'entrée doivent être correctement encodées conformément à la RFC 3986 lorsqu'elles sont envoyées à Brightcove. Cela signifie que tous les caractères réservés trouvés dans le chemin d'accès de l'URL sont codés en pourcentage (les espaces étant codés %20), et tous les caractères réservés trouvés dans la requête de l'URL sont codés en pourcentage (les espaces étant codés sur + ou %20 , et + étant codé à %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 des exemples de ressources que vous pouvez utiliser pour expérimenter pour commencer à utiliser Dynamic Ingest. Ces ressources comprennent de courtes vidéos, images et légendes WebVTT en plusieurs langues :

    Profil d'intégration

    Des profils d'ingeste spéciaux sont nécessaires pour créer des vidéos Dynamic Delivery. Vous trouverez quelques profils d'ingeste standard dans votre compte lorsque la livraison dynamique est activée, et ces profils sont recommandés.

    Vous pouvez également ajouter un profil de livraison dynamique personnalisé à vos profils d'ingest dans la section Admin de Studio. Pour plus d'informations, reportez-vous à la section Création de profils d'ingest pour la livraison dynamique .

    Exemple de profil de livraison dynamique

    Voici un exemple de profil de livraison dynamique que vous pouvez utiliser pour commencer. Tout ce que vous devez faire est de YOUR_ACCOUNT_ID remplacer par votre identifiant de compte, puis vous pouvez copier et coller le profil dans l'éditeur de profil ingest.

        {
          "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 d'informations sur les profils de remise dynamique standard et les formats associés, voir Profils d'ingest standard pour la livraison dynamique

    Ingréter des vidéos

    Deux demandes d'API sont requises pour l'ingestion de 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 de requêtes de base ressemblerait à ce qui suit :

    Demande d'API CMS

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

    Les données de réponse incluront la vidéo id , qui est utilisée dans la demande suivante.

    Demande d'API d'ingest

    Méthode HTTP
    POSTE
    URL de demande
    https://ingest.api.brightcove.com/v1/accounts/{account_id}/videos/{video_id}/ingest-requests
    Corps de la requête
        {
          "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 du compte sera utilisé. Nous vous recommandons d'utiliser le compte par défaut, sauf si vous avez besoin d'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 utiliser (le plus souvent).
    • Le callbacks champ est facultatif, mais nous vous recommandons vivement de l'utiliser comme le meilleur moyen de suivre l'avancement des travaux d'ingestion. Voir ci-dessous pour en savoir plus sur les notifications.

    Affichage des formats associés

    Vous pouvez afficher les formats associés de votre vidéo en accédant au module Media dans Studio.

    Pour afficher les propriétés complètes des formats associés, vous pouvez utiliser la demande d'API CMS détaillée ci-dessous.

    Pour récupérer des URL pour la lecture, vous pouvez utiliser la 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 initialement ingéré, vous obtiendrez simplement un nouveau jeu de formats associés. Si le fichier source est nouveau, vous remplacerez la vidéo existante. Toutes les vidéos resteront lisibles avec les formats associés existants jusqu'à ce que le retranscodage soit terminé.

    Voir l' exemple de travail ici.

    Retranscode 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 requête d'ingest sera la même, mais le corps de la requête 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"
        }
        
        

    Ingérer l'image

    Au lieu d'avoir des images d'affiche et de vignettes capturées lors du transcodage, vous pouvez inclure vos propres images avec la demande d'ingest ou les ajouter ultérieurement dans une requête séparée.

    Corps de demande d'échantillon

        {
          "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 des notifications que vous recevez spécifiquement pour l'ingestion 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 légendes ingérent

    Les légendes au format WebVTT peuvent être ajoutées à votre vidéo avec la demande initiale d'ingestion ou dans une requête ultérieure.

    Corps de demande d'échantillon

        {
          "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 de texte Sidecar apparaîtront dans les réponses CMS ou Lecture, comme elles le font pour les vidéos Delivery non-Dynamic :

        "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 suivi texte

    Vous trouverez ci-dessous des exemples des 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 des pistes de texte (anglais et espagnol)

    Lecteur vidéo de livraison dynamique

    Légendes de sidecar dans une application iOS

    Légendes de sidecar de livraison dynamique
    Légendes de sidecar de livraison dynamique

    Récupérer des formats associés dynamiques

    Pour récupérer des informations sur les formats associés 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 formats associés 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"
        }
        
        

    Gestion des droits numériques (DRM)

    DRM est pris en charge, mais fonctionne différemment que pour l'ingestion vidéo ordinaire. Vous n'avez pas besoin de spécifier l'emballage dans le profil d'ingest. Au lieu de cela, l'emballage est automatique en fonction des paramètres DRM de votre compte. Contactez le support Brightcove pour définir les paramètres par défaut pour l'emballage DRM de vos vidéos.

    Pour plus de détails, voir Ingestion de contenu avec DRM.

    Formats associés filigranés

    Les formats associés filigranés sont pris en charge. Si vous souhaitez ajouter des filigranes à une partie ou à l'ensemble de vos vidéos, veuillez contacter le support Brightcove.

    Notez que des formats associés filigranes peuvent être ajoutés pour les profils de remise dynamique statiques, mais pas pour les profils CAE (Context Aware Encoding).

    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 Status pour obtenir le statut de la tâche.

    Rappels

    Dans votre demande d'ingest, 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 qui peuvent accepter les demandes POST. Les notifications seront envoyées au format JSON.

    Vous trouverez des détails sur la réception et l'interprétation des notifications dans Notifications

    API d'état

    Vous pouvez également obtenir l'état actuel des travaux d'ingeste à l'aide de l'API Status. Les messages d'état ne sont disponibles que pour les travaux d'ingestion soumis 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 une tâche particulière
        https://cms.api.brightcove.com/v1/accounts/:account_id/videos/:video_id/ingest_jobs/:job_id
        
        
    Exemple

    Réponses

    Voici 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 de l'emploi ( processing | publishing | finished | failed - quand cette tâche est complète et la vidéo prête à jouer, le state sera finished )
    • error_code et error_message  : pour un travail réussi, ce sera 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é pour 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 lors du transcodage et générer un ensemble optimal de rendus et de débits basés sur la complexité de la vidéo et un ensemble de paramètres de délimitation fournis (nombre minimum de rendus, débit binaire max, etc.).

    Pour savoir comment utiliser les profils CAE, reportez-vous à la section 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 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

    Pour plus d'informations sur l'utilisation de cette fonctionnalité, reportez-vous à 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. Affichez les exemples d'applications.

    En outre, les référentiels GitHub suivants contiennent des exemples de code en Java, Python et C # - notez que cet exemple de code n'est pas pris en charge 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 que la durée d'un segment. Si vous rencontrez cela, essayez d'utiliser une longueur de segment plus courte.