本文說明如何使用 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 連線。