簡介
Brightcove Live的冗餘功能通過創建備用流來幫助確保實時事件的可靠性能,當第一個流停止工作時,Live將自動將其故障轉移到該備用流。
請注意,對Live API的所有請求都需要以下標頭:
金鑰 | 價格 | 注意事項 |
---|---|---|
X-API-KEY |
{您的API密鑰} | 當您打開Brightcove Live帳戶時,應該已經提供了密鑰。 |
Content-Type |
應用程式/json | 從技術上講content-type 標頭僅對於包含請求主體的寫請求是必需的,但對讀請求無害。 |
創建您的現場工作
對於冗餘設置,您將需要創建2個或更多Brightcove Live Jobs。作業的唯一要求是使用相同output
設置。實現此目的的最簡單方法是使用所需的輸出規格創建一個作業,然後使用copy_outputs_from_job
參數以創建其他作業。
對於可以在其中創建這些作業的區域沒有限制,但是建議將它們放置在相對較近的位置。
創建實時作業後,請保留作業ID,以備後用。您將用於將這些作業添加到冗餘組的請求正文(請參見以下部分)將如下所示:
[
{
"job_id": "0b76bc73f92f46dc917bbe5061c0c633"
},
{
"job_id": "0ae5a4a71dc54b3181af0f98ee407c27"
}
]
創建冗餘組
要創建冗餘組,您將提交一個POST
請求:
https://api.bcovlive.io/v1/redundantgroups
這是一個示例請求正文:
{
"ad_insertion": true,
"processing_regions": ["us-west-2"],
"storage_regions": ["us-west-2", "us-east-1"],
"label": "Test RG",
"live_dvr_sliding_window_duration": 1800
}
下表包含請求正文的完整字段列表。在某些情況下,這些字段與用於創建實時作業的字段相同。見實時API參考有關該字段的更多詳細信息。
欄位 | 類型 | 是否需要? | 描述 |
---|---|---|---|
ad_insertion |
布林 | 可選的 | 如果此流應啟用SSAI,則設置為true |
add_cdns |
陣列 | 可選的 | 用於清單生成的其他CDN提供程序數組。對於提供的每個CDN,清單將相應地放在前面 |
drm |
對象 | 可選的 | 尚未支援 |
encryption |
對象 | 可選的 | 尚未支援 |
label |
串 | 必需的 | 標識組的標籤 |
live_dvr_sliding_window_duration |
整數 | 可選的 | |
notifications |
陣列 | 可選的 | 通知目標對像或字符串的數組 |
processing_regions |
陣列 | 必需的 | 冗餘組的處理區域。這將確定哪些AWS區域將生成清單。建議將其與storage_regions和創建實時作業的區域匹配。 |
storage_regions |
陣列 | 必需的 | 存儲區域中的媒體塊和播放列表將在S3中上傳到。建議將其與processing_regions和創建實時作業的區域匹配。 |
videocloud |
對象 | 可選的 | Video Cloud客戶可以選擇創建用於直播的視頻。 |
響應如下所示:
{
"id": "481ff4cf0bf74956bc2ec6e126588080",
"processing_regions": [
{
"region": "us-west-2",
"probability": 1
}
],
"storage_regions": [
"us-west-2",
"us-east-1"
],
"jobs": [],
"state": "standby",
"label": "Test RG",
"live_dvr_sliding_window_duration": 1800,
"status": {
"us-west-2": null
},
"ad_insertion": true,
"outputs": {
"playback_url": "https://playback-qa.a-live.io/r481ff4cf0bf74956bc2ec6e126588080/us-west-2/NA/playlist.m3u8",
"playback_url_dvr": "https://playback-qa.a-live.io/r481ff4cf0bf74956bc2ec6e126588080/us-west-2/NA/playlist_dvr.m3u8",
"ssai_playback_urls": {
"26f8470f61374e608e27af9c1b3f7ff0": {
"playback_url": "https://playback-qa.a-live.io/r481ff4cf0bf74956bc2ec6e126588080/us-west-2/NA/26f8470f61374e608e27af9c1b3f7ff0/playlist_ssaiM.m3u8",
"playback_url_dvr": "https://playback-qa.a-live.io/r481ff4cf0bf74956bc2ec6e126588080/us-west-2/NA/26f8470f61374e608e27af9c1b3f7ff0/playlist_dvr_ssaiM.m3u8",
"description": "House Ads - 864b84f712ae40bca1510a8052b34312",
"type": "ads"
}
}
}
獲取多餘的組
您可以通過提交一個GET
請求:
https://api.bcovlive.io/v1/redundantgroups
您可以使用state
參數。允許的值為:
cancelled
cancelling
deleting
disconnected
failed
finished
finishing
processing
standby
waiting
還有一個page_size
可以設置為最大1000的整數的參數。默認值page_size
是10。
響應將如下所示:
{
"redundant_groups": [
{
"id": "91c268a6ec5240d79a6004f4ccf0dc6f",
"account_id": "a95ac581551b4478b27910e5675db1f8",
"user_id": "c2691d4d039040be96c190a949d754a7",
"processing_regions": [
{
"region": "us-west-2",
"probability": 1
}
],
"storage_regions": [
"us-west-2",
"us-east-1"
],
"jobs": [],
"state": "standby",
"created_at": 1594316624287,
"updated_at": 1594316624287,
"label": "Test Redundant Group",
"live_dvr_sliding_window_duration": 86400,
"status": {
"us-west-2": null
},
"outputs": {
"playback_url": "https://bcovlive-a.akamaihd.net/r91c268a6ec5240d79a6004f4ccf0dc6f/us-west-2/NA/playlist.m3u8",
"playback_url_dvr": "https://bcovlive-a.akamaihd.net/r91c268a6ec5240d79a6004f4ccf0dc6f/us-west-2/NA/playlist_dvr.m3u8"
}
},
{
"id": "279ac36e4b4d48a3abbd3e1f98cd57aa",
"account_id": "a95ac581551b4478b27910e5675db1f8",
"user_id": "c2691d4d039040be96c190a949d754a7",
"processing_regions": [
{
"region": "us-west-2",
"probability": 1
}
],
"storage_regions": [
"us-west-2",
"us-east-1"
],
"jobs": [],
"state": "standby",
"created_at": 1594323207015,
"updated_at": 1594323207015,
"label": "Test Redundant Group2",
"live_dvr_sliding_window_duration": 86400,
"status": {
"us-west-2": null
},
"outputs": {
"playback_url": "https://bcovlive-a.akamaihd.net/r279ac36e4b4d48a3abbd3e1f98cd57aa/us-west-2/NA/playlist.m3u8",
"playback_url_dvr": "https://bcovlive-a.akamaihd.net/r279ac36e4b4d48a3abbd3e1f98cd57aa/us-west-2/NA/playlist_dvr.m3u8"
}
}
]
}
將實時作業添加到冗餘組
創建冗餘組後,您可以通過發送任務來向其中添加作業POST
請求:
https://api.bcovlive.io/v1/redundantgroups/{redundant_group_id}/jobs
實時作業ID是在請求正文中指定的,如下所示:
[
{
"job_id": "0b76bc73f92f46dc917bbe5061c0c633"
},
{
"job_id": "0ae5a4a71dc54b3181af0f98ee407c27"
}
]
作業對像還有幾個其他可選屬性-下表顯示了所有字段:
欄位 | 類型 | 是否需要? | 描述 |
---|---|---|---|
job_id |
串 | 必需的 | 要添加到組的作業ID。如果兩者都不playlist 要么streams 被指定,全部outputs 將會被使用。 |
playlist |
串 | 可選的 | 播放列表的標籤,用作流的輸出。如果playlist 被定義為,streams 必須是未定義。 |
streams |
陣列 | 可選的 | 流標籤列表,用作流的輸出。如果streams 被定義為,playlist 必須是未定義。 |
此請求的成功響應將僅返回冗餘組ID。
獲取冗餘組狀態
您可以通過提交以下信息來獲取冗餘組的狀態:GET
請求:
https://api.bcovlive.io/v1/redundantgroups/{redundant_group_id}
響應將如下所示:
{
"id": "481ff4cf0bf74956bc2ec6e126588080",
"processing_regions": [
{
"region": "us-west-2",
"probability": 1
}
],
"storage_regions": [
"us-west-2",
"us-east-1"
],
"jobs": [
{
"job_id": "0b76bc73f92f46dc917bbe5061c0c633",
"streams": [
"hls720p",
"hls540p",
"hls360p"
],
"state": "processing"
},
{
"job_id": "0ae5a4a71dc54b3181af0f98ee407c27",
"streams": [
"hls720p",
"hls540p",
"hls360p"
],
"state": "processing"
}
],
"state": "processing",
"created_at": 1568057414849,
"updated_at": 1568059153017,
"label": "Test RG",
"live_dvr_sliding_window_duration": 1800,
"status": {
"us-west-2": {
"SwitchDrift": 0,
"Ended": false,
"OnAir": "0b76bc73f92f46dc917bbe5061c0c633",
"Mode": "auto",
"InManifest": true,
"MediaSequence": 10,
"Healthiness": 0,
"Duration": 4,
"DiscontinuitySequence": 1,
"SourceChunk": {
"MediaSequence": 3639,
"Duration": 4,
"DiscontinuitySequence": 0,
"ProgramDateTime": "2019-09-09T19:59:36Z",
"LiveJobID": "0b76bc73f92f46dc917bbe5061c0c633"
},
"UpdatedAt": "2019-09-09T19:59:46Z",
"ProgramDateTime": "2019-09-09T19:59:36Z"
}
},
"ad_insertion": true,
"outputs": {
"playback_url": "https://playback-qa.a-live.io/r481ff4cf0bf74956bc2ec6e126588080/us-west-2/NA/playlist.m3u8",
"playback_url_dvr": "https://playback-qa.a-live.io/r481ff4cf0bf74956bc2ec6e126588080/us-west-2/NA/playlist_dvr.m3u8",
"ssai_playback_urls": {
"26f8470f61374e608e27af9c1b3f7ff0": {
"playback_url": "https://playback-qa.a-live.io/r481ff4cf0bf74956bc2ec6e126588080/us-west-2/NA/26f8470f61374e608e27af9c1b3f7ff0/playlist_ssaiM.m3u8",
"playback_url_dvr": "https://playback-qa.a-live.io/r481ff4cf0bf74956bc2ec6e126588080/us-west-2/NA/26f8470f61374e608e27af9c1b3f7ff0/playlist_dvr_ssaiM.m3u8",
"description": "House Ads - 864b84f712ae40bca1510a8052b34312",
"type": "ads"
}
}
}
}
冗餘組中的每個處理區域都有自己的區域status
對象,按區域進行鍵控。您可以在此示例中看到us_west_2
處理區域on_air
工作是0b76bc73f92f46dc917bbe5061c0c633
。
作為附帶說明,probability
與處理區域相關聯,此時總是1
,但包含在數據模型中以供將來增強,它將允許多個處理區域的概率在0到1之間,表示將使用該區域的播放流量的大約百分比。
手動添加提示點
手動將提示點添加到實時流中具有冗餘性與將提示點添加到普通實時流中非常相似。要對冗餘組執行此操作,請POST
請求:
https://api.bcovlive.io/v1/redundantgroups/{redundant_group_id}/cuepoint
包括如下的請求正文:
{
"ad_server_data": {
"subject": "wildlife"
},
"duration": 30,
"timecode": "09:23:18:05"
}
如果您省略timecode
字段,提示點將立即插入。
強製作業故障轉移
故障轉移將由Brightcove Live系統自動管理,不需要您的任何干預。但是,如果出於某種原因要強制故障轉移到另一個作業,最簡單的方法是簡單地停止驅動器的編碼器。on_air
工作。
您還可以通過以下方式使用API強制執行故障轉移:PUT
請求:
https://api.bcovlive.io/v1/redundantgroups/{redundant_group_id}/switch
請求正文如下所示:
{
"mode": "manual",
"on_air": "0ae5a4a71dc54b3181af0f98ee407c27"
}
這裡,mode
將是manual
要么auto
(默認),以及on_air
將具有以下值之一次要的工作編號。
注意:進入manual
模式後,將不會發生自動工作容錯移轉。您必須將模式設置回auto
恢復自動故障轉移。您可以通過從身體省略模式並添加強制查詢參數來更改直播作業,而無需切換為手動?force=true
根據您的要求。這將強制服務切換作業,但如果檢測到問題,它可能會隨時切換回去。
結束冗餘流
您可以通過兩種方式結束冗餘流。根據設計,冗餘組是隱式的九月流。您可以將冗餘組放入STANDBY
模式,方法是從冗餘組中刪除所有作業。
為此使用DELETE
請求:
https://api.bcovlive.io/v1/redundantgroups/{redundant_group_id}/jobs/{job_id}
對於您要刪除的每個作業。請注意,為了刪除當前的作業on_air
,則必須添加?force-true
查詢參數。
結束流的第二種方法是通過發送一個DELETE
請求:
https://api.bcovlive.io/v1/redundantgroups/{redundant_group_id}
限制
- 直播冗餘 不能 用於受 DRM 保護的直播流。