(以下內容均翻譯自英文版文件,最新資訊及內容敬請切換至英文語系參考原文)
直播的串流控制以狀態機制的形式進行管理。下圖說明了由控制操作驅動的直播串流的狀態轉換。
矩形表示直播串流可能處於的狀態。箭頭表示滿足特定事件或條件時可能發生的狀態轉換,如:計劃事件的開始、伺服器的設置完成、或直播串流的啟動等。
以下是各狀態的解釋:
狀態 | 描述 |
預定 | 這是事件的初始狀態,即事件已排定但尚未準備好進行串流傳輸。 |
準備中 | 當距離預定的活動開始不到 12 小時內,狀態將變為 "準備中"。此時,基礎架構正在為活動進行事前設置。 |
等待預覽 | 基礎架構建立完成後,狀態會變為 "等待預覽"。這意味著串流伺服器已經建立好,但尚未開放推送信號。 |
預覽中 | 伺服器準備就緒後,狀態將變為 "預覽中",表示活動可以開始發送信號及預演。 |
直播中 | 觸發 "Go Live "操作後,事件即開始運行,狀態變為 "活動中"。 |
轉檔中 | 直播活動結束後,內容將由 BlendVision 轉檔服務轉檔為 VOD,狀態變為 "轉檔中"。 |
VOD 就緒 | 當 VOD 準備好上架時,狀態會變為 "VOD 就緒",表示正在等待預定的上架時間。 |
VOD | 一旦轉檔完成且直播事件可以作為 VOD 內容播放,狀態就會變為 "VOD"。 |
直播結束 | 當純直播活動結束,或直播至 VOD 活動的 VOD 結束時,狀態將變為 "直播結束"。 |
已關閉 | 事件取消或成功結束後,狀態會變為 "已關閉",然後可以重新打開並重新建立頻道。 |
已封存 | 當頻道封存後,狀態將變為 "已封存"。 |
建立直播
您可以使用以下 API 建立直播並在请求的主體裡描述您的需求:
POST /bv/cms/v1/lives
{ "live":{ "name":"string", "custom_id":"string", "type":"LIVE_TYPE_LIVE", "source":{ "type":"LIVE_SOURCE_TYPE_LIBRARY", "library":{ "id":"string" } }, "broadcast_mode":"BROADCAST_MODE_TRADITIONAL_LIVE", "scheduled_at":"2019-08-24T14:15:22Z", "resolution":"LIVE_RESOLUTION_HD", "live_vod":{ "source":"LIVE_VOD_SOURCE_UNSPECIFIED", "replace":{ "id":"string" }, "playback":{ "id":"string" }, "started_at":"2019-08-24T14:15:22Z", "ended_at":"2019-08-24T14:15:22Z" }, "security":{ "privacy":{ "type":"SECURITY_PRIVACY_TYPE_PUBLIC", "token":{ "device_limit":0 } }, "watermark":{ "enabled":true, "type":"WATERMARK_TYPE_IMAGE", "position":"WATERMARK_POSITION_TOP_RIGHT", "image":{ "library_id":"string" } }, "domain_control":{ "enabled":true, "domains":[ "string" ] }, "protection":{ "type":"PROTECTION_TYPE_UNSPECIFIED" }, "geo_control":[ "string" ] }, "ull_enabled":false, "cover_images":{ "ready_to_start":{ "type":"COVER_IMAGE_TYPE_UNSPECIFIED", "auto":{ }, "customize":{ "library_id":"string" } }, "preview":{ "type":"COVER_IMAGE_TYPE_UNSPECIFIED", "auto":{ }, "customize":{ "library_id":"string" } }, "player_pause":{ "type":"COVER_IMAGE_TYPE_UNSPECIFIED", "auto":{ }, "customize":{ "library_id":"string" } }, "signal_interruption":{ "type":"COVER_IMAGE_TYPE_UNSPECIFIED", "auto":{ }, "customize":{ "library_id":"string" } }, "end":{ "type":"COVER_IMAGE_TYPE_UNSPECIFIED", "auto":{ }, "customize":{ "library_id":"string" } }, "close":{ "type":"COVER_IMAGE_TYPE_UNSPECIFIED", "auto":{ }, "customize":{ "library_id":"string" } }, "current":{ "type":"COVER_IMAGE_TYPE_UNSPECIFIED", "auto":{ }, "customize":{ "library_id":"string" } } }, "metadata":{ "short_description":"string", "long_description":"string" }, "showroom":{ "model":{ }, "libraries":[ { "id":"string" } ] }, "interaction":{ "poll_enabled":false, "chatroom":{ "live":{ "enabled":false, "theme":"CHATROOM_THEME_UNSPECIFIED" }, "vod":{ "enabled":false, "theme":"CHATROOM_THEME_UNSPECIFIED" } } }, "ingestion_types":"LIVE_STREAM_INGEST_TYPE_RTMP" } }
回應將包含新建立的事件的詳細資訊,包括其 id。 id
欄位可用於管理直播。
{ "live":{ "id":"string", "name":"string", ... } }
下文將詳細介紹每個重要屬性:
Type (類型)
BlendVision 提供兩種直播選項: 即時直播(LIVE_TYPE_LIVE
)和錄播(LIVE_TYPE_SIMULIVE
)。對於錄播,您可以選擇上傳的影片作為串流源。更多詳情請參照 此處 。
Broadcast mode (播放模式)
BlendVision 為直播提供三種播放模式:
1. 傳統直播
只播放當前的直播串流,沒有進度條供使用者操作。
2. DVR(start-over)
在進度條上顯示開始和最新的直播串流,用戶可以拖動進度條從頭開始觀看直播。
3. 播放
在進度條上顯示開始和結束,用戶可以查看總時長,並拖動進度條觀看想要的內容。
這些模式只適用於某些特定直播類型:
- 直播: DVR (start-over) ,傳統直播
- 錄播: DVR (start-over) ,傳統直播,播放
要指定播放模式,您可以將 broadcast_mode 欄位設置為 BROADCAST_MODE_TRADITIONAL_LIVE
、BROADCAST_MODE_PLAYBACK
或 BROADCAST_MODE_DVR
。
Resolution (畫質)
要指定畫質,可以將 resolution
欄位設置為 LIVE_RESOLUTION_HD
、LIVE_RESOLUTION_FHD
或 LIVE_RESOLUTION_4K
。請注意,畫質越高,造成的成本越高。
Security (安全性)
Privacy (隱私保護)
通過指定有權限訪問內容的地區或受眾來管理內容的可見性,確保符合許可協議和目標受眾限制。有關隱私的更多資訊,請參閱 內容的可見性 。
Watermark (浮水印)
在影片上疊加浮水印,以主張版權、阻止盜版和識別未經授權的使用,提供額外的內容保護。您可以啟用指定類型和位置的浮水印。有關啟用浮水印的更多資訊,請參考 浮水印。
Domain Control (網域管理)
將內容發布限制在已授權的網域內,確保您的內容只能在經許可的網站和平台上被訪問,降低未經授權發布的風險。有關啟用網域管理的更多資訊,請參閱 網域管理 。
Geo control (地區管理)
根據地理區域限制對內容的訪問,讓您可以鎖定特定市場並遵守內容發布規定。有關啟用地區管理的更多資訊,請參考 地區管理 。
DRM (數位版權管理)
通過利用 FairPlay、PlayReady 和 Widevine 等 DRM 技術,你可以加密內容並控制其播放,防止未經授權的複製和盜版。有關啟用 DRM 保護內容的更多資訊,請參考 數位版權管理 。
Ultra-low latency (超低延遲)
超低延遲(ULL)是指減少影片從收錄到展示給觀眾之間的延時或延遲的功能。啟用 ULL 後,延遲時間可縮短至 3 秒以內,為觀眾帶來更加及時和具互動性的觀看體驗。
將 uul_enabled
欄位設定為 true
,您就可以啟用 ULL 功能,獲得更低的延遲體驗。請注意,如果您為直播串流啟用超低延遲功能,您將被收取更高的費用。
scheduled_at (預定時間)
如果未設定 scheduled_at
參數,直播串流將立即啟動。scheduled_at
參數用於指定啟動直播串流的具體日期和時間。要設置 scheduled_at
參數,可以使用 ISO 8601
格式指定日期和時間。
以下是將直播串流安排在 2023 年 5 月 1 日上午 10:00 UTC 啟動的範例:
"scheduled_at": "2019-08-24T14:15:22Z"
Cover images (封面圖片)
您可以為直播串流的每個狀態指定一個封面縮圖,並顯示在播放器上。
狀態 | 描述 |
準備開始 | 當直播串流的系統資源已經準備就緒,且在預定開始日期和時間之前的 12 小時期間。 |
預覽 | 直播串流正處於預覽狀態。 |
播放器暫停 | 播放器處於暫停狀態。 |
信號中斷 | 信號中斷、推流機器切斷信號或發生其他可檢測到的意外。 |
結束 | 直播已結束。 |
關閉 | 直播已關閉。 |
對於每種狀態,您都需要指定封面圖片的類型和圖片本身。type
欄位裡的可指定的值有:
-
COVER_IMAGE_TYPE_AUTO
: 系統會自動產生縮圖。 -
COVER_IMAGE_TYPE_CUSTOMIZE
: 您需要在customize
對象中裡指定圖片的庫 ID。
Interactions (互動功能)
您可以在直播中啟用互動功能,包括投票和聊天室。
poll_enabled
欄位是一個布爾值,用於啟用或禁用投票功能。
chatroom
欄位包含與聊天室功能相關的資訊。如果 enabled
欄位設置為 ture
,那麼theme
欄位也會是必填欄位。theme
欄位指定聊天室的主題或配色,該欄位有兩種可指定的值:
-
CHATROOM_THEME_LIGHT
: 使用淺色主題 -
CHATROOM_THEME_DARK
: 使用深色主題
以下是一個為直播串流啟用聊天室功能並指定使用深色主題的範例:
"interaction": {
"poll_enabled": false,
"chatroom": {
"live": {
"enabled": true,
"theme": "CHATROOM_THEME_DARK"
}
}
}
Ingestion Types (傳輸類型)
目前,我們提供兩種傳輸即時串流數據的方法。
-
LIVE_STREAM_INGEST_TYPE_RTMP
: Real-Time Messaging Protocol (RTMP) -
LIVE_STREAM_INGEST_TYPE_WHIP
: WebRTC HTTP Ingest Protocol (WHIP)
默認情況下傳輸方式會預設成 RTMP,但您可以在 ingest_types
欄位裡指定希望的傳輸方式。
Live to VOD (直播至 VOD)
您可能想舉辦直播活動,並在直播結束後向觀眾提供播放。您可以通過使用直播至 VOD 功能來實現這一目的。該功能允許您將直播的播放作為 VOD 的來源,或將 VOD 替換為編輯過的影片。
要使用直播至 VOD,您必須選擇 VOD 來源並設置開始和結束時間。
直播至 VOD 的來源
VOD 來源有三個可選選項:
1. 直播錄影 (Catchup)
您可以使用直播錄影作為 VOD 來源。您可以在預定時間播放直播部分,讓觀眾可以從影片列表中瀏覽和下載。
2. 替換為已編輯的 VOD
從影片庫中下載直播源,對其進行編輯,然後將其重新上傳到影片庫,作為 VOD 替換的來源。然後,一旦啟用 VOD 替換功能,就可以從影片庫中選擇已編輯的影片。
3. 播放
您可以使用現有的播放作為 VOD 的來源。此選項要求您在請求主體中指定playback
對象。
source
欄位可指定的值為:
-
LIVE_VOD_SOURCE_CATCHUP
: 將直播錄影作為 VOD 的來源 -
LIVE_VOD_SOURCE_REPLACE
: 更換成經過編輯的 VOD -
LIVE_VOD_SOURCE_PLAYBACK
: 使用現有的播放作為 VOD 來源
如果來源設定為 LIVE_VOD_SOURCE_REPLACE
,則需要指定 replace
對象;
如果來源設定為 LIVE_VOD_SOURCE_PLAYBACK
,則需要指定 playback
對象。
開始和結束時間
您需要設置 VOD 的可用播放時間,即允許 VOD 以播放模式作為VOD服務播放的時間段。確保在預定開始時間之前準備好影片源,一旦影片源準備就緒,VOD 將自動上架。如果未提供視頻或未準備就緒,VOD 將不會顯示任何內容。您可以在直播活動期間內調整結束時間。您可以使用 ISO 8601
格式為 started_at
和 ended_at
參數指定日期和時間。
以下是一個直播至 VOD 的設定範例:
{ "live_vod":{ "source":"LIVE_VOD_SOURCE_PLAYBACK", "playback":{ "id":"your_vod_id_for_playback" }, "started_at":"2023-04-11T12:00:00Z", "ended_at":"2023-04-11T13:00:00Z" } }
預覽直播
串流伺服器已經建立完成,但仍未開放信號推送。一旦距離活動開始不足 12 小時,就可以使用以下 API 進行直播串流的預覽。現在,您可以發送信號並開始預演。
POST /bv/cms/v1/lives/{id}:preview
開始直播
您可以使用以下 API 將直播串流從預覽狀態轉為直播狀態:
POST /bv/cms/v1/lives/{id}:start
取消直播
您可以使用以下 API 在預期、預覽或直播中狀態下取消直播。
POST /bv/cms/v1/lives/{id}:cancel
結束直播
您可以使用以下 API 結束當前正在串流中的直播。
POST /bv/cms/v1/lives/{id}:end
封存直播
如果不想重新打開直播,可以使用以下 API 封存已結束的直播。
POST /bv/cms/v1/lives/{id}:archive