Support Kontakt Support | Systemstatus Systemstatus

Quelldatei-Upload-API für dynamisches Ingest

In diesem Thema erfahren Sie, wie Sie Ihrem Video Videos hinzufügen können Video Cloud Konto, das die Quelldatei-Upload-API für dynamisches Ingest verwendet. Die Quelldatei-Upload-API bietet die Möglichkeit, Quelldateien hochzuladen ("push") Video Cloud über dynamische Aufnahme.

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.

Workflow-Unterschiede
Workflow-Unterschiede

FAQ

Wie lange werden Videos temporär gespeichert und wann werden die URLs für sie ungültig?
Videos werden nach 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-Anmeldedaten von der Dynamic Ingest API gültig?
Die S3-Anmeldeinformationen gelten auch für 24-Stunden, nachdem die API sie gesendet hat.
Werden Videodateien nach 3-Stunden physisch aus dem S24-Bucket gelöscht?
Ja
Werden Videos nach der erfolgreichen Aufnahme aus dem S3-Bucket gelöscht?
Alle Videos werden nach 24-Stunden aus dem temporären Speicher gelöscht, unabhängig davon, ob sie erfolgreich aufgenommen wurden oder nicht.
Können die Videos im temporären Speicher öffentlich von jemandem aufgerufen werden, der die URL hat?
Nein
Gibt es eine Möglichkeit, das Video im temporären Speicher ohne Sicherheitsinformationen herunterzuladen oder anzusehen?
Nein
Sind 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 Sicherheitsinformationen.
Gibt es eine Möglichkeit für andere Brightcove-Kunden, mit ihren eigenen Sicherheitsinformationen auf meine Videos im temporären Speicher zuzugreifen?
Nein, Sicherheitsberechtigungsnachweise 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 (das ist behoben).

Quelldateinamen

Um Probleme beim Zugriff auf Videos und Assets in der Brightcove Playersollten Sie vermeiden, Sonderzeichen in Quelldateinamen zu verwenden, egal ob es sich um Videos, Bilder oder Textspuren (WebVTT-Dateien) handelt. Dies gilt auch für entfernte Anlagen. Dateinamen sollten nur Folgendes enthalten:

  • Einzelbyte Buchstaben (Groß- oder Kleinschreibung)
  • Zahlen
  • Bindestriche (-) und Unterstriche (_)
  • Spaces wenn sie URL-codiert sind

Beglaubigung

Der einfachste Weg, die Client-Anmeldeinformationen für Dynamic Ingest zu erhalten, ist durch 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-Dateien (dies ist die neue API zum Hochladen von Quelldateien)
API-Authentifizierung
API-Authentifizierung

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

      video-cloud/upload-urls/read

Der vollständige Satz von Berechtigungen, die für das Hochladen von Quelldateien benötigt werden, lautet:

  • Video-Cloud / Video / Erstellen
  • Video-Cloud / Video / lesen
  • Video-Cloud / Video / Update
  • Video-Cloud / Upload-URLs / lesen

Diese Berechtigungen sind in verfügbar Studio. Alternativ können Sie Client-Anmeldeinformationen abrufen, um die Quelldatei-Upload-API direkt von der OAuth API indem Sie eine POST-Anfrage wie folgt machen:

URL anfragen

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

Headers

  • Authorization: BC_TOKEN {YOUR_BC_TOKEN}
  • Inhaltstyp: Anwendung / json

Anfrage Körper

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

Es gibt vier API-Anfragen, die an der Push-basierten Aufnahme beteiligt sind:

  1. CMS API POST-Anfrage zum Erstellen des Videoobjekts in Video Cloud (wie für Pull-basierte Einnahme)
  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. Dynamic Ingest POST-Anfrage zum Einlesen der Quelldatei (wie bei der Pull-basierten Aufnahme)

Diese Anforderungen werden in den folgenden Abschnitten beschrieben.

CMS API Anforderung

Unser CMS API Die Anfrage ist die gleiche wie bei jedem dynamischen Ingest-Vorgang, um ein neues Video hinzuzufügen. Diese Anfrage wird benötigt, um ein neues Video aufzunehmen. Wenn Sie ein vorhandenes Video ersetzen oder hinzufügen, benötigen Sie diesen Schritt nicht. Stattdessen verwenden Sie die vorhandene Video-ID in den anderen Anfragen.

Syntax anfragen

Dieser Kurs ist ein POST Anfrage zu:

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

Parameter

URL-Parameter für die Anfrage:

  • {ACCOUNT_ID} - Ihre Konto-ID

Anfrage Körper

Der Anfragetext besteht aus einem JSON-Objekt, das den name (erforderlich) und andere Metadaten für das Video (optional):

      {
      "name": "My Video"
      }

Siehe die API-Referenz für weitere Einzelheiten.

Headers

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

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

Antwort

Die Antwort ist ein JSON-Objekt, das die Video-Metadaten enthält. Das wichtige Element für den Rest der Dynamic Ingest-Vorgänge ist der id, die du ersetzen wirst {VIDEO_ID} in den Anfragen an die Ingest API.

Anfrage für S3 URLs

Bei der ersten Anforderung an die Ingest-API werden die Informationen abgerufen, die Sie zum PUT Ihrer Quelldatei (en) in den Brightcove S3-Bucket benötigen, und von dort in aufgenommen Video Cloud.

Syntax anfragen

Dieser Kurs ist ein GET Anfrage zu:

      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 zurückgegeben CMS API Anforderung
  • {SOURCE_NAME} - der Dateiname der Videoquelle - Der Name sollte keine URL-reservierten Zeichen wie z ?, &, # oder Leerzeichen

Headers

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

  • Authorization: Bearer {ACCESS_TOKEN}

Antwort

Die Antwort ist ein JSON-Objekt ähnlich dem Folgenden:

      {
      "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 S3-Bucket-Name
  • object_key - der Objektschlüssel für den Datei-Upload (wird zur Erstellung der Ziel-URL für mehrteilige Uploads verwendet)
  • access_key_id - der Zugriffsschlüssel, der zur Authentifizierung der Upload-Anfrage verwendet wird (wird für mehrteilige Uploads verwendet)
  • secret_access_key - der geheime Zugriffsschlüssel, der zur Authentifizierung der Upload-Anfrage verwendet wird (wird für mehrteilige Uploads verwendet)
  • session_token - ein kurzlebiges AWS-Token, das die Fähigkeit bietet, auf das Zielobjekt zu schreiben
  • signed_url - Dies ist eine Kurzversion der S3-URL, in die Sie Ihre Quelldatei (en) stellen können, wenn Sie relativ kleine Videos haben und Multipart-Upload nicht implementieren
  • api_request_url - Dies ist die URL, die Sie in Ihre Dynamic Ingest POST-Anforderung für die Master-URL oder URL für die image / text_tracks-Assets aufnehmen

Es wird empfohlen, für die von Ihnen verwendete Sprache das mehrteilige Hochladen mit dem AWS SDK zu verwenden. SDKs sind für viele Sprachen verfügbar, einschließlich Java, .NET, Ruby, PHP, Python, JavaScript, Go und C ++. Siehe die AWS-Entwicklerblog .

Wenn Sie einen mehrteiligen Upload durchführen, sind die folgenden Dokumente und der Beispielcode hilfreich:

Hier ist ein einfaches Beispiel in PHP:

      <?php
      // AWS SDK (for push ingests)
      require 'vendor/aws-autoloader.php';
      
      use Aws\S3\S3Client;
      use Aws\S3\MultipartUploader;
      use Aws\Exception\MultipartUploadException;
      
      /**
       * get S3 information as described above in this doc
       * the code below assumes it has been decoded as $s3response
       * and that $filePath is the local path to the asset file
       */
      
      s3 = new S3Client([
          'version' => 'latest',
          'region'  => 'us-east-1',
          'credentials' => array(
              'key'    => $s3response->access_key_id,
              'secret' => $s3response->secret_access_key,
              'token'	 => $s3response->session_token
          )
      ]);
      $params = array(
          'bucket' => $s3response->s3->bucket,
          'key' => $s3response->s3->object_key
      );
      $uploader = new MultipartUploader($this->s3, $filePath, $params);
      try {
          $uploadResponse = $uploader->upload();
      } catch (MultipartUploadException $e) {
          echo $e->getMessage() . "\n";
      }
      ?>

PUT Quelldatei (en) zu S3

Nachdem Sie die S3-URLs erhalten haben, machen Sie eine PUT-Anfrage zum Hochladen Ihrer Videodatei mit Hilfe der signed_url als Ziel.

Sie können Folgendes verwenden curl 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 (der Dateigröße sind keine weiteren Grenzen gesetzt). Bei größeren Dateien müssen Sie mehrteilige Uploads verwenden. Obwohl das Hochladen von Einträgen etwas einfacher ist, empfehlen wir, wenn möglich, das Hochladen mehrerer Dateien zu verwenden. Hier sind die Unterschiede zwischen den beiden:

  • Beim Einzel-Upload wird das Video als eine Datei hochgeladen. Der Upload einzelner Dateien 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 mehrfachen Hochladen wird die Datei in Blöcken übertragen. Dies ist effizienter, da der Upload mehrere Verbindungen nutzen kann. Wenn der Upload unterbrochen wird, kann er mit den verbleibenden Chunks fortgesetzt werden.

Dynamische Ingest-Anfrage

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

Dieser Kurs ist ein POST Anfrage zu:

      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 zurückgegeben CMS API Anforderung

Anfrage Körper

Der Anfragetext besteht aus einem JSON-Objekt, das den master (erforderliche) Details für den Ingest-Job. Das url für die master wird das sein, api_request_url zurückgegeben von der Anfrage für die S3-Bucket-Informationen

      {
      "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 weitere Einzelheiten.

Headers

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

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

Antwort

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 Push-basierte Dynamic Ingest zu erleichtern, haben wir einige Beispiel-Apps in Java und Python erstellt. Sie können sie auf unserer finden Github-Website.


Seite zuletzt aktualisiert am 12. Juni 2020