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

    Notifications d'ingestion dynamique

    Dans cette rubrique, vous découvrirez les notifications d'ingestion dynamique, qui fournissent des informations sur l'avancement de vos tâches d'ingestion. Notez que ce document s'applique uniquement au système d'ingeste hérité. Pour la livraison dynamique, consultez Notifications pour l'ingest dynamique.

    Notifications API d'ingestion dynamique

    Vous pouvez spécifier une ou plusieurs URL de rappel pour recevoir des notifications concernant les 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.

    Configuration

    Voici un exemple.

    • Utilisateur avec id de pub 57838016001
    • Souhaite utiliser Dynamic Ingest pour télécharger un fichier vidéo source situé à l'adresse https://s3.amazonaws.com/bucket/mysourcevideo.mp4
    • Souhaite télécharger un titre existant dans le catalogue avec l'ID vidéo 5199670523001
    • Utilisation du profil haute résolution
    • Souhaite recevoir des rappels à deux points de terminaison situés respectivement à http://host1/path1 et http://host2/path2

    La demande d'DI ressemblerait à ceci :

    Demande POST

    Corps de la requête

    Exemple de notification

    Les notifications sont envoyées en tant que requêtes POST avec la notification dans le corps de la requête en tant que JSON [1] . Voici quelques exemples de notification :

        {
            "accountId": "57838016001",
            "entityType": "ASSET",
            "version": "1",
            "status": "SUCCESS",
            "videoId": "5199670523001",
            "entity": "5199679295001",
            "action": "CREATE",
            "jobId": "699db2e5-aeb7-4765-a4a7-2cc68c7360bd"
        }
        {
            "action": "CREATE",
            "status": "SUCCESS",
            "entityType": "DIGITAL_MASTER",
            "videoId": "5199670523001",
            "entity": "5199670523001",
            "accountId": "57838016001",
            "version": "1",
            "jobId": "699db2e5-aeb7-4765-a4a7-2cc68c7360bd"
        }
        {
            "entityType": "ASSET",
            "status": "SUCCESS",
            "action": "CREATE",
            "entity": "5199680423001",
            "profileRefId": "ts7",
            "version": "1",
            "accountId": "57838016001",
            "videoId": "5199670523001",
            "jobId": "699db2e5-aeb7-4765-a4a7-2cc68c7360bd"
        }
        {
            "jobId": "699db2e5-aeb7-4765-a4a7-2cc68c7360bd",
            "accountId": "57838016001",
            "version": "1",
            "status": "SUCCESS",
            "entityType": "TITLE",
            "entity": "5199670523001",
            "videoId": "5199670523001",
            "action": "CREATE"
        }

    Remarques

    • [ 1] Exception : Toutes les notifications pour le contenu empaqueté DRM sont renvoyées sous la forme de paires clé/valeur. Dans ce cas, l' Content-Type en-tête sera application/x-www-form-urlencoded. Sinon, le Content-Type sera application/json

    Champs de notification

    Produit Description
    status sera FAILED si l'ingestion ou la création d'un format associé n'a pas réussi, SUCCESS si la demande a réussi
    accountId l'identifiant du compte
    videoId l'ID de la vidéo
    jobId l'identifiant de la tâche pour la requête Dynamic Inquest
    profileRefId

    Pour les rendus vidéo, il s'agit de celui reference id que vous avez spécifié pour le format associé dans votre profil d'ingest.

    Pour les manifestes, l' profileRefId indiquera le type du manifeste :

    • HlsManifest pour un manifeste HLS NG
    • HdsManifest pour un manifeste HDS
    • DashManifest pour les manifestes DASH (2 - l'un des actifs Manifest est utilisé pour la consommation dans le MAPI, l'autre est utilisé pour la consommation dans l'API CMS)
    • SmoothIsmManifest pour un manifeste lisse (2 - l'un des actifs du Manifest est utilisé pour la consommation dans le MAPI, l'autre est utilisé pour la consommation dans l'API CMS)
    entity s'il existe, l'identifiant Video Cloud de l'actif qui a été ingéré ou qui a échoué (si l'objet vidéo a été créé avec succès dans Video Cloud)
    entityType le type d'actif déclaré - par exemple : TITLE (une vidéo), DIGITAL_MASTER, ASSET (format associé, fichier de sous-titres ou image)
    errorMessage une explication de la raison pour laquelle l'ingestion a échoué si elle l'a fait
    version une chaîne toujours égale à "1"
    action l'action qui s'est produite - par exemple, CREATE

    Interprétation des notifications

    Notification contenant "action": "CREATE" et "status": "SUCCESS" indiquant l'achèvement d'un processus.

    • Si l' entityType est TITLE , alors le traitement d'une vidéo ingérée est terminé.
    • Si le entityType est ASSET , alors un format associé, une image, un manifeste ou un fichier WebVTT a été ajouté avec succès à votre vidéo.

    Remarque : a "status": "SUCCESS" sur un titre indique que le traitement est terminé, mais ne signifie pas nécessairement que tous les formats associés ont été créés avec succès. Pour déterminer si l'ingestion dynamique de vidéos a réussi, voir Obtenir le statut des demandes d'ingest dynamique

    Appli Exemple de base

    Voici le code d'une application de journalisation simple pour la Dynamic Ingest API notification. Cette application est écrite en PHP, mais vous pouvez utiliser n'importe quelle langue, tant que l'application a une URL publique et peut gérer les requêtes HTTP (s) POST.

    Vous pouvez voir le fichier journal que cette application génère ici.

    Remarque : si vous essayez d'implémenter cette application pour vous-même, vous devrez vous assurer que l'application a l'autorisation d'écrire dans votre fichier journal. Rappelez-vous également que le fichier journal peut croître rapidement - vous voudrez probablement le vider régulièrement.

        <?php
        //POST ne fonctionnera pas pour les données JSON
        $problem = "No errors";
        essayez {
            $json    = file_get_contents('php://input');
            $decoded = json_decode($json, true);
        } capture (Exception $e) {
            $problem = $e->getMessage();
        }
        
        //transformer la notification en JSON joli imprimé
        $notification = json_encode($decoded, JSON_PRETTY_PRINT);
        
        
        
        $logEntry = $notification.
        «  \ NerRORS recevant des notifications : ».$problème.
        «  \ n— \ n » ;
        
        //Finalement, dites à PHP où il peut trouver le fichier journal et dire à PHP de l'ouvrir
        //et ajoutez la chaîne que nous avons créée plus tôt.
        $logFileLocation = "di-log.txt «  ;
        $fileHandle      = fopen($logFileLocation, 'a') or die("-1");
        fwrite ($FileHandle, $LogEntry) ;
        fclose ($FileHandle) ;
        
        //ligne ci-dessous s'affiche lorsque vous naviguez directement dans l'application
        echo « L'application de rappel Dynamic Ingest est en cours d'exécution » ;
        ?>