Überblick: Dynamische Ingest-API

In diesem Thema erfahren Sie, wie Sie die verwenden, Dynamic Ingest API um Videos aufzunehmen, damit sie über Dynamic Delivery bereitgestellt werden können.

Einleitung

Brightcove's Dynamic Ingest API basiert auf Funktionen, bei denen Videoquelldateien vom Speicherort des Kunden heruntergeladen und bestimmte Wiedergaben der Quelldateien erstellt werden. (Es besteht auch die Möglichkeit, Laden Sie Ihre Quelldateien hoch an einen temporären Speicherort, an dem Dynamic Ingest darauf zugreifen kann.) Die Plattform ist Cloud-zentriert, global verteilt und basiert auf modernen Praktiken, um die beste Konsistenz und Geschwindigkeit ihrer Klasse zu bieten.

Siehe auch die API-Referenz.

Workflow-Übersicht

Bei der gesamten Transcodierung und Speicherung von Medien werden eine Reihe von Systemen/Technologien verwendet. Sie sind:

  • CMS-API: Erstellt ein Videoobjekt zur Verwendung in der DI API
  • Zencoder: Transkodiert das Video und erstellt mehrere Wiedergaben
  • Amazon S3: Verschiebt den Master und die Wiedergabeversionen in den Speicher, basierend auf den Profileinstellungen
  • Katalog: Speichert die mit dem Video verknüpften erforderlichen Informationen

Nach der ersten Transcodierung haben Sie die folgenden Aktionen, die Sie auf den Medien ausführen können:

Betrieb

Wenn Sie die DI API verwenden, führen Sie verschiedene Vorgänge aus, z. B. das Lesen eines Aufnahmeprofils und das Schreiben von Aufnahmeinformationen in Ihr Konto. Im Folgenden finden Sie eine vollständige Liste der Operationen, die für DI-Aufgaben erforderlich sind:

  • 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

Um Kundenanmeldeinformationen zu erhalten, verwenden Sie das Studio Admin-Tools oder sehen Sie sich eines der folgenden Dokumente an:

Empfohlene Vorgehensweise

Sehen Dynamische Aufnahme-API: Empfohlene Vorgehensweise.

Gültige Quellstandorte

Pull-basierte Aufnahme

Dynamic Ingest kann Quellvideodateien abrufen von: HTTP/HTTPS, S3 und FTP – mit oder ohne Authentifizierung

Beispiele:

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

Hinweise zu S3

Wenn sich Ihre Videos in einem geschützten S3-Bucket befinden, lesen Sie Verwenden der dynamischen Aufnahme mit S3 Weitere Informationen zum Einrichten von Berechtigungen für Dynamic Ingest für den Zugriff auf Ihre Dateien.

Hinweise zu FTP

Wenn sich Ihre Videos auf einem geschützten FTP-Server befinden, verwenden Sie die Standardmethode zum Übergeben des Benutzernamens und des Kennworts an die URL wie folgt:

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

Quelldatei-Upload

Sie können Ihre Dateien auch an einen sicheren, temporären Speicherort hochladen, von dem Dynamic Ingest sie abrufen kann. Einzelheiten finden Sie unter Quelldatei-Upload.

Spezielle Charaktere

Wenn Sie Video Cloud eine URL zum Abrufen Ihrer Videos bereitstellen und Anmeldeinformationen als Teil der URL senden , du brauchst Prozentkodierung bestimmte reservierte Sonderzeichen:

Sonderzeichen
Charakter Prozentcodiert
] %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
Platz %20

Zum Beispiel:

/* 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

Doppelte URL-Codierung

Jedes Mal, wenn eine URL vor der Verarbeitung einmal dekodiert wird, sollten Sie die Eingabe-URL zweimal URL-kodieren, bevor Sie den Aufnahmejob senden.

Zum Beispiel:

EIN master.url von

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

wird vor der Verarbeitung wie folgt umgewandelt:

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

Sie sollten es stattdessen wie folgt doppelt codieren:

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

Informationen zum Verschlüsseln einer URL finden Sie im String-Encoder dokumentieren.

Quelldateinamen

Alle Eingabe-URLs müssen gemäß RFC 3986 beim Senden an Brightcove. Das bedeutet, dass alle reservierten Zeichen im Pfad der URL prozentual kodiert sind (Leerzeichen werden kodiert %20) und alle reservierten Zeichen, die in der URL-Abfrage gefunden werden, prozentual kodiert sind (Leerzeichen werden nach + oder kodiert %20, und + wird kodiert zu %2B).

A vorsigniert S3 (v2 enthält Unterschrift , Läuft ab Und AWSAccessKeyId , Und v4 enthält X-Amz-Algorithmus , X-Amz-Credential , X-Amz-Datum , X-Amz-Ablauf , X-Amz-SignedHeaders , Und X-Amz-Signatur ) oder GKS (enthält Unterschrift , Läuft ab , Und GoogleAccessId ) URL sollte bereits richtig kodiert sein und kann so wie es ist verwendet werden.

Beispiel-Assets

Brightcove Learning Services bietet einige Beispiel-Assets, mit denen Sie bei den ersten Schritten mit Dynamic Ingest experimentieren können. Zu diesen Assets gehören kurze Videos, Bilder und WebVTT-Untertitel in mehreren Sprachen:

Aufnahmeprofil

Zum Erstellen von Dynamic Delivery-Videos sind spezielle Aufnahmeprofile erforderlich. Du findest ein paar Standardaufnahmeprofile in Ihrem Konto, wenn Dynamic Delivery aktiviert ist, und diese werden empfohlen.

Sie können Ihren Aufnahmeprofilen im Admin-Bereich von Studio auch ein benutzerdefiniertes Dynamic Delivery-Profil hinzufügen - siehe Erstellen von Aufnahmeprofilen für die dynamische Bereitstellung für Details.

Beispiel für ein Dynamic Delivery-Profil

Unten finden Sie ein Beispiel für ein Dynamic Delivery-Profil, mit dem Sie beginnen können. Alles was Sie tun müssen, ist ersetzen YOUR_ACCOUNT_ID mit Ihrer Konto-ID, und dann können Sie das Profil kopieren und in den Aufnahmeprofil-Editor einfügen.

    {
      "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
          }
        ]
      }
    }
    

Weitere Informationen zu standardmäßigen dynamischen Übermittlungsprofilen und -wiedergaben finden Sie unter Standardaufnahmeprofile für die dynamische Bereitstellung

Videos aufnehmen

Für die Aufnahme von Videos sind zwei API-Anfragen erforderlich:

  1. Ruf den CMS API um ein Videoobjekt im Video Cloud-System zu erstellen und seine ID abzurufen
  2. Ruf den Dynamic Ingest API um die URL für die Videoquelldatei bereitzustellen und bei Bedarf andere Dateien und Einstellungen für die Aufnahme anzugeben

Ein Beispielsatz grundlegender Anforderungen würde wie folgt aussehen:

CMS-API-Anfrage

HTTP-Methode
BEITRAG
Anfrage-URL
https://cms.api.brightcove.com/v1/accounts/{account_id}/videos
Anfragetext
    {
    "name": "My First Dynamic Delivery Video"
    }
    
    

Die Antwortdaten enthalten das Video id , das in der nächsten Anfrage verwendet wird.

API-Anfrage aufnehmen

HTTP-Methode
BEITRAG
Anfrage-URL
https://ingest.api.brightcove.com/v1/accounts/{account_id}/videos/{video_id}/ingest-requests
Anfragetext
    {
      "master": {
        "url": "https://host/master.mp4"
      },
      "profile": "DynamicDeliverIngestProfile",
      "callbacks": [
        "https://mydomain.com/di-callbacks.php"
      ]
    }
    

Hinweise

  • Wenn Sie die nicht einschließen profile Feld wird dieses Kontostandardprofil verwendet. Wir empfehlen, den Kontostandard zu verwenden, es sei denn, Sie müssen unterschiedliche Profile für verschiedene Arten von Videos verwenden. Stellen Sie sicher, dass Sie als Kontostandard das Profil festlegen, das Sie (am häufigsten) verwenden möchten.
  • Die callbacks Das Feld ist optional, wir empfehlen jedoch dringend, es zu verwenden, um den Fortschritt von Aufnahmejobs zu verfolgen. Sehen unter Weitere Informationen zu Benachrichtigungen.

Wiedergabe von Wiedergaben

Sie können die Wiedergabeversionen für Ihr Video anzeigen, indem Sie auf die Medienmodul in Studio.

Um die vollständigen Eigenschaften der Wiedergabeversionen anzuzeigen, können Sie die CMS-API-Anfrage unten detailliert beschrieben.

Um URLs für die Wiedergabe abzurufen, können Sie die Playback-API-Anfrage unten detailliert beschrieben.

Ersetzen eines Videos

Um ein Video durch eine neue Version oder einen neuen Satz von Wiedergaben zu ersetzen, müssen Sie die Dynamic Ingest API Anruf ist genau das gleiche wie für neue Videos aufnehmen - Der einzige Unterschied besteht darin, dass Sie keinen vorherigen Anruf bei der CMS API um das Videoobjekt im Video Cloud-System zu erstellen und eine ID dafür zu erhalten. Wenn die Quellvideodatei unter der angegebenen URL dieselbe ist, die ursprünglich aufgenommen wurde, erhalten Sie einfach einen neuen Satz von Wiedergaben. Wenn die Quelldatei neu ist, ersetzen Sie das vorhandene Video. Alle Videos bleiben mit vorhandenen Wiedergabeversionen abspielbar, bis die Neutranscodierung abgeschlossen ist.

Siehe die Arbeitsprobe hier.

Ein Video neu transkodieren

Wenn Sie möchten Archivieren Sie einen Meister wenn Sie das Video über die aufgenommen haben Dynamic Ingest API oder das Studio-Upload-Modul, dann können Sie das Video auch vom Master erneut transkodieren. Auch hier ist die URL für die Aufnahmeanfrage dieselbe, aber der Anfragetext hat Folgendes:

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

Bildaufnahme

Anstatt Poster- und Miniaturbilder während der Transcodierung erfassen zu lassen, können Sie Ihre eigenen Bilder in die Aufnahmeanfrage einschließen oder sie später in einer separaten Anfrage hinzufügen.

Beispielanfragetext

    {
      "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"
      ]
    }
    

Benachrichtigungen zur Aufnahme von Bildinhalten

Unten finden Sie Beispiele für Benachrichtigungen, die Sie speziell für Bildaufnahmen erhalten.

    {
        "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"
    }
    
    

Untertitel aufnehmen

Untertitel im WebVTT-Format können Ihrem Video mit der ersten Aufnahmeanfrage oder in einer späteren Anfrage hinzugefügt werden.

Beispielanfragetext

    {
      "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"
      ]
    }
    

Sidecar-Textspuren werden in CMS- oder Playback-Antworten angezeigt, wie dies bei Videos ohne Dynamic Delivery der Fall ist:

    "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
      ]
    }
    

Textspuren werden auch in HLS- und DASH-Manifesten angezeigt:

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"
    
    

BINDESTRICH

    <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>
    
    

Benachrichtigungen für Texttrack-Assets

Unten finden Sie Beispiele für Benachrichtigungen, die für die Aufnahme von Texttracks spezifisch sind.

    {
      "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"
    }
    
    

Sample-Player mit Textspuren (Englisch und Spanisch)

Videoplayer mit dynamischer Bereitstellung

Sidecar-Untertitel in einer iOS-App

Dynamische Bereitstellungs-Sidecar-Untertitel
Dynamische Bereitstellungs-Sidecar-Untertitel

Abrufen dynamischer Wiedergaben

Um Informationen zu den dynamischen Wiedergaben für ein Video abzurufen, senden Sie eine GET-Anfrage an:

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

Beispielantwort

    [
      {
        "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
      }
    ]
    

Abrufen von URLs für die Wiedergabe

Um Informationen zu den dynamischen Wiedergaben für ein Video abzurufen, senden Sie eine GET-Anfrage an:

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

Beispielantwort

    {
      "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"
    }
    
    

DRM

DRM wird unterstützt, funktioniert aber anders als bei der normalen Videoaufnahme. Sie machen nicht Sie müssen die Verpackung im Aufnahmeprofil angeben. Stattdessen erfolgt die Paketierung automatisch basierend auf den DRM-Einstellungen für Ihr Konto. Brightcove-Support kontaktieren um Standardeinstellungen für die DRM-Paketierung Ihrer Videos festzulegen.

Weitere Informationen finden Sie unter Aufnahme von Inhalten mit DRM.

Wiedergabe mit Wasserzeichen

Wiedergabe mit Wasserzeichen sind unterstützt. Wenn Sie einigen oder allen Ihrer Videos Wasserzeichen hinzufügen möchten, wenden Sie sich bitte an den Brightcove-Support.

Beachten Sie, dass für statische Dynamic Delivery-Profile Wiedergaben mit Wasserzeichen hinzugefügt werden können, aber nicht für Context Aware Encoding (CAE)-Profile.

Aufnahmestatus

Sie können Informationen über Ihre Dynamic Delivery-Ingest-Verarbeitung erhalten, indem Sie Rückrufe abonnieren und/oder eine Status-API abfragen, um den Status des Auftrags abzurufen.

Rückrufe

In Ihrer Aufnahmeanforderung können Sie eine oder mehrere Rückruf-URLs angeben, um Benachrichtigungen über die Ergebnisse des Aufnahmevorgangs zu erhalten. Die von Ihnen angegebenen URLs sollten für Apps gelten, die POST-Anforderungen akzeptieren können. Benachrichtigungen werden im JSON-Format gesendet.

Details zum Empfang und zur Interpretation von Benachrichtigungen finden Sie in Benachrichtigungen

Status-API

Sie können den aktuellen Status von Aufnahmejobs auch mithilfe der Status-API abrufen. Statusmeldungen sind nur für Aufnahmejobs verfügbar, die innerhalb der letzten 7 Tage gesendet wurden.

Endpunkte

Alle Statusmeldungen zu einem Video
    https://cms.api.brightcove.com/v1/accounts/:account_id/videos/:video_id/ingest_jobs
    
    
Beispiel
    https://cms.api.brightcove.com/v1/accounts/57838016001/videos/5128433746001/ingest_jobs
    
    
Statusmeldung für einen bestimmten Job
    https://cms.api.brightcove.com/v1/accounts/:account_id/videos/:video_id/ingest_jobs/:job_id
    
    
Beispiel

Antworten

Unten sehen Sie eine Beispielantwort für einen Job, der gerade verarbeitet wird.

    {
    "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"
    }
    
    

Die wichtigsten Punkte hier sind:

  • state : der Status des Jobs ( processing | | publishing finished | failed - wenn dieser Job abgeschlossen ist und das Video abgespielt werden kann, state wird sein finished )
  • error_code und error_message : für einen erfolgreichen Job sind dies null ; für fehlgeschlagene Jobs erhalten Sie einen Fehlercode und eine erklärende Meldung

Hier ist ein Beispiel für eine Statusmeldung für einen fehlgeschlagenen Job zum Vergleich:

    {
    "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"
    }
    
    

Kontextbewusste Kodierung

Context Aware Encoding (CAE) ist eine von Brightcove entwickelte Technologie zur Analyse des Quellvideos während der Transcodierung und zur Generierung eines optimalen Satzes von Wiedergabeversionen und Bitraten, basierend auf der Komplexität des Videos und einer Reihe bereitgestellter Begrenzungsparameter (Mindestanzahl von Wiedergabeversionen, maximale Bitrate usw.).

Informationen zur Verwendung von CAE-Profilen finden Sie unter Kontextbewusste Kodierung.

Mehrere Audiospuren

Konten, die für Dynamic Delivery eingerichtet wurden, können aktiviert werden, um mehrere Audiospuren für Videos zuzulassen.

Die Möglichkeit, mehrere Audiospuren einem einzelnen Titel zuzuordnen, kann in einigen wichtigen Szenarien nützlich sein:

  • Wiedergabe desselben Videos in verschiedenen Sprachen für eine größere Reichweite weltweit 
  • Bereitstellung von Audio mit Beschreibungen für Sehbehinderte

Einzelheiten zur Verwendung dieser Funktion finden Sie unter Mehrere Audiospuren.

Beispielcode

Learning Services bietet mehrere Beispiel-Apps, die eine Weboberfläche bereitstellen und senden Dynamic Ingest API Anfragen über einen PHP-Proxy. Sehen Sie sich die Beispiel-Apps an.

Darüber hinaus enthalten die folgenden GitHub-Repositorys Beispielcode in Java, Python und C#. Beachten Sie, dass dieser Beispielcode nicht unterstützt von Brightcove:

Einschränkungen

  • Bei segmentierten Videotypen (HLS und DASH) verarbeiten einige Player den Fall nicht, in dem sich die Audio- und Videostreamlängen um mehr als die Dauer eines Segments unterscheiden. Wenn Sie darauf stoßen, versuchen Sie es mit einer kürzeren Segmentlänge.