使用CDN整合串流內容
警告
Azure 媒體服務將於 2024 年 6 月 30 日淘汰。 如需詳細資訊,請參閱 AMS 淘汰指南。
重要
由於 Azure 媒體服務將於 2024 年 6 月 30 日淘汰,Azure CDN 將於 2023 年 10 月 31 日從 Akamai 淘汰 Azure CDN 標準, 最好不要建立新的 CDN 以搭配 Azure 媒體服務使用。 請參閱
Azure 內容傳遞網路 (CDN) 為開發人員提供全球解決方案,可透過在策略性放置的實體節點快取內容給使用者,快速提供高頻寬內容給使用者。
CDN 會快取從媒體服務串流處理的內容 串流端點(來源) 每個編解碼器、每個串流通訊協定、每個比特率、每個容器格式,以及每個加密/DRM。 針對編解碼器串流通訊協定容器格式比特率加密的每個組合,將會有個別的CDN快取。
只要快取影片片段,就會直接從CDN快取提供熱門內容。 實時內容可能會快取,因為您通常會讓許多人觀看完全相同的內容。 隨選內容可能會有點棘手,因為您可能會有一些熱門的內容,有些內容則不受歡迎。 如果您有數百萬個視頻資產,其中沒有任何一個是受歡迎的(每周只有一兩個觀眾),但有成千上萬的人觀看所有不同的視頻,CDN 變得不那麼有效。
您也需要考慮調適性串流的運作方式。 每個個別影片片段都會快取為自己的實體。 例如,假設第一次觀看特定視訊。 如果查看器只略過幾秒的觀看時間,則只有與在CDN中快取人員所觀看內容相關聯的影片片段。 透過自適性串流,您通常會有 5 到 7 個不同的視訊比特率。 如果一個人正在監看一個比特率,而另一個人正在監看不同的比特率,則每個比特率都會分別在 CDN 中快取。 即使兩個人正在監看相同的比特率,他們也可以透過不同的通訊協定串流處理。 每個通訊協定(HLS、MPEG-DASH、Smooth Streaming)都會分別快取。 因此,每個比特率和通訊協議都會個別快取,而且只會快取已要求的視頻片段。
除了測試環境之外,建議針對標準和進階串流端點啟用CDN。 每種串流端點類型都有不同的支援輸送量限制。
很難精確計算串流端點所支援的並行串流數目上限,因為有各種因素需要考慮。 這些包括:
- 用於串流的最大比特率
- 播放器預先緩衝和切換行為。 玩家會嘗試從原始來源高載區段,並使用負載速度來計算調適性比特率切換。 如果串流端點接近飽和度,回應時間可能會有所不同,玩家開始切換為較低的品質。 由於這會減少串流端點播放器的負載,請相應減少至更高品質的切換觸發程式。
整體而言,可以藉由採用最大串流端點輸送量來估計最大並行串流,並將它除以最大比特率(假設所有玩家都使用最高的比特率。例如,您可以有標準串流端點,其限制為 600 Mbps,最高比特率為 3Mbp。 在此情況下,最高比特率支持大約 200 個並行串流。 也請記得考慮音頻頻寬需求。 雖然音訊串流可能只有 128 kps 串流,但當您將串流乘以並行串流數目時,總串流會迅速增加。
本主題討論啟用 CDN 整合。 它也說明預先擷取 (主動快取) 和 Origin-Assist CDN-Prefetch 概念。
考慮
-
串流端點
hostname
,不論您是否啟用CDN,串流URL都會維持不變。 - 如果您需要使用或不使用CDN來測試內容的能力,請建立另一個未啟用CDN的串流端點。
啟用 Azure CDN 整合
重要
您無法為試用版或學生 Azure 帳戶啟用 CDN。
除了聯邦政府和中國區域之外,所有 Azure 資料中心都已啟用 CDN 整合。
在啟用CDN的串流端點布建之後,媒體服務已定義等候時間,DNS更新完成以將串流端點對應至CDN端點。
如果您稍後想要停用/啟用CDN,您的串流端點必須處於 停止 狀態。 一旦啟動串流端點,最多可能需要四個小時才能啟用 Azure CDN 整合,並讓所有 CDN POP 的變更處於作用中狀態。 不過,您可以啟動串流端點和串流,而不會中斷串流端點。 整合完成後,就會從CDN傳遞數據流。 在布建期間,串流端點將會處於 開始 狀態,您可能會發現效能降低。
建立標準串流端點時,預設會使用標準 Verizon 進行設定。 您可以使用 REST API 來設定進階 Verizon 或標準 Akamai 提供者。
Azure 媒體服務與 Azure CDN 的整合會在來自 Verizon 的 Azure CDN
注意
如需 Azure CDN 的詳細資訊,請參閱
判斷是否已進行 DNS 變更
您可以使用 https://www.digwebinterface.com,判斷串流端點上是否已進行 DNS 變更(流量已導向至 Azure CDN)。 如果您在結果中看到 azureedge.net
功能變數名稱,流量現在會指向CDN。
Origin-Assist CDN-Prefetch
CDN 快取是反應式程式。 如果 CDN 可以預測要要求的下一個物件,CDN 可以主動要求並快取下一個物件。 透過此程式,您可以針對可改善效能的所有物件(或大部分)達到快取點擊。
預先擷取會努力將物件定位在「因特網邊緣」,預期玩家即將要求對象,從而縮短將該對象傳遞給玩家的時間。
若要達成此目標,串流端點(來源)和 CDN 必須以幾種方式共同運作:
- 媒體服務來源必須有「智慧」(Origin-Assist),才能告訴CDN下一個要預先擷取的物件。
- CDN 會執行預先擷取和快取 (CDN 預先擷取部分)。 CDN 也需要有「智慧」才能:
- 告知來源是否為預先擷取或一般擷取
- 處理 404 回應
- 和避免無止盡的預先擷取迴圈的方法
好處
Origin-Assist CDN-Prefetch 功能的優點包括:
- 預先擷取可藉由在播放期間預先定位預期的視訊區段、減少查看器的延遲,以及改善視訊區段下載時間,來改善視訊播放品質。 這會導致更快速的影片啟動時間和較低的拒絕發生次數。
- 此概念適用於一般CDN來源案例,且不限於媒體。
- Akamai 已將這項功能新增至 Akamai 雲端內嵌 (ACE)。
注意
這項功能還不適用於與媒體服務串流端點整合的 Akamai CDN。 不過,它適用於具有預先存在的 Akamai 合約且需要 Akamai CDN 與媒體服務來源之間的自定義整合的媒體服務客戶。
運作方式
Origin-Assist CDN-Prefetch
標頭的CDN支援(適用於即時和視訊隨選串流)可供與 Akamai CDN 直接合約的客戶使用。 此功能牽涉到 Akamai CDN 與媒體服務來源之間的下列 HTTP 標頭交換:
HTTP 標頭 | 值 | 寄件者 | 接收器 | 目的 |
---|---|---|---|---|
CDN-Origin-Assist-Prefetch-Enabled |
1 (預設值) 或 0 | CDN | 起源 | 表示 CDN 已啟用預先擷取。 |
CDN-Origin-Assist-Prefetch-Path |
例: Fragments(video=1400000000,format=mpd-time-cmaf) |
起源 | CDN | 提供CDN的預先擷取路徑。 |
CDN-Origin-Assist-Prefetch-Request |
1 (預先擷取要求) 或 0 (定期要求) | CDN | 起源 | 若要指出來自CDN的要求是預先擷取。 |
若要查看作用中標頭交換的一部分,您可以嘗試下列步驟:
- 使用 cURL 向音訊或視訊區段或片段發出媒體服務來源的要求。 請務必在要求中新增標頭
CDN-Origin-Assist-Prefetch-Enabled: 1
。 - 在回應中,您應該會看到標頭
CDN-Origin-Assist-Prefetch-Path
具有相對路徑作為其值。
支援的串流通訊協定
Origin-Assist CDN-Prefetch
功能支援下列串流通訊協定,以進行即時和隨選串流:
- HLS v3
- HLS v4
- HLS CMAF
- DASH (CSF)
- DASH (CMAF)
- Smooth streaming
常見問題
如果預先擷取路徑 URL 無效,因此CDN預先擷取會取得404,該怎麼辦?
CDN 只會快取 404 回應 10 秒(或其他已設定的值)。
假設您有隨選影片。 如果已啟用 CDN 預先擷取,這項功能是否表示一旦用戶端要求第一個視訊區段,預先擷取將會啟動迴圈,以在同一比特率預先擷取所有後續的視訊區段?
否,CDN 預先擷取只會在用戶端起始的要求/回應之後完成。 CDN 預先擷取永遠不會由預先擷取觸發,以避免預先擷取迴圈。
Origin-Assist CDN-Prefetch 功能是否一律開啟? 如何開啟/關閉?
此功能預設為關閉。 客戶必須透過 Akamai API 開啟它。
對於即時串流,如果下一個區段或片段尚無法使用,Origin-Assist 會發生什麼事?
在此情況下,媒體服務來源不會提供
CDN-Origin-Assist-Prefetch-Path
標頭,而且不會發生CDN預先擷取。Origin-Assist CDN-Prefetch
如何使用動態指令清單篩選?此功能與指令清單篩選無關。 當下一個片段離開篩選視窗時,其URL仍會尋找,方法是查看原始用戶端指令清單,然後以CDN預先擷取回應標頭的形式傳回。 因此 CDN 會取得從 DASH/HLS/Smooth 指令清單篩選出的片段 URL。 不過,玩家永遠不會向 CDN 提出 GET 要求來擷取該片段,因為該片段不包含在玩家持有的 DASH/HLS/Smooth 指令清單中(玩家不知道該片段是否存在)。
可以預先擷取 DASH MPD/HLS 播放清單/Smooth 指令清單嗎?
否,DASH MPD、HLS 主要播放清單、HLS 變體播放清單或平滑指令清單 URL 不會新增至預先擷取標頭。
預先擷取 URL 是否相對或絕對?
雖然 Akamai CDN 允許這兩者,但媒體服務來源只提供預先擷取路徑的相對 URL,因為使用絕對 URL 沒有明顯的好處。
此功能是否可與受DRM保護的內容搭配使用?
是,由於此功能可在 HTTP 層級運作,因此不會譯碼或剖析任何區段/片段。 它並不在乎內容是否加密。
此功能是否可與伺服器端廣告插入 (SSAI) 搭配運作?
它適用於原始/主要內容(廣告插入前的原始影片內容),因為 SSAI 不會從媒體服務來源變更來源內容的時間戳。 這項功能是否適用於廣告內容,取決於廣告來源是否支援 Origin-Assist。 例如,如果廣告內容也裝載在 Azure 媒體服務中(相同或不同來源),則廣告內容也會預先擷取。
這項功能是否可與UHD/HEVC內容搭配使用?
是的。
操作說明、教學課程和範例
- 如何啟用CDN優化 -如何啟用Origin Shield
取得說明和支援
您可以連絡媒體服務,詢問問題,或遵循下列其中一種方法來追蹤我們的更新:
- Q & A
-
Stack Overflow。 使用
azure-media-services
標記問題。 - @MSFTAzureMedia 或使用 @AzureSupport 來要求支援。
- 透過 Azure 入口網站開啟支援票證。