サポート問い合わせ先| システムステータス
ページコンテンツ

動的取り込み用のソースファイルアップロードAPI

このトピックでは、動的取り込み用のソースファイルアップロードAPIを使用してVideoCloudアカウントにビデオを追加する方法を学習します。ソースファイルアップロードAPIは、ダイナミックインジェストを介してソースファイルをビデオクラウドにアップロード(「プッシュ」)する機能を提供します。

入門

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

Workflow Differences
ワークフローの違い

よくある質問

動画は一時的に保存される期間と、そのURLが無効になるのはいつですか。
によって返されるS3クレデンシャルの長さDynamic Ingest API有効?
ビデオファイルは24時間後にS3バケットから物理的に削除されますか?
動画は正常に取り込まれた後、S3バケットから削除されますか?
一時ストレージ内のビデオは、URLを持っている人が公にアクセスできますか?
セキュリティ資格情報なしで一時ストレージにビデオをダウンロードまたは表示する方法はありますか?
一時ストレージにアクセスするためのセキュリティ資格情報は、他のBrightcoveのお客様と共有されていますか?
他のBrightcoveの顧客が、自分のセキュリティ資格情報を使用して一時ストレージ内の私のビデオにアクセスする方法はありますか?
ファイルアップロード用のS3バケットはどのリージョンにありますか?

ソースファイル名

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

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

認証

動的取り込みのクライアント資格情報を取得する最も簡単な方法は、 API認証用のStudio管理ページ。API権限については、少なくとも次のものが必要です。

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

プッシュベースの取り込みのためのBrightcoveAPIリクエストの認証には、その他の動的取り込みリクエスト

      video-cloud/upload-urls/read
Bash

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

  • 動画-雲/動画/作成
  • ビデオ-クラウド/ビデオ/読み取り
  • ビデオ-クラウド/ビデオ/更新
  • video-cloud / upload-urls / read

これらの権限は、スタジオ。または、次のようにPOSTリクエストを行うことで、OAuthAPIから直接ソースファイルアップロードAPIを使用するためのクライアント認証情報を取得できます。

URL をリクエスト

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

ヘッダー

  • Authorization: BC_TOKEN {YOUR_BC_TOKEN}
  • コンテンツタイプ:アプリケーション/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"
      }
JSON

APIリクエスト

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

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

これらのリクエストについては、次のセクションで詳しく説明します。

CMS API リクエスト

NS CMS APIリクエストは、新しいビデオを追加するための動的取り込み操作の場合と同じです。このリクエストは、新しい動画を取り込むために必要です。既存の動画にアセットを置き換えたり追加したりする場合は、この手順は必要ありません。代わりに、他のリクエストで既存の動画IDを使用します。

リクエスト構文

POSTこれは次の要求です。

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

パラメーター

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

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

リクエスト本文

リクエストの本文は、を含むJSONオブジェクトで構成されますname(必須)およびビデオの他のメタデータ(オプション):

      {
      "name": "My Video"
      }
JSON

詳細については、 API リファレンスを参照してください

ヘッダー

リクエストに含める必要のあるHTTPヘッダーは次のとおりです。

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

応答

応答は、ビデオメタデータを含むJSONオブジェクトになります。残りの動的取り込み操作の重要な項目は、id、の代わりに使用します{VIDEO_ID} IngestAPIへのリクエストで。

S3URLのリクエスト

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

リクエスト構文

GETこれは次の要求です。

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

パラメーター

リクエストの 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"
      }
JSON

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

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

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

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

PHPの簡単な例を次に示します。

      <?php // AWS SDK(プッシュインジェスト用)には 'vendor / aws-autoloader.php';が必要です。 Aws \\ S3 \\ S3Clientを使用します; Aws \\ S3 \\ MultipartUploaderを使用します。 Aws \\ Exception \\ MultipartUploadExceptionを使用します; / ***このドキュメントで前述したようにS3情報を取得します*以下のコードは$ s3responseとしてデコードされていることを前提としています*そして$ filePathはアセットファイルへのローカルパスです* / s3 = new S3Client(['version'  => '最新'、 '地域'  => 'us-east-1'、 'クレデンシャル'  => array( 'key'  => $ s3response-> access_key_id、 'シークレット'  => $ s3response-> secret_access_key、 'トークン'  => $ s3response-> session_token)]); $ params = array( 'バケット'  => $ s3response-> s3->バケット、 'キー'  => $ s3response-> s3-> object_key); $ uploader = new MultipartUploader($ this-> s3、$ filePath、$ params);試す{ $uploadResponse = $uploader->upload(); }キャッチ(MultipartUploadException $ e){ echo $e->getMessage() . "\n"; }?>
PHP

ソースファイルをS3にPUT

S3 URLを取得した後、を使用して、ビデオファイルをアップロードするためのPUTリクエストを作成します。signed_url目的地として。

あなたは以下を使うことができますカール PUT操作をテストするコマンド:

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

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

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

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

動的取り込みリクエスト

ファイルがBrightcoveS3バケットにアップロードされた後、通常の動的取り込みリクエストを実行して、S3の場所からファイルを取り込みます。

リクエスト構文

POSTこれは次の要求です。

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

パラメーター

リクエストの 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
      }
JSON

詳細については、 API リファレンスを参照してください

ヘッダー

リクエストに含める必要のあるHTTPヘッダーは次のとおりです。

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

応答

応答には、job_id取り込み要求の場合。これにより、を介してステータスを追跡できます。通知

サンプルコード

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


ページの最終更新日22 Sep 2021