透過 RTMPS 提交 YouTube 直播內容

本文說明如何使用 RTMPS,從編碼器將即時資料串流至 YouTube。RTMPS 是透過 SSL 連線傳輸的標準 RTMP (即時訊息傳遞通訊協定) 影片串流。本文件適用於想在已支援 RTMP 的編碼器中新增 RTMPS 支援功能的編碼器供應商。

RTMPS 是大多數一般使用者內容的合適選擇,特別是需要低延遲的內容。如要瞭解 YouTube 直播支援的各種內容攝入通訊協定,請參閱內容攝入通訊協定比較

需求條件

如要透過 RTMPS 將內容傳送至 YouTube 直播,請務必留意以下事項:

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

取得連線網址

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

建立連線

使用偏好的通訊端程式庫,在擷取網址指定的伺服器上,建立通訊埠 443 的 SSL/TLS 連線。由於 TLS 僅適用於傳輸層,因此啟動連線時不一定需要伺服器主機名稱,但與我們伺服器進行驗證時則必須提供。因此請務必在 SSL 交握中新增 SNI 擴充功能 (伺服器名稱指示),並將伺服器名稱設為您要連線的伺服器主機名稱。

建立 SSL 連線後,請將其做為 RTMP 用戶端程式庫的連線。初始化的 SSL 連線與標準 TCP 連線具有相同的 API,因此 RTMP 程式庫應能以相同方式處理這兩種連線。

疑難排解

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

如果嘗試建立 SSL 連線時收到無效憑證,可能是因為你連線至預期使用 RTMP 的 YouTube 伺服器。請確認使用的伺服器名稱含有「rtmps」(請注意「s」)。

如果網址正確,但仍然出現 SSL 錯誤,可能是連線至錯誤的通訊埠。確認連線至通訊埠 443。

如果網址和連接埠正確無誤,可能是 SSL 程式庫無法正確處理憑證。尋找有關 SSL 失敗的低階診斷訊息,並仔細檢查您是否在交握中使用 SNI。

連線逾時

如果可以連線至伺服器,但 RTMP 程式庫逾時,且未收到任何有意義的回應,可能是因為你設定了連線至 YouTube 伺服器的明文 RTMP 連線,但該伺服器預期會收到 RTMPS。請務必建立 SSL 連線,而非純 TCP 連線。