媒體服務即時串流最佳做法指南
客戶通常會詢問他們如何降低即時串流延遲。 本文說明除了即時事件編碼之外,還使用 達到低延遲即時串流的最佳作法。
注意
在您繼續閱讀本文之前,請閱讀 低延遲 HLS (LL-HLS) 文章,以了解即時事件編碼的低延遲。 然後,回到本指南以瞭解其他可能會影響串流延遲的內容。
除了媒體的編碼方式之外,有許多因素會決定數據流的端對端延遲。 以下是您應該考慮的一些事項:
參與編碼器端的延遲。 當客戶使用 OBS Studio、Wirecast 等編碼軟體,將 RTMP 即時串流傳送至媒體服務時。 此軟體上的設定會影響實時數據流的端延遲。
Azure 媒體服務內即時串流管線的延遲
CDN 效能
在客戶端緩衝處理視訊播放程式和網路條件的演算法
布建的時間
參與編碼器
您可以在 RTMP 數據流到達媒體服務之前控制來源編碼器設定的設定。 以下是提供最低可能延遲之設定的一些建議:
為您的媒體服務帳戶挑選最接近您貢獻編碼器的實體區域,。 這可確保您有絕佳的媒體服務帳戶網路連線。
使用一致的片段大小。 我們建議 GOP 大小為 2 秒。 某些編碼器的預設值,例如 OBS,是 8 秒。 請確定您變更此設定。
如果您的編碼軟體允許您這麼做,請使用 GPU 編碼器。 這可讓您將 CPU 工作卸除至 GPU。
使用針對低延遲優化的編碼配置檔。 例如,使用 OBS Studio 時,如果您使用 Nvidia H.264 編碼器,您可能會看到「零延遲」預設值。
傳送解析度不高於您打算串流的內容。 例如,如果您使用 720p 標準編碼即時事件,請傳送已經在 720p 的數據流。
除非您使用傳遞即時活動,否則請將幀速率保持在 30fps 或更低。 雖然我們支持即時事件的 60 fps 輸入,但我們編碼即時事件輸出仍然不高於 30 fps。 針對 低延遲 HLS,建議使用固定幀速率,且最大幀持續時間不應超過 0.5 秒,以獲得最佳體驗。
設定 Azure 媒體服務實時活動
以下是一些可協助您減少管線延遲的設定:
針對即時活動使用低延遲串流選項。 針對標準編碼(最多 720p)和進階編碼(最多 1080p)串流選項,除非您需要超過 6 小時或平滑串流輸出的 DVR 視窗,否則請使用低延遲串流延遲設定。
建議您針對 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)
如果您必須選擇 TS 輸出,請使用 HLS 封裝比例 1。 這可讓我們只將一個片段封裝成一個 HLS 區段。 你不會得到原生蘋果播放機中 LL-HLS 的全部好處。
播放機優化
選擇和設定視訊播放程式時,請務必使用針對較低延遲優化的設定。
媒體服務支援不同的串流通訊協議輸出 – DASH、具有 TS 輸出的 HLS,以及具有 CMAF 片段的 HLS。 使用 [LowLatencyV2
數據流] 選項時,請務必尋找支援低延遲 HLS 的播放機(LL-HLS)。 根據玩家的實作,緩衝決策會影響查看器觀察到的延遲。 較差的網路狀況或偏好播放品質與穩定性的預設演算法,可能會導致玩家決定預先緩衝更多內容,以避免在播放期間中斷。 在播放會話之前和期間,這些緩衝區會新增至端對端延遲。
使用 Azure 媒體播放機時,低延遲啟發學習法 配置檔會將玩家優化,讓玩家端有最低的延遲。 此播放機僅支援 DASH,除非它在 Apple 裝置上的 Safari 上使用。
CDN 選擇和優化
串流端點是將即時和 VOD 串流內容傳遞至 CDN 或直接提供給客戶的源伺服器。 最好使用具有受防護來源的內容傳遞網路(CDN),以確保有效率地傳遞媒體內容的流量。
我們建議使用由 Verizon 提供的 Azure CDN(標準或進階版)。 我們已優化整合體驗,讓客戶可以使用 Azure 入口網站中的單一選取項目來設定此 CDN。 每當啟動串流端點時,請務必開啟 Origin Shield 和串流優化 CDN 端點。
我們的客戶也有良好的體驗來帶來自己的CDN。 請確定已對 CDN 採取措施,以防護來源不受過多流量的影響。
您也可以藉由設定 CDN 設定檔的規則來改善效能。 請參閱 如何啟用CDN優化。
串流端點調整
注意
標準串流端點/來源 是一種 共用 資源,可讓客戶以較低的成本串流內容。 如果您預期有大型流量磁碟區,或打算使用CDN,則 不要 使用標準串流端點來調整串流單位。
進階串流端點/原始來源 可藉由新增或移除 專用 串流單位,為客戶提供更大的彈性和隔離。 串流單位 是配置給串流端點的計算資源。 每個串流單位可以串流大約 200 Mbps 的流量。
雖然您可以使用相同的串流端點同時串流許多即時事件,但一個串流端點所需的預設串流單位上限為 10。 您可以開啟支援票證來要求超過預設 10。
判斷所需的進階串流單位
有兩個步驟可判斷所需的串流端點數目和串流單位:
判斷所需的總輸出。
將總輸出除以 200,這是每個串流單位可以串流的最大 Mbps。
判斷所需的總輸出
使用下列公式來判斷所需的總輸出。
需要的總輸出 = 平均頻寬 x 並行檢視者數目 x由串流端點處理的百分比。
讓我們來看看每個乘數:
平均頻寬。 您打算串流的 平均 比特率為何? 換句話說,如果您要有多個比特率可供使用,您要規劃的所有比特率平均值為何? 您可以使用下列其中一種方法來估計這一點:
針對 包含編碼的實況活動:
如果您不知道 的平均 帶寬為何,您可以使用我們的最高比特率作為估計值。 我們的 最高 比特率是 1080p 編碼即時事件的 5.5Mbps,因此,您的平均比特率會大約在 3.5Mbps 左右。
查看用於編碼即時事件的編碼預設,例如 AdaptiveStreaming(H.264) 預設。 請參閱此 輸出範例。
對於直接使用傳遞而非編碼的實況活動:
- 檢查本機編碼器所使用的編碼比特率階梯。
並行檢視者的數目。 預期有多少並行檢視者? 這可能很難估計,但根據您的客戶數據盡最大努力。 您是否將會議串流至全球觀眾? 您是否打算即時串流向您的客戶銷售一組產品?
判斷所需的進階串流單位數目
需要進階串流單位 = 檢視者的平均頻寬 x # x 檢視者百分比 /CDN / 200 Mbps
例
您最近發行了新產品,並想要將其呈現給已建立的客戶。 您想要低延遲,因為您不想讓已忙碌的物件感到沮喪,因此您將使用進階串流端點和 CDN。
您有大約 100,000 個客戶,但他們可能都不會觀看您的實況活動。 你猜到,在最好的情況下,只有1% 他們會出席,這讓你預期的並行觀眾達到1000人。
並行用戶數目 =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 命中率和串流單位數目時,查看預估物件觸達率。
從媒體服務帳戶頁面,從功能表中選取 [[蒸汽端點]。
選取 [新增串流端點],以新增串流端點。
為串流端點命名。
針對串流端點類型,選取 [進階串流端點]。
由於您目前只是獲得估計值,因此在建立之後請勿啟動串流端點。 選取 [沒有。
針對您的 CDN 定價層,選取 [標準 Verizon 或 Premium Verizon。 配置檔名稱將會隨之變更。 保留此練習的名稱。
針對 CDN 設定檔,選取 [[建立新]。
選取 [建立 ]。 部署端點之後,串流端點畫面隨即出現。
選取您剛才建立的串流端點。 串流端點畫面會顯示物件觸達估計值。
具有 1 個串流單位的串流端點預設設定顯示,使用 CDN 的 90% 和串流端點的 10%,估計會以 3.5 Mbps 串流方式串流至 571 個並行檢視者。
將輸出來源 的百分比從 CDN 快取的 90% 變更為 0%。 計算機估計您將能夠在 200 Mbps 的 3.5 Mb ps 上串流至 57 個並行檢視者,而不需要 CDN。
現在,將輸出 來源
變更回 90%。 然後,將 串流單位 變更為 2。 計算機估計,您將能夠以 3.5 Mbps 串流至 1143 個並行檢視者,且 CDN 處理 90% 流量。
選取 [儲存]。
您可以啟動串流端點,並嘗試將流量傳送至該端點。 畫面底部的計量會追蹤實際流量。
定時
您可能想要在預期的尖峰使用量前 1 小時布建串流單位,以確保串流單位已就緒。
取得說明和支援
您可以連絡媒體服務,詢問問題,或遵循下列其中一種方法來追蹤我們的更新:
- Q & A
-
Stack Overflow。 使用
azure-media-services
標記問題。 - @MSFTAzureMedia 或使用 @AzureSupport 來要求支援。
- 透過 Azure 入口網站開啟支援票證。