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

    實施多個音軌

    本主題說明瞭如何使用動態攝取和添加和管理視頻的多個音軌。 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 如果音軌的持續時間不同,則可能不正確。

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