簡介
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 查詢參數來更改直播作業而無需切換到手動?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 保護的直播流。