簡介
若要將多個音軌與單一標題建立關聯,在以下幾個關鍵案例中很有用:
- 以不同語言播放相同的影片,讓全球範圍更廣
- 為視障人士提供口述影像
請注意,添加音軌也可以在 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_id
和client_secret
,您需要轉到 OAuth UI 並註冊此應用程序:
這些是您將需要的權限:
您還可以通過以下方式獲取您的憑據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
-軌道以某種方式描述了視頻內容
帳戶默認值
您可以設置帳戶默認值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 中出現兩次:
audio_tracks
對象中的master
對象包含視頻文件中包含的音軌的元數據(如果有的話-這也稱為音頻中的复用)-這將僅包含元數據,而不包含音頻文件的 URL,因為音頻軌道已經包含在視頻文件中。請記住,編碼後的音軌可以壓縮為立體聲、5.1、7.1,只要它符合 音頻格式 的規則,並且如 已知問題中所述,除了設置默認音頻之外,沒有其他方法可以對音軌進行排序- 頂級的
audio_tracks
描述您正在攝取的額外音軌的對象 - 這些將包括音頻文件的 URL 以及其他元數據
- 要在請求正文中發送的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" ] }
- 發送上面的 JSON,將佔位符替換為您自己的 URL,並調整
language
和variant
價值觀,在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"
}
要識別音軌通知,請查找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,形成為語言變體 - 請注意,如果更改這些值,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
清單將包括解復用的視頻/音頻
- 播放API不會返回
- 平滑串流
- 流暢串流 URL 將無法使用。
- 社交分佈
- 您無法選擇要用於發佈的音軌。包含在視頻源(音頻中的靜音)的軌道將被使用,始終。
- 一室公寓
-
- Studio將顯示有關音軌的信息
- 要使用 Studio 添加音軌,請參閱多個音軌
- 超出一個「默認」軌道的音軌排序
-
- 您可以選擇默認音軌CMS API每個標題通過設置
is_default
字段到true
- 還有一個帳戶默認值,可以通過支持來設置
- 這只會影響 HLS 清單中的「默認」軌道
- 沒有其他訂單是可能的
- 您可以選擇默認音軌CMS API每個標題通過設置
- 從單一來源擷取多個音軌
- 我們只支持 每個來源一個音軌。每個音軌必須分別攝取。
- 僅包含音訊的影片上的 DRM 保護
- 一旦新增視訊軌,就會啟用 DRM 保護功能。
- 使用者易記的標籤
- 我們不支援音軌的自訂標籤。如果您需要,則需要通過 Player API 在客戶端進行更改。
- 在某些情況下,切換曲目可能會導致布萊特灣玩家變得不穩定
-
- 下載所有音訊片段之前的曲目切換
- 當使用 Silverlight 插件播放視頻時(IE 版本低於 10,或任何 IE 版本低於 8 的 Window 版本)- 多個音軌不是在 Silverlight 中受支持。
- 如果音訊和視訊的持續時間不同,播放器可能會在較短的時間用完時停止播放器。
- 視頻 ”
duration
” - 視頻
duration
如果音軌具有不同的持續時間,則目錄/播放 API 報告的可能不正確。