支持 聯繫支持 | 系統狀況 系統狀態

實施多個音軌

本主題說明瞭如何使用動態攝取和添加和管理視頻的多個音軌。 CMS APIs.

簡介

將多個音軌與單個標題關聯的功能在以下幾個關鍵場景中很有用:

  • 播放不同語言的同一視頻,以在全球範圍內擴大覆蓋範圍
  • 為視障者提供音頻和描述

請注意,添加音頻軌道也可以在Studio中完成-請參見 使用媒體模塊向視頻添加音軌 更多的細節。

支持的視頻格式

支持多個音軌 HLS V4+DASH -有無 DRM 保護。

樣本

以下是帶有多個音軌的視頻的簡單示例。

格局

的設置 Dynamic Ingest 無論您要攝取視頻,圖像,音頻軌道, WebVTT 文件或所有這些文件:

要求網址
      https://ingest.api.brightcove.com/v1/accounts/{account_id}/videos/{video_id}/ingest-requests
認證
身份驗證需要以 Bearer 令牌中 Authorization 標頭:
      Authorization: Bearer {access_token}

要獲取訪問令牌,您需要 客戶憑證 (見下文)。 有關獲取訪問令牌的過程,請參見 獲取訪問令牌.

關於S3的注意事項

如果您的源文件將從受保護的S3存儲桶中提取,則需要設置存儲桶策略以允許 Video Cloud 訪問文件。 看到 運用 Dynamic Ingest 與S3 有關詳細信息。

獲取憑證

得到一個 client_idclient_secret,則需要轉到OAuth UI並註冊此應用:

這些是您將需要的權限:

<span class =動態攝取權限” src =“ / assets / images / dynamic-ingest / code-samples / di-permissions.png” />
Dynamic Ingest 權限

您也可以通過以下方式獲取憑據 CURL or Postman -參見:

如果您直接從API獲取憑據,則需要以下權限:

      [
        "video-cloud/video/all",
        "video-cloud/ingest-profiles/profile/read",
        "video-cloud/ingest-profiles/account/read",
        "video-cloud/upload-urls/read"
      ]

工作流程

有兩個主要用例:

  • 攝取具有多個音軌的新視頻
    新的視頻工作流程
    新的視頻工作流程
  • 將多個音軌添加到現有視頻
    現有的視頻工作流程
    現有的視頻工作流程

我們將在下面的部分中查看API請求的詳細信息。

音軌元數據

音頻軌道上有一些元數據字段-其中一些是在您攝取軌道時設置的,而其他字段是通過以下方式創建的 Video Cloud。 其中一些字段是只讀的,而其他字段可以由您更新。 元數據字段將在下面有關API請求的上下文中進行詳細說明,但是此處需要說明兩個特定的元數據字段,因為它們對於確定 Brightcove Player 將處理多個音軌。

language

language 在攝取過程中為每個音軌設置的字段指定了音軌的語言。 如果音軌是視頻中口語的配音,這一點很重要。 該字段的值將是兩個字母的代碼,例如 en or hi。 有關語言代碼的完整列表,請參見 Subtaghttp://www.iana.org/assignments/language-subtag-registry/language-subtag-registry.

variant

variant 欄位說明音軌的種類。 具有標準含義的可能值為:

  • main -主音軌,通常是混音到視頻文件中的那一條
  • alternate -備用音軌
  • commentary -提供有關視頻軌道的評論的音頻軌道
  • dub -包含另一種語言的配音版本的曲目
  • descriptive -軌道以某種方式描述了視頻內容

帳戶默認值

您可以為設置帳戶默認值 languagevariant 確定哪些音軌將被 Brightcove Player (默認值也可以通過更新軌道元數據來覆蓋,這將在下面的部分中看到)。 要為您的帳戶設置默認值, 聯繫Brightcove支持.

攝取音軌

現在,我們將研究用於提取前面描述的兩個用例的音軌的API調用。

具有多個音軌的新視頻

創建視頻對象(CMS API)

  1. 您可以在創建視頻對象時添加幾項視頻元數據,但在這裡我們只添加最小的一項: name 對於視頻:
          {
              "name": "YOUR_VIDEO_NAME"
          }
  2. 提交上面的JSON(用視頻名稱替換佔位符文本)作為請求正文 POST 請求 https://cms.api.brightcove.com/v1/accounts/YOUR_ACCOUNT_ID/videos
  3. 您會在響應中返回很多視頻元數據,但重要的是 id (視頻ID),這是下一步所需的信息。

攝取視頻和音頻軌道

接下來,我們將攝取視頻和音頻軌道(我們可以添加其他資源,例如圖像和文本軌道,但是在這裡我們將使其保持簡單)。 您可能會發現有點困惑的一件事是 audio_tracks 在請求正文的JSON中出現兩次:

  • An audio_tracks 內的對象 master 對象包含視頻文件中包含的音頻軌道的元數據(如果有的話-也稱為音頻混合)-由於音頻軌道已包含在其中,因此該對象將僅包含元數據,而沒有音頻文件的URL。視頻文件
  • 頂級 audio_tracks 描述您正在攝取的其他音軌的對象-這些將包括音頻文件的URL以及其他元數據
  1. 要在請求正文中發送的JSON數據如下:
          {
            "master": {
                "url": "https://learning-services-media.brightcove.com/videos/Great_Blue_Heron.mp4",
                "audio_tracks": [
                    {
                        "language": "en",
                        "variant": "main"
                    }
                ]
            },
            "audio_tracks": {
                "merge_with_existing": true,
                "masters": [
                    {
                        "url": "http://learning-services-media.brightcove.com/audio/celtic_lullaby.m4a",
                        "language": "en",
                        "variant": "alternate"
                    },
                    {
                        "url": "http://learning-services-media.brightcove.com/audio/audio1.m4a",
                        "language": "en",
                        "variant": "commentary"
                    }
                ]
            },
              "profile": "BoltIngestProfile",
              "capture-images": true,
              "callbacks": [
                  "http://solutions.brightcove.com/bcls/di-api/di-callbacks.php"
              ]
          }
  2. 發送上面的JSON,用您自己的網址替換佔位符,然後調整 languagevariant 值,在 POST 請求 https://ingest.api.brightcove.com/v1/accounts/ACCOUNT_ID/videos/ID/ingest-requests (“ ID 這是從創建視頻對象的請求返回的視頻ID)

將音軌添加到現有視頻

要將其他音軌添加到現有視頻中,步驟是相同的,不同的是您不需要向 CMS API 創建視頻,因為它已經存在。 並在要求 Dynamic Ingest API,則無需包含視頻文件的網址或 audio_tracksmaster 提供多路復用音頻的元數據。 但是,您確實希望在現有視頻中包括音頻軌道中多路復用器的元數據。 因此,提取請求的JSON如下所示:

      {
        "audio_tracks": {
            "merge_with_existing": true,
            "masters": [
                {
                    "url": "http://learning-services-media.brightcove.com/audio/celtic_lullaby.m4a",
                    "language": "en",
                    "variant": "alternate"
                },
                {
                    "url": "http://learning-services-media.brightcove.com/audio/audio1.m4a",
                    "language": "en",
                    "variant": "commentary"
                }
            ]
        },
          "profile": "BoltIngestProfile",
          "capture-images": true,
          "callbacks": [
              "http://solutions.brightcove.com/bcls/di-api/di-callbacks.php"
          ]
      }

提取的音軌字段

音軌領域
類型 產品描述
master.audio_tracks 賓語[] 混合音頻中的元數據
master.audio_tracks.language 來自以下子標籤的音頻中混合的語言代碼 http://www.iana.org/assignments/language-subtag-registry/language-subtag-registry
master.audio_tracks.variant 音軌的種類: main|alternate|dub|commentary|descriptive (main 通常用於音頻混音)
audio_tracks 對象 有關其他音軌的信息
audio_tracks.merge_with_existing 布爾 這些曲目應合併為現有曲目還是替換它們
audio_tracks.masters 賓語[] 各個音軌的信息
audio_tracks.masters.url 音軌文件的網址
audio_tracks.masters.language 來自中的子標籤的音軌的語言代碼 http://www.iana.org/assignments/language-subtag-registry/language-subtag-registry
audio_tracks.masters.variant 音軌的種類: main|alternate|dub|commentary|descriptive (main 通常用於音頻混音)

通知

如果指定一個或多個 回電話 URL(如上述提取請求的示例JSON中所示), Video Cloud 會針對您攝取的每個音軌發送一條通知。 通知將如下所示:

      {
        "entity": "default/audio128",
        "entityType": "DYNAMIC_RENDITION",
        "version": "1",
        "action": "CREATE",
        "jobId": "0f703adb-0f17-4a35-8395-21c7fcdd2649",
        "videoId": "5298468208001",
        "dynamicRenditionId": "default/audio128",
        "accountId": "1910141565001",
        "status": "SUCCESS",
        "language" : "en",
        "variant" : "alternate"
      }

要確定音軌的通知,請查找 languagevariant 通知中的字段。 的 "action": "CREATE""status": "SUCCESS" 字段表示軌道已成功提取。

管理音軌

提取音軌後,就可以通過 CMS API.

獲取視頻的所有音軌元數據

要檢索與視頻關聯的所有音軌的元數據,請製作一個 GET 請求:

      https://cms.api.brightcove.com/v1/accounts/account_id/videos/video id/audio_tracks

響應將是一個對像數組,其中包含每個音軌的元數據。 有關詳細信息,請參見下面的響應字段表。

      [
        {
          "id": "en_alternate",
          "language": "en",
          "variant": "alternate",
          "duration": 86100,
          "encoding_rates": [
            64000,
            96000,
            127000
          ]
        },
        {
          "id": "en_commentary",
          "language": "en",
          "variant": "commentary",
          "duration": 34203,
          "encoding_rates": [
            10000,
            13000,
            15000
          ]
        },
        {
          "id": "en_main",
          "language": "en",
          "variant": "main",
          "duration": 31488,
          "encoding_rates": [
            62000,
            94000,
            125000
          ]
        }
      ]

您還可以通過在媒體模塊中查看視頻來在Studio中查看此信息:

Studio中的音軌信息
Studio中的音軌信息

獲取一個音軌的元數據

要檢索與視頻關聯的一個音軌的元數據,請製作一個 GET 請求:

      https://cms.api.brightcove.com/v1/accounts/account_id/videos/video id/audio_tracks/audio_track_id

響應將是一個對象,其中包含每個音軌的元數據。 有關詳細信息,請參見下面的響應字段表。

更新音軌元數據

您可以通過以下方式更新音軌的任何可寫元數據字段: PATCH 請求:

      https://cms.api.brightcove.com/v1/accounts/account_id/videos/video id/audio_tracks/audio_track_id

在請求正文中,包括要修改的字段-例如:

      {
          "language": "es",
          "is_default": true
      }

刪除音軌

要刪除音軌,請將DELETE請求發送到:

      https://cms.api.brightcove.com/v1/accounts/account_id/videos/video id/audio_tracks/audio_track_id

注意,成功響應代碼可能是202(接受),而不是204(無內容),因為刪除過程是異步的,並且可能不會立即完成。

音軌元數據字段
類型 只讀 產品描述
id 曲目的ID,格式為 language_variant -請注意,如果更改了這些值,則ID可能會更改
language 沒有 來自中的子標籤的音軌的語言代碼 http://www.iana.org/assignments/language-subtag-registry/language-subtag-registry
variant 沒有 音軌的種類: main|alternate|dub|commentary|descriptive (main 通常用於音頻混音)
duration 軌道長度(以毫秒為單位)
encoding_rates 數[] 此曲目的可用編碼列表,以bps為單位
is_default 布爾 沒有 如果為true,則將使用該默認曲目進行播放(覆蓋任何帳戶級別的默認曲目)

回放

有關Brightcove Web和SDK的信息 player處理多個音軌,請參閱:

已知的問題

音頻主機未存儲
  • Video Cloud 存儲音頻母帶
  • 如果您從視頻原版中重新轉換視頻,則其他音軌將丟失,並且必須使用 將音軌添加到現有視頻 上述方法
必須使用純音頻文件
音軌必須是不含聲音的純音頻文件
HLSv3, HLS 同一段中的音頻和視頻
  • 播放API不會返回 HLSv3 表現
  • 所有項目 HLS 清單將包括解混合的視頻/音頻
流暢串流
平滑流URL將不可用。
Social 分配
無法選擇將用於分發的音軌。 視頻源中包含的音軌(混合在音頻中)將始終使用。
工作室
  • Studio將顯示有關音軌的信息
  • 要使用Studio添加音軌,請參見 多個音軌
音頻軌道的順序超出一個“默認”軌道
  • 您可以選擇默認的音軌 CMS API 通過設置每個標題 is_default 字段 true
  • 還有一個帳戶默認值,可以由支持人員設置
  • 這只會影響HLS清單中的“默認”軌道
  • 無法進行其他訂購
從單一來源攝取多個音軌
我們支持 來自“.master",並在“.audio_tracks.masters".
僅包含音頻的視頻的DRM保護
添加視頻軌道後,將啟用DRM保護。
最終用戶友好標籤
我們不支持音軌的自定義標籤。 如果需要,您將需要通過客戶端在客戶端進行更改 Player API.
在某些情況下,切換軌道可能會導致 Brightcove Player 變得不穩定
  • 在下載所有音頻片段之前進行軌道切換
  • 當使用Silverlight插件播放視頻時(IE版本小於10,或任何版本的IE在Window版本小於8的情況下)-多條音軌 在Silverlight中受支持。
  • 如果音頻和視頻的持續時間不同,則 player 每當較短的一個用完時,它將停止。
視頻 ”duration"
視頻 duration 由目錄/報告Playback API 如果音軌的持續時間不同,則可能不正確。

頁面最後更新於12年2020月XNUMX日