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:
- Neu transcodieren: Neue Darstellungen erstellen, wenn der Master vorhanden ist (Fehler, wenn der Master nicht vorhanden ist)
- Ersetzen: Zeigen Sie auf einen neuen Master oder ersetzen Sie einen vorhandenen Master
- Zusätzliche Medieninhalte aufnehmen:
- Vorschaubilder und Posterbilder
- Bildunterschriften, Untertitel oder Kapiteldefinitionen
- Zusätzliche Audiotracks (wenn Ihr Konto für mehrere Audiotracks aktiviert ist)
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
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:
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:
- Ruf den CMS API um ein Videoobjekt im Video Cloud-System zu erstellen und seine ID abzurufen
- 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)
Sidecar-Untertitel in einer iOS-App
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 seinfinished
)error_code
underror_message
: für einen erfolgreichen Job sind diesnull
; 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.