支持 聯繫支持 | 系統狀況 系統狀態
頁面內容

    動態提取的源文件上傳API

    在本主題中,您將學習如何將視頻添加到您的 Video Cloud 使用用於動態提取的源文件上傳API的帳戶。 源文件上傳API提供了將源文件上傳(“推送”)到 Video Cloud 通過動態提取。

    簡介

    為了通過源文件上傳進行提取,Brightcove提供了一個S3存儲桶,您可以將視頻和資產文件上傳到其中,然後Dynamic Ingest以與從您自己的S3存儲桶或URL中提取視頻相同的方式從S3存儲桶中提取視頻。 下圖顯示了基本動態攝取和帶有源文件上傳的攝取工作流之間的區別。

    工作流程差異
    工作流程差異

    常見問題

    暫時將視頻存儲多長時間?這些URL何時無效?
    視頻在上傳後24小時後會從臨時存儲中刪除,並且這些URL不再有效。
    S3憑證會返回多長時間? Dynamic Ingest API 有效?
    S3憑證在API發送後也有效24小時。
    3小時後是否從S24存儲桶中物理刪除了視頻文件?
    成功提取視頻後,它們是否會從S3存儲桶中刪除?
    24小時後,無論是否成功提取所有視頻,它們都會從臨時存儲中刪除。
    擁有URL的人可以公開訪問臨時存儲區中的視頻嗎?
    沒有
    沒有安全憑證,有什麼方法可以下載或觀看臨時存儲中的視頻?
    沒有
    與其他Brightcove客戶共享訪問臨時存儲的安全憑證嗎?
    不可以,任何使用臨時存儲的客戶都將獲得唯一的安全憑證。
    其他Brightcove客戶是否可以使用自己的安全證書訪問臨時存儲區中的我的視頻?
    否,安全憑證僅提供對您推送到臨時存儲的視頻的訪問。
    用於文件上傳的S3存儲桶位於哪個區域?
    US-EAST-1(固定)。

    源文件名

    為了避免在訪問視頻和資產時出現問題 Brightcove Player,則應避免在源文件名中使用任何特殊字符,無論是視頻,圖像還是文本軌道(WebVTT文件)。 這也適用於遠程資產。 文件名應僅包括以下內容:

    • 單字節 字母(大寫或小寫)
    • 民數記
    • 破折號(-)和下劃線(_)
    • 空間 如果它們是URL編碼的

    認證

    獲取Dynamic Ingest客戶端證書的最簡單方法是通過 Studio管理員頁面以進行API身份驗證。 對於API權限,您至少需要:

    • CMS>視頻閱讀
    • 動態提取>創建
    • 動態提取>推送文件(這是新的源文件上傳API)
    API認證
    API認證

    對於基於推送的攝取的Brightcove API請求的身份驗證,與針對 其他動態提取請求:

          video-cloud/upload-urls/read

    源文件上傳所需的全部權限是:

    • 視頻雲/視頻/創建
    • 視頻雲/視頻/閱讀
    • 視頻雲/視頻/更新
    • video-cloud / upload-urls / read

    這些權限位於 工作室。 或者,您可以直接從以下網站獲取客戶端憑據以使用源文件上傳API OAuth API 通過發出POST請求,如下所示:

    要求網址

          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請求

    基於推送的攝取涉及四個API請求:

    1. CMS API POST請求以創建視頻對象 Video Cloud (與基於拉取的攝取相同)
    2. 動態獲取GET請求以獲取Brightcove S3存儲桶URL
    3. PUT請求將源文件上傳到Brightcove S3存儲桶
    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} 在對Ingest API的請求中。

    請求S3 URL

    對Ingest API的第一個請求將檢索您需要的信息,以將您的源文件放入Brightcove S3存儲桶,然後從那裡吸收到 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 -短暫的AWS令牌,提供了寫入目標objec的功能
    • signed_url -這是一個簡寫的S3網址,如果您的視頻相對較小並且未實現分段上傳,則可以將其放到源文件中
    • api_request_url -這是您將在動態收錄POST請求中包含的主URL或圖像/ text_tracks資產的URL中的URL

    建議您使用適用於所使用語言的AWS開發工具包進行分段上傳。 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網址後,您可以使用 signed_url 作為目的地。

    您可以使用以下內容 捲曲 測試PUT操作的命令:

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

    單部分上傳與分段上傳

    AWS允許單部分上傳最大5 GB的文件(文件大小沒有其他限制)。 對於較大的文件,必須使用分段上傳。 儘管單部分上傳更容易設置,但我們建議您盡可能使用分段上傳。 這是兩者之間的區別:

    • 單部分上傳將視頻全部上傳為一個文件。 單部分上傳文件大小限制為5 GB或更小。 如果上載由於某種原因而中斷,則必須重新開始。
    • 分段上傳會將文件分塊推送。 由於上傳可以利用多個連接,因此這樣做效率更高。 另外,如果上傳中斷,則可以從剩下的大塊開始恢復。

    動態提取請求

    將文件上傳到Brightcove S3存儲桶後,您將發出普通的“動態提取”請求以從其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日