媒體服務即時串流最佳做法指南

客戶常會詢問他們該如何減少即時串流延遲。 本文說明除了即時活動編碼之外,還使用 達到低延遲即時串流的最佳作法。

注意

繼續閱讀本文之前,請閱讀 低延遲 HLS (LL-HLS) 文章,以了解即時事件編碼的低延遲。 然後,返回本指南以瞭解可能會影響串流延遲的其他內容。

除了媒體編碼方式之外,還有許多因素可決定數據流的端對端延遲。 以下是您應該考慮的一些事項:

  1. 貢獻編碼器端的延遲。 當客戶使用 OBS Studio、Wirecast 或其他編碼軟體將 RTMP 即時串流傳送至媒體服務時。 此軟體上的設定會影響實時數據流的端延遲。

  2. Azure 媒體服務內即時串流管線中的延遲

  3. CDN 效能

  4. 在用戶端上緩衝處理視訊播放程式和網路條件的演算法

  5. 佈建時機

貢獻編碼器

您可以在 RTMP 數據流到達媒體服務之前,控制來源編碼器設定的設定。 以下是一些讓您實現最低可能延遲的建議設定:

  1. 為您的媒體服務帳戶挑選最接近您貢獻編碼器的實體區域。 這可確保您有絕佳的媒體服務帳戶網路連線。

  2. 使用一致的片段大小。 我們建議 GOP 大小為 2 秒。 部分編碼器 (例如 OBS) 上的預設值為 8 秒。 請確認您已變更此設定。

  3. 如果您的編碼器可讓您執行此動作,請使用 GPU 編碼器。 如此可讓您將 CPU 工作卸載至 GPU。

  4. 使用針對低延遲最佳化的編碼設定檔。 例如,使用 OBS Studio 時,如果您使用 Nvidia H.264 編碼器,則可能會看到「零延遲」預設。

  5. 傳送的內容不超過您規劃串流的解析度。 例如,如果您使用 720p 標準編碼即時事件,請傳送已經在 720p 的數據流。

  6. 除非您使用傳遞即時活動,否則請將畫面播放速率保持在 30fps 以下。 雖然我們支援即時活動的 60 fps 輸入,但編碼即時活動輸出仍然不高於 30 fps。 針對 低延遲 HLS,建議使用固定幀速率,而且最大畫面格持續時間不應超過0.5秒,以獲得最佳體驗。

設定 Azure 媒體服務即時活動

以下是一些設定,可協助您減少管道中的延遲:

  1. 針對即時活動使用低延遲串流選項。 針對標準編碼 (最多 720p) 和進階編碼 (最多 1080p) 數據流選項,除非您需要超過 6 小時或平滑串流輸出的 DVR 視窗,否則請使用低延遲數據流延遲設定。

  2. 建議您針對 HLS 和 DASH 播放選擇 CMAF 輸出。 這可讓您針對這兩種格式共用相同的片段。 它會在使用 CDN 時增加快取命中率。 例如:

    類型 格式 URL 範例
    HLS CMAF format=m3u8-cmaf https://amsv3account-usw22.streaming.media.azure.net/21b17732-0112-4d76-b526-763dcd843449/ignite.ism/manifest(format=m3u8-cmaf)
    MPEG-DASH CMAF format=mpd-time-cmaf https://amsv3account-usw22.streaming.media.azure.net/21b17732-0112-4d76-b526-763dcd843449/ignite.ism/manifest(format=mpd-time-cmaf)
  3. 如果您必須選擇 TS 輸出,請使用 HLS 封裝比例 1。 這可讓我們只將一個片段封裝成一個 HLS 區段。 在原生 Apple 播放程式中,您將無法取得 LL-HLS 的完整優點。

播放程式最佳化

選擇並設定視訊播放程式時,請確定您使用經最佳化的設定來降低延遲。

媒體服務支援不同的串流通訊協議輸出 – DASH、具有 TS 輸出的 HLS 和 CMAF 片段的 HLS。 使用 LowLatencyV2 數據流選項時,請務必尋找支援低延遲 HLS (LL-HLS) 的播放程式。 根據播放程式的實作,緩衝處理決策會影響檢視者觀察到的延遲。 網路狀況不佳或偏好播放品質與穩定性的預設演算法,可能會導致播放程式決定預先緩衝更多內容,以避免播放期間內容中斷。 這些緩衝區會在播放會話之前和期間新增至端對端延遲。

使用 Azure 媒體播放器時,低延遲啟發學習法設定檔會將播放程式最佳化,讓播放程式端的可能延遲降至最低。 此播放機僅支援 DASH,除非它在 Apple 裝置上的 Safari 上使用。

CDN 選擇和優化

串流端點是將即時和 VOD 串流內容傳遞至 CDN 或直接提供給客戶的原始伺服器。 最好使用內容傳遞網路 (CDN) 與受防護的來源,以確保有效率地傳遞媒體內容的流量。

我們建議使用 Verizon (標準或進階版) 所提供的 Azure CDN。 我們已將整合體驗最佳化,讓客戶在 Azure 入口網站中以單一選取來設定此 CDN。 請務必在啟動串流端點時,開啟 CDN 端點的原始 防護 和串流優化。

我們的客戶在連上自己的 B CDN 時也有良好的體驗。 請確定已對 CDN 採取措施,以保護原點不受過多流量的影響。

您也可以藉由設定 CDN 設定檔的規則來改善效能。 請參閱 如何啟用CDN優化

串流端點調整

注意

標準串流端點/原點一種共用資源,可讓流量較低的客戶以較低成本串流內容。 如果您預期有大型流量,或打算使用 CDN,則不會使用標準串流端點來調整串流單位。

進階串流端點/原點可藉由新增或移除專用串流單位,為客戶提供更大的彈性和隔離。 串流單位是配置給串流端點的計算資源。 每個串流單位可以串流大約 200 Mbps 的流量。

雖然您可以使用相同的串流端點同時串流許多即時活動,但一個串流端點所需的預設串流單位上限為 10。 您可以開啟支援票證,以要求超過預設的 10 單位。

判斷所需的進階串流單位

有兩個步驟可用來判斷所需的串流端點數目和串流單位:

  1. 判斷所需的輸出總計。

  2. 將總輸出除以 200,這是每個串流單位可以串流的 Mbps 上限。

判斷所需的輸出總計

使用下列公式來判斷所需的輸出總計。

所需的總輸出 = 平均頻寬 x 並行檢視者數目 x 串流端點所處理的百分比。

讓我們逐一查看每個乘數:

平均頻寬。 您打算串流的平均位元速率為何? 換句話說,如果要有多個位元速率可供使用,您規劃的所有位元速率平均值為何? 您可以使用下列其中一種方法估算:

針對包含編碼的即時活動:

  • 如果您不知道您的平均頻寬將為多少,您可以使用我們的頂層位元速率作為估算值。 我們的 最高 比特率是5.5Mbps,適用於1080p編碼的即時事件,因此,您的平均比特率將會是大約3.5Mbps的某個位置。

  • 檢視用來編碼即時活動的編碼預設,例如 AdaptiveStreaming (H.264) 預設。 請參閱此輸出範例

針對直接使用傳遞而非編碼的即時活動:

  • 檢查本機編碼器所使用的編碼位元速率階梯。

並行檢視者的數目 預期有多少並行檢視者? 這可能很難估算,但請根據您的客戶資料做出最佳預測。 您是否需將會議串流給全球受眾? 您是否打算即時串流向客戶銷售一系列的產品?

串流端點所處理的流量百分比。這也能用「CDN『未』處理的流量百分比」來表示,因為這是實際加入公式的數值。 因此,請記住,您預期的 CDN 卸載為何? 如果 CDN 預期會處理 90% 的即時流量,則串流端點上只會預期 10% 的流量。 公式中使用的數值是「.10」,這是串流端點上預期的流量百分比。

判斷所需的進階串流單位數值

進階版所需的串流單位 = 平均頻寬 x # 個檢視者 x CDN / 200 Mbps 未處理的流量百分比

範例

您最近發行了新產品,並想要將其呈現給既有客戶。 您想要具備低延遲,因為不想讓已經很忙碌的受眾感到挫折,因此您將使用進階串流端點和 CDN。

您約有 100,000 名客戶,但他們可能並非全都會觀看您的即時活動。 您猜想在最佳情況下,只有 1% 的客戶會參加,這會讓您預期的並行檢視者變成 1,000 人。

並行使用者數目 =1,000

您已決定要使用媒體服務來編碼即時串流,且不會使用傳遞功能。 您不知道平均頻寬將是多少,但知道您會在 1080p (5.5 Mbps 的頂層位元速率) 中傳遞,因此您的 平均 頻寬估算為 3.5 Mbps。

平均頻寬 =3.5

由於您的受眾散佈於世界各地,因此您預期 CDN 會處理大部分 (90% ) 的即時流量。 因此,進階串流端點只會處理 10% 的流量。

串流端點處理的百分比 =10% = 0.1

使用上述提供的公式:

所需的總輸出 = 平均頻寬 x 並行檢視者數目 x 串流端點所處理的百分比。

所需的總輸出 = 3.5 x 1,000 x 0.1

所需的總輸出 = 350 Mbps

將總輸出除以 200,您依此判斷需要 1.75 個進階串流單位。

所需的進階串流單位 = 所需的總輸出/200Mpbs

所需的進階串流單位 = 1.75

我們會將此數值四捨五入為 2,因此需要 2 個單位。

使用入口網站來估算您的需求

Azure 入口網站可協助您簡化計算。 在串流頁面上,您可以使用提供的計算機來檢視當您變更平均頻寬、CDN 點擊率和串流單位數目時的估算觸達受眾。

  1. 從媒體服務帳戶頁面的選單選取 [串流端點]。

  2. 選取 [新增串流端點] 來新增新的串流端點

  3. 為串流端點提供名稱。

  4. 為串流端點類型選取 [進階版串流端點]。

  5. 由於您目前剛取得此端點的估計值,因此在建立之後請勿啟動串流端點。 請選取 [否] 。

  6. 針對您的 CDN 定價層選取 [標準 Verizon] 或 [進階版 Verizon]。 設定檔名稱會隨之變更。 保留此次練習的名稱。

  7. 針對 CDN 設定檔,選取 [建立新物件]。

  8. 選取 [建立]。 部署端點之後,串流端點畫面隨即出現。

  9. 選取您剛才建立的串流端點。 串流端點畫面會顯示受眾觸達估計值。

  10. 具有 1 個串流單位的串流端點,在預設設定會顯示其估計使用 90% 的 CDN 和 10% 的串流端點,並以 3.5 Mbps 頻寬串流給 571 個並行檢視者。

  11. 輸出來源的百分比從 90% 來自 CDN 快取變更為 0%。 計算機估計您能以 3.5 Mbps 頻寬串流給 57 個並行檢視者,共 200 Mbps,且不需要 CDN。

  12. 現在,將輸入來源改回 90%。

  13. 然後,將 串流單位變更為 2。 計算機將估計您能以 3.5 Mbps 串流給 1143 個並行檢視者,而有 4000Mpbs 會使用 CDN處理 90% 的流量。

  14. 選取 [儲存]。

  15. 您可以啟動串流端點,並嘗試將流量傳送至該端點。 畫面底部的計量會追蹤實際流量。

計時

建議您在預期的尖峰使用量前 1 小時佈建串流單位,以確保串流單位已準備就緒。

取得說明及支援

您可以連絡媒體服務並提出問題,或遵循下列其中一種方法來追蹤我們的更新: