簡介
將多個音軌與單個標題關聯的功能在以下幾個關鍵場景中很有用:
- 播放不同語言的同一視頻,以在全球範圍內擴大覆蓋範圍
- 為視障者提供音頻和描述
請注意,添加音頻軌道也可以在Studio中完成-請參見 使用媒體模塊向視頻添加音軌 更多的細節。
支持的視頻格式
支持多個音軌 HLS V4+
以及 DASH
-有無 DRM
保護。
樣本
以下是帶有多個音軌的視頻的簡單示例。
格局
的設置 動態攝取 無論您要攝取視頻,圖像,音頻軌道, 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 訪問文件。 看到 運用 動態攝取 與S3 有關詳細信息。
獲取憑證
得到一個 client_id
以及 client_secret
,則需要轉到OAuth UI並註冊此應用:
這些是您將需要的權限:

您也可以通過以下方式獲取憑據 捲曲 or 郵差 -參見:
如果您直接從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
。 有關語言代碼的完整列表,請參見 Subtag
值 http://www.iana.org/assignments/language-subtag-registry/language-subtag-registry.
variant
variant
欄位說明音軌的種類。 具有標準含義的可能值為:
main
-主音軌,通常是混音到視頻文件中的那一條alternate
-備用音軌commentary
-提供有關視頻軌道的評論的音頻軌道dub
-包含另一種語言的配音版本的曲目descriptive
-軌道以某種方式描述了視頻內容
帳戶默認值
您可以為設置帳戶默認值 language
以及 variant
確定哪些音軌將被 Brightcove Player (默認值也可以通過更新軌道元數據來覆蓋,這將在下面的部分中看到)。 要為您的帳戶設置默認值, 聯繫Brightcove支持.
攝取音軌
現在,我們將研究用於提取前面描述的兩個用例的音軌的API調用。
具有多個音軌的新視頻
創建視頻對象(CMS API)
- 您可以在創建視頻對象時添加幾項視頻元數據,但在這裡我們只添加最小的一項:
name
對於視頻:{ "name": "YOUR_VIDEO_NAME" }
- 提交上面的JSON(用視頻名稱替換佔位符文本)作為請求正文
POST
請求https://cms.api.brightcove.com/v1/accounts/YOUR_ACCOUNT_ID/videos
- 您會在響應中返回很多視頻元數據,但重要的是
id
(視頻ID),這是下一步所需的信息。
攝取視頻和音頻軌道
接下來,我們將攝取視頻和音頻軌道(我們可以添加其他資源,例如圖像和文本軌道,但是在這裡我們將使其保持簡單)。 您可能會發現有點困惑的一件事是 audio_tracks
在請求正文的JSON中出現兩次:
- An
audio_tracks
內的對象master
對象包含視頻文件中包含的音頻軌道的元數據(如果有的話-也稱為音頻混合)-由於音頻軌道已包含在其中,因此該對象將僅包含元數據,而沒有音頻文件的URL。視頻文件 - 頂級
audio_tracks
描述您正在攝取的其他音軌的對象-這些將包括音頻文件的URL以及其他元數據
- 要在請求正文中發送的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" ] }
- 發送上面的JSON,用您自己的網址替換佔位符,然後調整
language
以及variant
值,在POST
請求https://ingest.api.brightcove.com/v1/accounts/ACCOUNT_ID/videos/ID/ingest-requests
(“ID
這是從創建視頻對象的請求返回的視頻ID)
將音軌添加到現有視頻
要將其他音軌添加到現有視頻中,步驟是相同的,不同的是您不需要向 CMS API 創建視頻,因為它已經存在。 並在要求 動態攝取 API,則無需包含視頻文件的網址或 audio_tracks
下 master
提供多路復用音頻的元數據。 但是,您確實希望在現有視頻中包括音頻軌道中多路復用器的元數據。 因此,提取請求的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"
}
要確定音軌的通知,請查找 language
以及 variant
通知中的字段。 的 "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,格式為 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
同一段中的音頻和視頻-
- playback API 不會回來
HLSv3
表現 - 全部
HLS
清單將包括解混合的視頻/音頻
- playback API 不會回來
- 流暢串流
- 平滑流URL將不可用。
- Social 分銷
- 無法選擇將用於分發的音軌。 視頻源中包含的音軌(混合在音頻中)將始終使用。
- 工作室
-
- Studio將顯示有關音軌的信息
- 要使用Studio添加音軌,請參見 多個音軌
- 音頻軌道的順序超出一個“默認”軌道
-
- 您可以選擇默認的音軌 CMS API 通過設置每個標題
is_default
字段true
- 還有一個帳戶默認值,可以由支持人員設置
- 這只會影響HLS清單中的“默認”軌道
- 無法進行其他訂購
- 您可以選擇默認的音軌 CMS API 通過設置每個標題
- 從單一來源攝取多個音軌
- 我們只支持 每個攝取的源一個音軌。 每個音軌必須分別攝取。
- 僅包含音頻的視頻的DRM保護
- 添加視頻軌道後,將啟用DRM保護。
- 最終用戶友好標籤
- 我們不支持音軌的自定義標籤。 如果需要,您將需要通過客戶端在客戶端進行更改 Player API.
- 在某些情況下,切換軌道可能會導致 Brightcove Player 變得不穩定
-
- 在下載所有音頻片段之前進行軌道切換
- 當使用Silverlight插件播放視頻時(IE版本小於10,或任何版本的IE在Window版本小於8的情況下)-多條音軌 不 在Silverlight中受支持。
- 如果音頻和視頻的持續時間不同,則 player 每當較短的一個用完時,它將停止。
- 視頻 ”
duration
" - 視頻
duration
由目錄/報告Playback API 如果音軌的持續時間不同,則可能不正確。