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

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

    このトピックでは、動的取り込み用のソースファイルアップロード API を使用して Video Cloud アカウントに動画を追加する方法について説明します。ソースファイルアップロード API では、ダイナミックインジェストを介して Video Cloud にソースファイルをアップロード(「プッシュ」)できます。

    はじめに

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

    ワークフローの違い
    ワークフローの違い

    よくある質問

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

    ソースファイル名

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

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

    認証

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

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

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

          video-cloud/upload-urls/read

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

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

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

    URL をリクエスト

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

    ヘッダー

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

    APIリクエスト

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

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

    S3URLのリクエスト

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

    リクエスト構文

    GETこれは次の要求です。

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

    パラメーター

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

    • {ACCOUNT_ID} -あなたのアカウント ID
    • {VIDEO_ID} - CMS APIリクエストから返されたビデオ ID
    • {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 -ターゲットオブジェクトに書き込む機能を提供する短命の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([
              'バージョン' => '最新'、
              'region' => 'us-east-1'、
              '資格情報' => array(
                  'key' => $ s3response-> access_key_id、
                  'secret' => $ s3response-> secret_access_key、
                  'トークン'	 => $ s3response-> session_token
              )
          ]);
          $ params = array(
              'バケット' => $ s3response-> s3->バケット、
              'key' => $ s3response-> s3-> object_key
          );
          $ uploader = new MultipartUploader($ this-> s3、$ filePath、$ params);
          try {
              $ uploadResponse = $ uploader-> upload();
          } catch(MultipartUploadException $ e){
              echo $ e-> getMessage()。 "\\ n";
          }
          ?>

    ソースファイルをS3にPUT

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

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

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

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

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

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

    動的取り込みリクエスト

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

    リクエスト構文

    POSTこれは次の要求です。

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

    パラメーター

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

    • {ACCOUNT_ID} -あなたのアカウント ID
    • {VIDEO_ID} - CMS APIリクエストから返されたビデオ ID

    リクエスト本文

    リクエストの本文は、を含む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取り込み要求の場合。これにより、を介してステータスを追跡できます。通知

    サンプルコード

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