サポート サポート問い合わせ先 | システムステータス システムステータス

動的インジェスト用ソースファイルアップロードAPI

このトピックでは、あなたにビデオを追加する方法を学びます。 Video Cloud Dynamic Ingest用のソースファイルアップロードAPIを使用してアカウントを作成します。 ソースファイルアップロードAPIは、ソースファイルをアップロード(「プッシュ」)する機能を提供します Video Cloud ダイナミックインジェストを介して。

概要

ソースファイルのアップロードによる取り込みのために、Brightcoveは動画とアセットファイルをアップロードできるS3バケットを提供し、Dynamic Ingestは、独自のS3バケットまたはURLからの場合と同じ方法でS3バケットから動画をプルします。 以下の図は、基本的な動的取り込みとソースファイルのアップロードによる取り込みのワークフローの違いを示しています。

ワークフローの相違
ワークフローの相違

よくある質問

動画は一時的にどのくらい保存されていますか、URLはいつ無効になりますか?
動画がアップロードされてから24時間後に動画が一時保存場所から削除され、その動画のURLが無効になります。
S3資格情報が Dynamic Ingest API 有効ですか?
S3資格情報は、APIがそれらを送信した後の24時間にも有効です。
3時間後にS24バケットからビデオファイルが物理的に削除されますか?
Yes
S3バケツから正常に取り込まれたビデオは削除されますか?
すべての動画は、24時間後に一時保存から削除されます。
URLを持っている人が一時的なストレージの動画に一般公開することはできますか?
いいえ
セキュリティ資格情報を持たない一時的なストレージにビデオをダウンロードまたは表示する方法はありますか?
いいえ
一時ストレージにアクセスするためのセキュリティ認証情報は、他のブライトコーブのお客様と共有されていますか?
いいえ。一時ストレージを使用しているお客様には、一意のセキュリティ資格情報が与えられます。
他の方法はありますか? Brightcove カスタマーは自分のセキュリティ資格情報を使用して一時的なストレージで自分のビデオにアクセスできますか?
いいえ。セキュリティ資格情報は、一時保存先にプッシュしたビデオにのみアクセスできます。
ファイルアップロードのためのS3バケットはどの地域にありますか?
US-EAST-1(これは修正済みです)。

ソースファイル名

動画やアセットにアクセスする際の問題を回避するには Brightcove Playerビデオ、画像、またはテキストトラック(WebVTTファイル)のソースファイル名に特殊文字を使用しないでください。 これは、リモートアセットにも適用されます。 ファイル名には次の文字のみを含める必要があります。

  • 半角 英字(大文字または小文字)
  • 数字
  • ダッシュ( - )とアンダースコア(_)
  • スペース URLエンコードされている場合

認証

Dynamic Ingestのクライアント認証情報を取得する最も簡単な方法は、 API認証のStudio管理者ページ。 API権限については、少なくとも以下が必要です。

  • CMS>ビデオ読み取り
  • 動的インジェスト>作成
  • 動的インジェスト>プッシュファイル(これは新しいソースファイルアップロードAPIです)
APIオートメーション
APIオートメーション

プッシュベースの取り込みのためのBrightcove APIリクエストの認証には、 その他のダイナミックインジェストリクエスト:

      video-cloud/upload-urls/read

ソースファイルのアップロードに必要なアクセス許可の完全なセットは次のとおりです。

  • video-cloud/video/create
  • video-cloud/video/read
  • video-cloud/video/update
  • video-cloud/upload-urls/read

これらの権限は、 Studio。 また、クライアントの資格情報を取得して、ソースファイルアップロードAPIを直接使用することもできます OAuth API POST要求を次のようにして行います。

リクエストURL

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

ヘッダ

  • Authorization: BC_TOKEN {YOUR_BC_TOKEN}
  • コンテンツタイプ:application / json

ボディをリクエストする

      {
      "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リクエスト

プッシュベースの取り込みには、次の4つのAPIリクエストがあります。

  1. CMS API ビデオオブジェクトを作成するためのPOST要求 Video Cloud (プルベースの摂取と同じ)
  2. Brightcove S3バケットURLを取得するための動的取り込みGETリクエスト
  3. ソースファイルをBrightcove S3バケットにアップロードするPUTリクエスト
  4. ソースファイルを取り込むDynamic Ingest POST要求(プルベースの取り込みと同じ)

これらの要求については、以降のセクションで詳しく説明します。

CMS API 要求

挽き目 CMS API リクエストは、新しい動画を追加するためのダイナミックインジェスト操作と同じです。 この要求は、新しい動画を取り込むために必要です。 既存の動画をアセットに置き換えたり追加したりする場合は、この手順は必要ありません。代わりに、他のリクエストに既存の動画IDを使用します。

要求構文

これは POST リクエストを実行してあなたのアカウント内のプレイリストの数を取得することもできます:

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

パラメーター

リクエストのURLパラメータ:

  • {ACCOUNT_ID} - あなたのアカウントID

ボディをリクエストする

リクエスト本体は、JSONオブジェクトで構成されています。 name (必須)とその他のメタデータ(オプション):

      {
      "name": "My Video"
      }

見ます APIリファレンス 詳細については。

ヘッダ

要求に含める必要があるHTTPヘッダーは次のとおりです。

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

レスポンス

応答は、ビデオメタデータを含むJSONオブジェクトになります。 その他のダイナミックインジェスト操作の重要な項目は、 idこれは、あなたが {VIDEO_ID} Ingest APIへのリクエストに含まれています。

S3 URLのリクエスト

Ingest APIへの最初のリクエストでは、ソースファイルをBrightcove S3バケットにPUTしてそこから取り込むために必要な情報を取得します Video Cloud.

要求構文

これは GET リクエストを実行してあなたのアカウント内のプレイリストの数を取得することもできます:

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

パラメーター

リクエストのURLパラメータ:

  • {ACCOUNT_ID} - あなたのアカウントID
  • {VIDEO_ID} - 返された動画ID CMS API 要求
  • {SOURCE_NAME} - ビデオソースファイル名 - その名前にはURL予約文字を含めないでください。 ?, &, # またはスペース

ヘッダ

要求に含める必要があるHTTPヘッダーは次のとおりです。

  • Authorization: Bearer {ACCESS_TOKEN}

レスポンス

レスポンスは、次のようなJSONオブジェクトになります。

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

応答の項目は次のとおりです。

  • bucket - S3バケット名
  • object_key - ファイルアップロードのオブジェクトキー(マルチパートアップロードの場合はリンク先URLを作成する際に使用されます)
  • access_key_id - アップロードリクエストを認証するために使用されるアクセスキー(マルチパートアップロードに使用される)
  • secret_access_key - アップロードリクエストを認証するために使用される秘密のアクセスキー(マルチパートアップロードに使用される)
  • session_token - ターゲットobjecに書き込む機能を提供する短命のAWSトークン
  • signed_url - これは、S3という簡潔なURLです。比較的小さな動画があり、マルチパートアップロードを実装していない場合に、ソースファイルをPUTすることができます
  • api_request_url - これは、image / text_tracksアセットのMaster URLまたはURLのDynamic Ingest POST要求に含めるURLです

使用している言語用のAWS SDKを使用してマルチパートアップロードを使用することをお勧めします。 SDKは、Java、.NET、Ruby、PHP、Python、JavaScript、Go、C ++などの多くの言語で使用できます。 を参照してください AWSデベロッパーブログ 詳細については。

マルチパートアップロードを実装している場合は、次のドキュメントとサンプルコードが役に立ちます:

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";
      }
      ?>

ソースファイルをS3に送る

S3 URLを取得したら、あなたはビデオファイルをアップロードするPUTリクエストを行います。 signed_url 宛先として。

次のものを使用できます curl PUT操作をテストするコマンド:

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

シングルアップロードとマルチパートアップロード

AWSでは、5 GBまでのファイルのシングルパートアップロードが可能です(ファイルサイズには他の制限はありません)。 大きなファイルの場合は、複数パートのアップロードを使用する必要があります。 シングルパートアップロードは設定がやや簡単ですが、できるだけマルチパートアップロードを使用することをおすすめします。 2つの違いは次のとおりです。

  • シングルパートアップロードは、ビデオをすべて1つのファイルとしてアップロードします。 シングルパートアップロードは、5 GB以下のファイルサイズに制限されています。 何らかの理由でアップロードが中断された場合は、最初からやり直す必要があります。
  • マルチパートアップロードは、ファイルをチャンクにプッシュします。 アップロードは複数の接続を利用できるため、これはより効率的です。 また、アップロードが中断された場合は、残りのチャンクで中断したところから再開できます。

ダイナミックインジェストリクエスト

ファイルがBrightcove S3バケットにアップロードされたら、通常のDynamic Ingestリクエストを作成して、S3の場所からファイルを取り込みます。

要求構文

これは POST リクエストを実行してあなたのアカウント内のプレイリストの数を取得することもできます:

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

パラメーター

リクエストのURLパラメータ:

  • {ACCOUNT_ID} - あなたのアカウントID
  • {VIDEO_ID} - 返された動画ID CMS API 要求

ボディをリクエストする

リクエスト本体は、JSONオブジェクトで構成されています。 master (必要な)インジェストジョブの詳細。 ザ url のために master になります api_request_url S3バケット情報の要求によって返される

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

見ます APIリファレンス 詳細については。

ヘッダ

要求に含める必要があるHTTPヘッダーは次のとおりです。

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

レスポンス

応答には、 job_id インジェストリクエストでは、ステータスのトラッキングが可能です お知らせ.

サンプルコード

プッシュベースのDynamic Ingestを使い始めるために、JavaとPythonでいくつかのサンプルアプリケーションを作成しました。 あなたは私たちの上にそれらを見つけることができます Githubサイト.


ページの最終更新日:12年2020月XNUMX日