簡介
此功能允許攝取多種音頻語言、描述性或環境音頻體驗軌道以供實時播放。您可以使用 Live API 按照此處的步驟操作。您還可以使用 Video Cloud Studio。有關詳細信息,請參閱 帶有實時模塊文檔的多語言音頻 。
需求
多語言音軌有一些要求。
啟用您的帳戶
- 聯繫客戶支持以啟用具有多語言音頻功能的 Live API
- 確保您擁有 Live API 的 API 密鑰(在設置帳戶時提供給您)
設置你的編碼器
- 使用支持 RTP 協議的編碼器。多語言音頻支持僅限於
rtp
要么srt
協議。
-
從編碼器中獲取以下值:有關詳細信息,請參閱您的編碼器文檔。
- 為編碼器中的每個音軌定義 PID(數據包標識符)
- 在編碼器中定義與視頻關聯的 視頻 PID
如果您不知道編碼器的 PID 值,請參閱 配置編碼器 部分。
創建您的現場工作
為了將多個音軌添加到您的作業,創建實時作業時,必須在請求正文中提供音軌列表:
{
"live_stream": true,
"region": "us-west-2",
"protocol": "rtp",
"cidr_whitelist": [ /* omitted… */ ],
"outputs": [ /* omitted… */ ],
"alternate_audio": {
"tracks": [ { Track Details } ]
}
}
支持的字段Track
目的
下表包含對支持字段的完整描述track
目的。
欄位 | 類型 | 必填 | 描述 |
---|---|---|---|
language |
串 | 是 |
要使用的語言的代碼;目前這是靈活的,可以是規範要求/支持的各種語言格式中的任何一種,特別 是 RFC5456/BCP47 ,它也根據要求涵蓋 ISO-639 HLS> DASH> |
video_pid |
整數 | 是 | 來自視頻軌道的 MPEG-TS 輸入流的數據包標識符 (PID) |
pid |
整數 | 是 | 來自 MPEG-TS 輸入流的特定音軌的數據包標識符 (PID) |
default |
布林 | 是(對於默認軌道) |
音軌標記為DEFAULT 在裡面EXT-X-MEDIA 以及要混合到視頻流中的軌道
如果不存在,則第一條軌道是默認軌道。 如果多個播放列表定義了不同的默認值,則頂層默認曲目是多路復用曲目。 |
label |
串 | 用於曲目的文本描述,最好由玩家盡可能使用;用於:HLS> NAME 領域
默認值: |
|
variant |
枚舉 |
映射到 DASH 角色架構值:
高水平LS > 特徵 DASH > 角色 默認: |
|
streams [] |
陣列 |
這模仿了 如果不存在,則使用默認音頻設置。 HLS> |
範例
此示例主體將創建一個包含2條音軌的Job。
請求
POST https://api.bcovlive.io/v1/jobs
Content-Type: application/json
X-API-KEY: your_API_key
要求主體
{
"live_stream": true,
"region": "us-west-2",
"protocol": "rtp",
"cidr_whitelist": [
"0.0.0.0/0"
],
"outputs": [
{
"label": "hls720p",
"live_stream": true,
"height": 720,
"video_bitrate": 2400,
"segment_seconds": 6,
"keyframe_interval": 90
},
{
"label": "hls540p",
"live_stream": true,
"height": 540,
"video_bitrate": 1200,
"segment_seconds": 6,
"keyframe_interval": 90
}
],
"alternate_audio": {
"tracks": [
{
"label": "English",
"language": "en",
"variant": "main",
"video_pid": 256,
"pid": 257,
"default": true
},
{
"label": "Spanish",
"language": "es",
"variant": "main",
"video_pid": 256,
"pid": 258
}
]
}
}
範例回應
{
"id": "76f814fbcd7840e99ebf0e335c933730",
"outputs": [
{
"id": "0-76f814fbcd7840e99ebf0e335c933730",
"playback_url": "https://playback-qa.a-live.io/76f814fbcd7840e99ebf0e335c933730/us-west-2/NA/profile_0/chunklist.m3u8",
"playback_url_dvr": "https://playback-qa.a-live.io/76f814fbcd7840e99ebf0e335c933730/us-west-2/NA/profile_0/chunklist_dvr.m3u8",
"playback_url_vod": "https://playback-qa.a-live.io/76f814fbcd7840e99ebf0e335c933730/us-west-2/NA/profile_0/chunklist_vod.m3u8",
"playback_added_cdns": [],
"label": "hls720p"
},
{
"id": "1-76f814fbcd7840e99ebf0e335c933730",
"playback_url": "https://playback-qa.a-live.io/76f814fbcd7840e99ebf0e335c933730/us-west-2/NA/profile_1/chunklist.m3u8",
"playback_url_dvr": "https://playback-qa.a-live.io/76f814fbcd7840e99ebf0e335c933730/us-west-2/NA/profile_1/chunklist_dvr.m3u8",
"playback_url_vod": "https://playback-qa.a-live.io/76f814fbcd7840e99ebf0e335c933730/us-west-2/NA/profile_1/chunklist_vod.m3u8",
"playback_added_cdns": [],
"label": "hls540p"
},
{
"id": "2-76f814fbcd7840e99ebf0e335c933730",
"playlist_type": "defaultS3",
"type": "playlist",
"alternate_audio": {
"tracks": [
{
"label": "English",
"language": "en",
"name": "Alt0",
"pid": 257,
"playlistDefault": true,
"default": true,
"variant": "main",
"profile_sources": [
"profile_0"
]
},
{
"label": "Spanish",
"language": "es",
"name": "Alt1",
"pid": 258,
"playlistDefault": false,
"default": false,
"variant": "main",
"profile_sources": [
"profile_0"
]
}
]
},
"filename": "playlist.m3u8",
"dvr_filename": "playlist_dvr.m3u8",
"playback_url": "https://playback-qa.a-live.io/76f814fbcd7840e99ebf0e335c933730/us-west-2/NA/playlist.m3u8",
"playback_url_dvr": "https://playback-qa.a-live.io/76f814fbcd7840e99ebf0e335c933730/us-west-2/NA/playlist_dvr.m3u8",
"playback_added_cdns": []
}
],
"stream_url": "rtp://ep3-usw2.a-live.io:11780",
"stream_name": "76f814fbcd7840e99ebf0e335c933730.stream",
"static": false,
"alternate_audio": {
"tracks": [
{
"label": "English",
"language": "en",
"pid": 257,
"default": true,
"variant": "main",
"name": "Alt0"
},
{
"label": "Spanish",
"language": "es",
"pid": 258,
"default": false,
"variant": "main",
"name": "Alt1"
}
]
},
"event_length": 93600,
"encryption": {},
"playback_url": "https://playback-qa.a-live.io/76f814fbcd7840e99ebf0e335c933730/us-west-2/NA/playlist.m3u8",
"playback_url_dvr": "https://playback-qa.a-live.io/76f814fbcd7840e99ebf0e335c933730/us-west-2/NA/playlist_dvr.m3u8",
"playback_added_cdns": []
}
設定您的編碼器
配置您的編碼器,以通過RTP將MPEG-TS傳遞到創建響應中的stream_url。確保在請求主體中提供的音軌在編碼器中配置了正確的PID。
使用 ffprobe 的例子
如果您不知道來自編碼器的 PID,可以使用 ffprobe(包含在 ffmpeg 中)等工具來檢查流中的 PID。
ffprobe /tmp/ma.ts
ffprobe version 5.0.1 Copyright (c) 2007-2022 the FFmpeg developers
built with Apple clang version 13.0.0 (clang-1300.0.29.3)
configuration: --prefix=/usr/local/Cellar/ffmpeg/5.0.1-with-options_1 --enable-shared --cc=clang --host-cflags= --host-ldflags= --enable-gpl --enable-libaom --enable-libdav1d --enable-libmp3lame --enable-libopus --enable-libsnappy --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265 --enable-libfontconfig --enable-libfreetype --enable-frei0r --enable-libass --enable-demuxer=dash --enable-opencl --enable-audiotoolbox --enable-videotoolbox --disable-htmlpages --enable-libvmaf --enable-version3
libavutil 57. 17.100 / 57. 17.100
libavcodec 59. 18.100 / 59. 18.100
libavformat 59. 16.100 / 59. 16.100
libavdevice 59. 4.100 / 59. 4.100
libavfilter 8. 24.100 / 8. 24.100
libswscale 6. 4.100 / 6. 4.100
libswresample 4. 3.100 / 4. 3.100
libpostproc 56. 3.100 / 56. 3.100
Input #0, mpegts, from '/tmp/ma.ts':
Duration: 00:00:04.86, start: 1.400000, bitrate: 502 kb/s
Program 1
Metadata:
service_name : Service01
service_provider: FFmpeg
Stream #0:0[0xff]: Video: h264 (Constrained Baseline) ([27][0][0][0] / 0x001B), yuv420p(progressive), 360x240 [SAR 1:1 DAR 3:2], 30 fps, 30 tbr, 90k tbn
Stream #0:1[0x100]: Audio: aac (LC) ([15][0][0][0] / 0x000F), 44100 Hz, mono, fltp, 98 kb/s
Stream #0:2[0x102]: Audio: aac (LC) ([15][0][0][0] / 0x000F), 44100 Hz, mono, fltp, 98 kb/s
流後的十六進制數將指示 PID。例如:
0xff == 255
0x100 == 256
0x101 == 257
測試播放
將playback_url加載到Brightcove播放器或Safari確認播放。
DRM_Playback
當前,僅通過赶超(時移)服務支持DRM。將這些字段添加到“創建作業”請求請求正文中:
{
"drm": {
"modes": [
"all"
]
},
"timeshift": {
"type": "single",
"startover_duration": 36000,
"skip_live_output": true
}
}
響應將包括DRM輸出和timeshift_url
用於播放。