本文說明如何使用 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 插入 (POST) 要求,建立新的擷取串流。在回應中,cdn.ingestionInfo.rtmpsIngestionAddress 欄位會指定 RTMPS 網址。如果支援雙重攝入,備用位址為 cdn.ingestionInfo.rtmpsBackupIngestionAddress。
建立連線
使用偏好的 Socket 程式庫,在擷取網址指定的伺服器上,建立連至連接埠 443 的 SSL/TLS 連線。由於 TLS 僅適用於傳輸層,因此不一定要提供伺服器主機名稱才能啟動連線,但必須提供伺服器主機名稱才能向我們的伺服器進行驗證。因此請務必在 SSL 交握中新增 SNI 擴充功能 (伺服器名稱指示),並將伺服器名稱設為您要連線的伺服器主機名稱。
建立 SSL 連線後,請將其做為 RTMP 用戶端程式庫的連線。初始化的 SSL 連線與標準 TCP 連線具有相同的 API,因此 RTMP 程式庫應能以相同方式處理這兩種連線。
疑難排解
安全資料傳輸層 (SSL) 錯誤
如果嘗試建立 SSL 連線時收到無效憑證,可能是因為你連線至預期使用 RTMP 的 YouTube 伺服器。請確認使用的伺服器名稱含有「rtmps」字串 (請注意「s」)。
如果網址正確,但仍然出現 SSL 錯誤,可能是連線到錯誤的通訊埠。確認您連線至通訊埠 443。
如果網址和通訊埠正確,表示 SSL 程式庫可能未正確處理憑證。尋找 SSL 失敗的低階診斷訊息,並仔細檢查您是否在信號交換中使用 SNI。
連線逾時
如果可以連線至伺服器,但 RTMP 程式庫逾時,且未收到合理的回應,可能是因為你設定了明文 RTMP 連線,連至預期使用 RTMPS 的 YouTube 伺服器。請務必建立 SSL 連線,而非一般 TCP 連線。