實作多個音軌

本主題說明如何使用動態內嵌和 CMS API 為視訊新增及管理多個音軌。

簡介

若要將多個音軌與單一標題建立關聯,在以下幾個關鍵案例中很有用:

  • 以不同語言播放相同的影片,讓全球範圍更廣 
  • 為視障人士提供口述影像

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

支持的視頻格式

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

範例

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

設定

的設置Dynamic Ingest requests 是一樣的,無論你是攝取視頻,圖像,音軌,WebVTT文件,或所有這些:

請求網址
      https://ingest.api.brightcove.com/v1/accounts/{account_id}/videos/{video_id}/ingest-requests
驗證
身份驗證需要一個訪問令牌作為Bearer令牌在Authorization標頭:
      Authorization: Bearer {access_token}

要獲得訪問令牌,您需要客戶憑據(見下文)。獲取access token的過程參見獲取訪問令牌 .

關於 S3 的注意事項

如果您的源文件將從受保護的 S3 存儲桶中提取,您將需要設置存儲桶策略以允許Video Cloud訪問文件。看使用Dynamic Ingest與 S3了解詳情。

取得認證

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

這些是您將需要的權限:

動態提取權限
Dynamic Ingest權限

您還可以通過以下方式獲取您的憑據CURL或者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字段,在攝取期間為每個軌道設置,指定軌道的語言。如果音軌是視頻中口語的配音,這一點很重要。您可以使用基本代碼,例如fr或帶有語言環境標識符的代碼,例如fr-CA. See the ISO Language Code Table .

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 中出現兩次:

  • audio_tracks對象中的master對象包含視頻文件中包含的音軌的元數據(如果有的話-這也稱為音頻中的复用)-這將僅包含元數據,而不包含音頻文件的 URL,因為音頻軌道已經包含在視頻文件中。請記住,編碼後的音軌可以壓縮為立體聲、5.1、7.1,只要它符合 音頻格式 的規則,並且如 已知問題中所述,除了設置默認音頻之外,沒有其他方法可以對音軌進行排序
  • 頂級的audio_tracks描述您正在攝取的額外音軌的對象 - 這些將包括音頻文件的 URL 以及其他元數據
  1. 要在請求正文中發送的JSON數據如下:
          {
            "master": {
                "url": "https://support.brightcove.com/test-assets/videos/Great_Blue_Heron.mp4",
                "audio_tracks": [
                    {
                        "language": "en",
                        "variant": "main"
                    }
                ]
            },
            "audio_tracks": {
                "merge_with_existing": true,
                "masters": [
                    {
                        "url": "https://support.brightcove.com/test-assets//audio/celtic_lullaby.m4a",
                        "language": "en",
                        "variant": "alternate"
                    },
                    {
                        "url": "https://support.brightcove.com/test-assets//audio/audio1.m4a",
                        "language": "en",
                        "variant": "commentary"
                    }
                ]
            },
              "profile": "BoltIngestProfile",
              "capture-images": true,
              "callbacks": [
                  "https://solutions.brightcove.com/bcls/di-api/di-callbacks.php"
              ]
          }
  2. 發送上面的 JSON,將佔位符替換為您自己的 URL,並調整languagevariant價值觀,在POST請求https://ingest.api.brightcove.com/v1/accounts/ACCOUNT_ID/videos/ID/ingest-requests(這ID這是創建視頻對象的請求返回的視頻 ID)

將音軌添加到現有視頻

要向現有視頻添加額外的音軌,過程是相同的,只是您不需要向CMS API創建視頻,因為它已經存在。並在請求中Dynamic Ingest API,您不需要包含視頻文件的 URL 或audio_tracks在下面master為混合音頻提供元數據。但是,您確實想要在現有視頻中包括音頻軌道中多路復用器的元數據。同樣重要的是要記住,音軌必須按照 音頻格式中的規則進行壓縮。因此,接收請求的JSON如下所示:

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

提取的音軌字段

音軌字段
欄位 類型 描述
master.audio_tracks 物件 [] 在音頻中混合使用的元數據
master.audio_tracks.language 字串 混入音頻的語言代碼。您可以使用基本代碼,例如fr或具有地區設定識別碼的代碼,例如fr-CA. See the ISO Language Code Table
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 字串 音軌的語言代碼。您可以使用基本代碼,例如fr或帶有語言環境標識符的代碼,例如fr-CA. See the ISO Language Code Table .
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中查看此信息:

錄音室音軌資訊
錄音室音軌資訊

獲取一個音軌的元數據

要檢索與視頻關聯的一個音軌的元數據,請製作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,形成為語言變體 - 請注意,如果更改這些值,id 可能會更改
language 字串 音軌的語言代碼。您可以使用基本代碼,例如fr或帶有語言環境標識符的代碼,例如fr-CA. See the ISO Language Code Table .
variant 字串 音軌種類:main | alternate | dub | commentary | descriptive ( main通常用於混合音頻)
duration 編號 軌道長度(以毫秒為單位)
encoding_rates 數[] 此曲目的可用編碼列表,以bps為單位
is_default 布林值 如果為true,則將使用該默認曲目進行播放(覆蓋任何帳戶級別的默認曲目)

播放

有關Brightcove Web和SDK播放器如何處理多個音軌的信息,請參閱:

已知問題

音訊主機未儲存
  • Video Cloud將要不是存儲音頻大師
必須使用僅音訊檔案
音軌必須是沒有視訊軌道的純音訊檔案
HLSv3 , HLS音頻和視頻在同一段
  • 播放API不會返回HLSv3清單
  • 全部HLS清單將包括解復用的視頻/音頻
平滑串流
流暢串流 URL 將無法使用。
社交分佈
您無法選擇要用於發佈的音軌。包含在視頻源(音頻中的靜音)的軌道將被使用,始終。
一室公寓
  • Studio將顯示有關音軌的信息
  • 要使用 Studio 添加音軌,請參閱多個音軌
超出一個「默認」軌道的音軌排序
  • 您可以選擇默認音軌CMS API每個標題通過設置is_default字段到true
  • 還有一個帳戶默認值,可以通過支持來設置
  • 這只會影響 HLS 清單中的「默認」軌道
  • 沒有其他訂單是可能的
從單一來源擷取多個音軌
我們只支持 每個來源一個音軌。每個音軌必須分別攝取。
僅包含音訊的影片上的 DRM 保護
一旦新增視訊軌,就會啟用 DRM 保護功能。
使用者易記的標籤
我們不支援音軌的自訂標籤。如果您需要,則需要通過 Player API 在客戶端進行更改。
在某些情況下,切換曲目可能會導致布萊特灣玩家變得不穩定
  • 下載所有音訊片段之前的曲目切換
  • 當使用 Silverlight 插件播放視頻時(IE 版本低於 10,或任何 IE 版本低於 8 的 Window 版本)- 多個音軌不是在 Silverlight 中受支持。
  • 如果音訊和視訊的持續時間不同,播放器可能會在較短的時間用完時停止播放器。
視頻 ”duration
視頻duration如果音軌具有不同的持續時間,則目錄/播放 API 報告的可能不正確。