Go Live

控制直播

(以下內容均翻譯自英文版文件,最新資訊及內容敬請切換至英文語系參考原文)

 

直播的串流控制以狀態機制的形式進行管理。下圖說明了由控制操作驅動的直播串流的狀態轉換。
矩形表示直播串流可能處於的狀態。箭頭表示滿足特定事件或條件時可能發生的狀態轉換,如:計劃事件的開始、伺服器的設置完成、或直播串流的啟動等。

bv_live_status.png

Figure 圖:直播串流的狀態圖

以下是各狀態的解釋:

狀態 描述
預定 這是事件的初始狀態,即事件已排定但尚未準備好進行串流傳輸。
準備中 當距離預定的活動開始不到 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_LIVEBROADCAST_MODE_PLAYBACKBROADCAST_MODE_DVR

Resolution (畫質)

要指定畫質,可以將 resolution 欄位設置為 LIVE_RESOLUTION_HDLIVE_RESOLUTION_FHDLIVE_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_atended_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

更新於