透過 RTMPS 放送 YouTube 直播內容

本文說明如何使用 RTMPS 透過編碼器在 YouTube 上串流即時資料。RTMPS 是透過 SSL 連線建立通道的 RTMP (即時訊息通訊協定) 一般影片串流。本文件的適用對象為想將 RTMPS 支援功能至支援 RTMP 的編碼器的廠商。

對一般的一般使用者內容而言,RTMPS 是一個不錯的選擇。當需要延遲時間較短時更是如此。請參閱內容擷取通訊協定比較,瞭解 YouTube 即時串流支援的各種擷取通訊協定。

需求條件

必須完成以下必要步驟才能傳送 RTMPS 到 YouTube 直播:

  • 連線網址的每個部分 (<protocol>://<server>/<path>) 都必須正確:
    • 通訊協定必須是 rtmps
    • 伺服器必須是有效的 YouTube RTMPS 擷取端點。
    • 路徑必須是有效的 YouTube 直播 RTMP 應用程式名稱。
  • 您必須建立擷取伺服器的通訊埠 443。
  • 多媒體串流必須透過 RTMP 傳送,也就是 透過 RTMP 連線使用 RTMP。

取得連線網址

如果編碼器已使用 YouTube Live API,則取得 RTMPS 擷取網址的程序與 RTMP 的擷取程序類似。請傳送 LiveStreams insert (POST) 要求來建立新的擷取串流。回應中的 cdn.ingestionInfo.rtmpsIngestionAddress 欄位會指定 RTMPS 網址。如果您支援雙重擷取,備份位址會是 cdn.ingestionInfo.rtmpsBackupIngestionAddress

建立連線

使用您偏好的通訊端程式庫,在擷取網址指定的伺服器中,建立通訊埠 443 的 SSL/TLS 連線。傳輸層安全標準 (TLS) 僅適用於傳輸層,因此不需要伺服器主機名稱就能啟動連線;不過,我們的伺服器需要經過驗證。因此,請務必將 SNI 擴充功能 (伺服器名稱指示) 新增至安全資料傳輸層 (SSL) 握手,並將伺服器名稱設為您要連線的伺服器主機名稱。

建立 SSL 連線後,請使用該連線做為 RTMP 用戶端程式庫的連線。初始化的安全資料傳輸層 (SSL) 連線與標準 TCP 連線具有相同的 API,因此 RTMP 程式庫應該都能在兩者上使用。

疑難排解

安全資料傳輸層 (SSL) 錯誤

如果您嘗試建立安全資料傳輸層 (SSL) 連線卻收到無效的憑證,可能是因為您要連線至預期使用 RTMP 的 YouTube 伺服器。請確認您使用的伺服器名稱中包含「rtmps」,請注意「s」。

如果網址正確,但您仍然看到 SSL 錯誤,可能是因為您連線到錯誤的通訊埠。確認您連線至通訊埠 443。

如果網址和通訊埠正確無誤,則您的 SSL 程式庫可能無法正確處理憑證。尋找低層級診斷的安全資料傳輸層 (SSL) 失敗訊息,並再次檢查您在使用握手時使用的是 SNI。

連線逾時

如果可以連線至伺服器,但您的 RTMP 程式庫在沒有回應回應的情況下逾時,您可能為了與 RTMPS 預期使用的 YouTube 伺服器設定了明文 RTMP 連線。確認您建立的是安全資料傳輸層 (SSL) 連線,而非純 TCP 連線。