Support Kontaktieren Sie Support | Systemstatus Systemstatus
Inhalt der Seite

    Quelldatei-Upload-API für dynamisches In

    In diesem Thema erfahren Sie, wie Sie Ihrem Video Cloud-Konto mithilfe der Quelldatei-Upload-API für Dynamic Ingest Videos hinzufügen. Die Quelldatei-Upload-API bietet die Möglichkeit, Quelldateien über Dynamic Intest in Video Cloud hochzuladen (zu pushen).

    Einführung

    Für die Aufnahme über das Hochladen von Quelldateien bietet Brightcove einen S3-Bucket, in den Sie Ihre Videos und Asset-Dateien hochladen können. Dynamic Ingest ruft das Video dann aus dem S3-Bucket auf dieselbe Weise ab wie aus Ihrem eigenen S3-Bucket oder Ihrer eigenen URL. Das folgende Diagramm zeigt den Unterschied zwischen den Workflows für die dynamische Grundaufnahme und die Aufnahme beim Hochladen der Quelldatei.

    Unterschiede im Arbeitsabl
    Unterschiede im Arbeitsabl

    Häufige Fragen

    Wie lange werden Videos vorübergehend gespeichert und wann werden die URLs für sie ungültig?
    Videos werden 24 Stunden nach dem Hochladen aus dem temporären Speicher entfernt, und die URLs für sie sind danach nicht mehr gültig.
    Wie lange werden die S3-Anmeldeinformationen von der zurückgegeben? Dynamic Ingest API gültig?
    Die S3-Anmeldeinformationen sind auch 24 Stunden nach dem Senden durch die API gültig.
    Werden Videodateien nach 24 Stunden physisch aus dem S3-Bucket gelöscht?
    Ja
    Werden Videos aus dem S3-Bucket gelöscht, nachdem sie erfolgreich aufgenommen wurden?
    Alle Videos werden nach 24 Stunden aus dem temporären Speicher gelöscht, unabhängig davon, ob sie erfolgreich aufgenommen wurden oder nicht.
    Kann jemand, der die URL hat, öffentlich auf die Videos im temporären Speicher zugreifen?
    Nein
    Gibt es eine Möglichkeit, das Video ohne Sicherheitsanmeldeinformationen im temporären Speicher herunterzuladen oder anzuzeigen?
    Nein
    Werden die Sicherheitsanmeldeinformationen für den Zugriff auf den temporären Speicher für andere Brightcove-Kunden freigegeben?
    Nein, jeder Kunde, der den temporären Speicher verwendet, erhält eindeutige Sicherheitsanmeldeinformationen.
    Gibt es eine Möglichkeit, wie andere Brightcove-Kunden mit ihren eigenen Sicherheitsanmeldeinformationen auf meine Videos im temporären Speicher zugreifen können?
    Nein, Sicherheitsanmeldeinformationen bieten nur Zugriff auf die Videos, die Sie in den temporären Speicher verschoben haben.
    In welcher Region befindet sich der S3-Bucket für Datei-Uploads?
    US-EAST-1 (dies ist behoben).

    Namen von Quelldateien

    Um Probleme beim Zugriff auf Videos und Assets im Brightcove Player zu vermeiden, sollten Sie die Verwendung von Sonderzeichen in Quelldateinamen vermeiden, unabhängig davon, ob es sich um Videos, Bilder oder Textspuren (WebVTT-Dateien) handelt. Dies gilt auch für Remote-Assets. Dateinamen sollten nur Folgendes enthalten:

    • Einzelbyte Buchstaben (Groß- oder Kleinschreibung)
    • Zahlen
    • Striche (-) und Unterstriche (_)
    • Räume wenn sie URL-codiert sind

    Authentifizierung

    Der einfachste Weg, um Client-Anmeldeinformationen für Dynamic Ingest abzurufen, ist über die Studio Admin-Seite für die API-Authentifizierung. Für die API-Berechtigungen benötigen Sie mindestens:

    • CMS> Video lesen
    • Dynamische Aufnahme> Erstellen
    • Dynamic Ingest> Push Files (dies ist die neue API zum Hochladen von Quelldateien)
    API Authetication
    API Authetication

    Für die Authentifizierung von Brightcove-API-Anforderungen für die Push-basierte Aufnahme ist eine zusätzliche Berechtigung erforderlich andere Dynamic Ingest-Anforderungen::

          video-cloud/upload-urls/read

    Der vollständige Satz von Berechtigungen, die für das Hochladen der Quelldatei erforderlich sind, lautet:

    • video-wolke/video/erstellen
    • video-wolke/video/lesen
    • video-wolke/video/update
    • Video-Cloud / Upload-URLs / Lesen

    Diese Berechtigungen sind in verfügbar Studio. Alternativ können Sie Client-Anmeldeinformationen abrufen, um die Upload-API für Quelldateien direkt von der OAuth-API zu verwenden, indem Sie eine POST-Anforderung wie folgt stellen:

    Anfrage-URL

          https://oauth.brightcove.com/v4/client_credentials

    Header

    • Authorization: BC_TOKEN {YOUR_BC_TOKEN}
    • Content-Type: Anwendung/JSON

    Anfrage Body

          {
          "type": "credential",
          "maximum_scope": [
          {
            "identity": {
              "type": "video-cloud-account",
              "account-id": {YOUR_ACCOUNT_ID}
            },
            "operations": [
              "video-cloud/upload-urls/read",
              "video-cloud/video/create",
              "video-cloud/video/read",
              "video-cloud/video/update",
              "video-cloud/ingest-profiles/profile/write",
              "video-cloud/ingest-profiles/account/write",
              "video-cloud/ingest-profiles/profile/read",
              "video-cloud/ingest-profiles/account/read"
            ]
          }
          ],
          "name": "Source File Upload Credentials"
          }

    API-Anfragen

    Bei der Push-basierten Aufnahme sind vier API-Anforderungen beteiligt:

    1. POST-Anforderung der CMS-API zum Erstellen des Videoobjekts in der Video Cloud (wie bei der Pull-basierten Aufnahme)
    2. Dynamic Ingest GET-Anforderung zum Abrufen der Brightcove S3-Bucket-URLs
    3. PUT-Anforderung zum Hochladen der Quelldatei in den Brightcove S3-Bucket
    4. Dynamische Aufnahme POST-Anforderung zum Aufnehmen der Quelldatei (wie bei Pull-basierter Aufnahme)

    Diese Anforderungen werden in den folgenden Abschnitten detailliert beschrieben.

    CMS-API-Anfrage

    Das CMS API Die Anforderung ist dieselbe wie bei jedem Dynamic Ingest-Vorgang zum Hinzufügen eines neuen Videos. Diese Anforderung ist erforderlich, um ein neues Video aufzunehmen. Wenn Sie Assets zu einem vorhandenen Video ersetzen oder hinzufügen, benötigen Sie diesen Schritt nicht. Stattdessen verwenden Sie die vorhandene Video-ID in den anderen Anforderungen.

    Syntax anfragen

    Dies ist eine POST Anfrage an:

          https://cms.api.brightcove.com/v1/accounts/{ACCOUNT_ID}/videos

    Parameter

    URL-Parameter für die Anfrage:

    • {ACCOUNT_ID} - Ihre Konto-ID

    Anfrage Body

    Der Anforderungshauptteil besteht aus einem JSON-Objekt, das das enthält name (erforderlich) und andere Metadaten für das Video (optional):

          {
          "name": "My Video"
          }

    Siehe die API-Referenz für Details.

    Header

    Die HTTP-Header, die Sie in die Anfrage aufnehmen müssen, sind:

    • Authorization: Bearer {ACCESS_TOKEN}
    • Content-Type: application/json

    REAKTION

    Die Antwort ist ein JSON-Objekt, das die Videometadaten enthält. Das wichtige Element für den Rest der Dynamic Ingest-Vorgänge ist das id , die Sie für die ersetzen werden {VIDEO_ID} in den Anforderungen an die Ingest-API.

    Anfrage für S3-URLs

    Bei der ersten Anforderung an die Ingest-API werden die Informationen abgerufen, die Sie benötigen, um Ihre Quelldatei (en) in den Brightcove S3-Bucket zu stellen und von dort in die Video Cloud aufzunehmen.

    Syntax anfragen

    Dies ist eine GET Anfrage an:

          https://ingest.api.brightcove.com/v1/accounts/{ACCOUNT_ID}/videos/{VIDEO_ID}/upload-urls/{SOURCE_NAME}

    Parameter

    URL-Parameter für die Anfrage:

    • {ACCOUNT_ID} - Ihre Konto-ID
    • {VIDEO_ID} - Die Video-ID wurde von der CMS API Anfrage zurückgegeben
    • {SOURCE_NAME}- der Dateiname der Videoquelle - Der Name sollte keine URL-reservierten Zeichen enthalten, wie z ? , & , # oder Leerzeichen

    Header

    Die HTTP-Header, die Sie in die Anfrage aufnehmen müssen, sind:

    • Authorization: Bearer {ACCESS_TOKEN}

    REAKTION

    Die Antwort ist ein JSON-Objekt, das dem folgenden ähnelt:

          {
          "bucket": "ingestion-upload-production",
          "object_key": "57838016001/4752143002001/ed5a5ba0-1d97-4f95-a8ec-cbb786b04a37/greatblueheron.mp4",
          "access_key_id": "ACCESS_KEY_APPEARS_HERE",
          "secret_access_key": "SECRET_ACCESS_KEY_APPEARS_HERE",
          "session_token": "FQoDYXdzEKf//////////wEaDKR0wDgquq/qvkZgbyKOA7URC/9io6cmRBDkhbvxoHIKkPZlK/9YNvdWcESPkm75/2PvU6FV1Mc+/XENPzY8KgvP86MBJNxYLPdkuP1phgHs2Yh2p1KIDcQSCZJ3i6i9m4S14ewjWIugYLYDQi6CG+3fiFwfzbKT5jes1kh24m9BQQIuvVOiM1GLTldyDzlrdDopJkdYd4IEU7FU36CUT7RL/aeMwR2Usk56nwqyqkkQHPmvqmGyiLdrD3OrIbUU+6+ZP4usS9dbV3eAqOWDIk3HCN+Kuc9f/eUWhY21ftNDXWgasqQqXwPRs3T1i/hoiIKODbzr8F",
          "signed_url": "https://ingestion-upload-production.s3.amazonaws.com/57838016001/4752143002001/ed5a5ba0-1d97-4f95-a8ec-cbb786b04a37/greatblueheron.mp4?AWSAccessKeyId=ACCESS_KEY_HERE&Expires=1475673952&Signature=%2Fsr5cV%2FVOfGCBkodol9xQIKlbu4%3D",
          "api_request_url": "https://ingestion-upload-production.s3.amazonaws.com/57838016001/4752143002001/ed5a5ba0-1d97-4f95-a8ec-cbb786b04a37/greatblueheron.mp4"
          }

    Die Elemente in der Antwort sind:

    • bucket- der Name des S3-Buckets
    • object_key- der Objektschlüssel für den Datei-Upload (wird beim Erstellen der Ziel-URL für mehrteilige Uploads verwendet)
    • access_key_id- der Zugriffsschlüssel zur Authentifizierung der Upload-Anforderung (für mehrteilige Uploads)
    • secret_access_key- der geheime Zugriffsschlüssel zur Authentifizierung der Upload-Anfrage (für mehrteilige Uploads)
    • session_token- Ein kurzlebiges AWS-Token, mit dem auf das Zielobjekt geschrieben werden kann
    • signed_url- Dies ist eine Kurzform der S3-URL, in die Sie Ihre Quelldatei (en) einfügen können, wenn Sie relativ kleine Videos haben und keinen mehrteiligen Upload implementieren
    • api_request_url- Dies ist die URL, die Sie in Ihre POST-Anforderung für Dynamic Ingest für die Master-URL oder die URL für die Assets image / text_tracks aufnehmen

    Es wird empfohlen, den mehrteiligen Upload mit dem AWS SDK für die von Ihnen verwendete Sprache zu verwenden. SDKs sind für viele Sprachen verfügbar, einschließlich Java, .NET, Ruby, PHP, Python, JavaScript, Go und C ++. Siehe die AWS Developer Blog für mehr Informationen.

    Wenn Sie einen mehrteiligen Upload implementieren, sind die folgenden Dokumente und der folgende Beispielcode hilfreich:

    Hier ist ein einfaches Beispiel in PHP:

          <?php
          // AWS SDK (für Push-Ingests)
          erfordern 'vendor / aws-autoloader.php';
          
          benutze Aws \\ S3 \\ S3Client;
          benutze Aws \\ S3 \\ MultipartUploader;
          Verwenden Sie Aws \\ Exception \\ MultipartUploadException.
          
          /**
           * Erhalten Sie S3-Informationen wie oben in diesem Dokument beschrieben
           * Der folgende Code setzt voraus, dass er als $ s3response dekodiert wurde
           * und dass $ filePath der lokale Pfad zur Asset-Datei ist
           */
          
          s3 = neuer S3Client ([
              'version' => 'latest',
              'region' => 'us-east-1',
              'Anmeldeinformationen' => Array (
                  'key' => $ s3response-> access_key_id,
                  'secret' => $ s3response-> secret_access_key,
                  'Zeichen'	 => $ s3response-> session_token
              )
          ]);
          $ params = array (
              'Bucket' => $ s3response-> s3-> Bucket,
              'key' => $ s3response-> s3-> object_key
          );
          $ uploader = neuer MultipartUploader ($ this-> s3, $ filePath, $ params);
          versuche {
              $ uploadResponse = $ uploader-> upload ();
          } catch (MultipartUploadException $ e) {
              echo $ e-> getMessage (). "\\ n";
          }
          ?>

    PUT-Quelldatei (en) an S3

    Nachdem Sie die S3-URLs erhalten haben, stellen Sie eine PUT-Anforderung zum Hochladen Ihrer Videodatei mithilfe von signed_url als Ziel.

    Sie können Folgendes verwenden locken Befehl zum Testen der PUT-Operation:

          curl -X PUT "SIGNED_URL_GOES_HERE" --upload-file FILE_PATH_FOR_LOCAL_ASSET_GOES_HERE 

    Einzel- oder mehrteiliger Upload

    AWS ermöglicht einteilige Uploads für Dateien mit einer Größe von bis zu 5 GB (es gibt keine weiteren Beschränkungen für die Dateigröße). Für größere Dateien müssen Sie mehrteilige Uploads verwenden. Obwohl das Einrichten eines einzelnen Teils etwas einfacher einzurichten ist, empfehlen wir, wann immer möglich das mehrteilige Hochladen zu verwenden. Hier sind die Unterschiede zwischen den beiden:

    • Beim Hochladen eines einzelnen Teils wird das Video als eine Datei hochgeladen. Das Hochladen einzelner Teile ist auf Dateigrößen von 5 GB oder weniger beschränkt. Wenn der Upload aus irgendeinem Grund unterbrochen wird, müssen Sie von vorne beginnen.
    • Beim mehrteiligen Hochladen wird die Datei in Blöcke verschoben. Dies ist effizienter, da beim Hochladen mehrere Verbindungen genutzt werden können. Wenn der Upload unterbrochen wird, kann er dort fortgesetzt werden, wo er mit den verbleibenden Blöcken aufgehört hat.

    Dynamische Aufnahmeanforderung

    Nachdem Ihre Datei in den Brightcove S3-Bucket hochgeladen wurde, stellen Sie eine normale Dynamic Ingest-Anforderung, um die Datei von ihrem S3-Speicherort aufzunehmen.

    Syntax anfragen

    Dies ist eine POST Anfrage an:

          https://ingest.api.brightcove.com/v1/accounts/{ACCOUNT_ID}/videos/{VIDEO_ID}/ingest-requests

    Parameter

    URL-Parameter für die Anfrage:

    • {ACCOUNT_ID} - Ihre Konto-ID
    • {VIDEO_ID} - Die Video-ID wurde von der CMS API Anfrage zurückgegeben

    Anfrage Body

    Der Anforderungshauptteil besteht aus einem JSON-Objekt, das das enthält master (erforderliche) Details für den Aufnahmeauftrag. Das url für die master wird sein api_request_url Wird von der Anforderung für die S3-Bucket-Informationen zurückgegeben

          {
          "master": {
              "url": "https://ingestion-upload-prod.s3.amazonaws.com/12345/5678/3712cd37504911ab06a77a26a387ce/source.mp4"
          },
          "profile": "multi-platform-standard-static",
          "capture-images": true
          }

    Siehe die API-Referenz für Details.

    Header

    Die HTTP-Header, die Sie in die Anfrage aufnehmen müssen, sind:

    • Authorization: Bearer {ACCESS_TOKEN}
    • Content-Type: application/json

    REAKTION

    Die Antwort enthält die job_id für die Aufnahmeanforderung, mit der Sie den Status über verfolgen können Benachrichtigungen.

    Beispielcode

    Um Ihnen den Einstieg in die Push-basierte dynamische Aufnahme zu erleichtern, haben wir einige Beispiel-Apps in Java und Python erstellt. Sie finden sie auf unserer Github Seite.


    Seite zuletzt aktualisiert am 28 Sep 2020