使用邊緣計算來增強流傳輸

來源:Demuxed 2021
主講人:Robert Labonte(Fastly)
內容整理:彭 峯
流媒體格式不斷更新新功能,以及一些平臺和觀衆者開始要求實施 / 採用某些功能。過去,解決此問題的方法是重新編碼和 / 或重新混合現有媒體庫以添加新功能。這是昂貴、耗時的,有時需要重新設計您的編碼 / 複用管道以適應。本次演講將深入探討跨多個供應商使用邊緣計算平臺的細節,以通過即時和全球可擴展的方法爲現有媒體流實施新功能。

目錄

Dynamic Edge Application

在許多時候,視頻服務提供商或許會有一個巨大的內容庫,用戶會不定期選擇查看這些內容,而視頻服務提供商希望不斷在視頻流播放過程中提供新的功能,平臺也還會有其他的要求。此外在滿足這些新要求的同時,如何提升用戶體驗也是重要的。這就是動態邊緣應用(Dynamic Edge Application)的設計出發點,並且該動態邊緣應用還能實現視頻流的格式統一,降低存儲和傳輸開銷。

Why Build Daynamic Edge Application?

動態邊緣應用具有很多特點,首先其應用程序輸出存儲在 CDN 的緩存中而不是存儲設備中,其次所有的內容都是即時動態生成的,此外也不需要對源視頻進行修改,最後應用是一個無狀態的形式,所以不需要擔心數據庫或者其他服務器出現故障而影響視頻的播放。

上述的動態邊緣應用是基於 Fastly 的 Compute@Edge 框架構建的,使用 Rust 語言編寫,並且需要依賴 FFmpeg 庫。當然,也可以在其它環境例如不同的框架下使用不同的編程語言實現。

使用邊緣計算的主要好處有以下幾點:

接下來將展示該應用的一些特點。

Segment Pre-Fetch

片段預取是指在流媒體客戶端請求之前,將流媒體段提前放入 CDN 緩存識別播放列表,並動態地爲每個片段 URL 添加預取指令。當用戶觀看的視頻內容分佈呈現長尾分佈時即大部分內容只有少量用戶觀看從而導致緩存未命中,或者當內容生成位置距離用戶較遠,例如處於不同的大洲,Segment Pre-Fetch 能夠使得在媒體客戶端發出請求之前流媒體內容被傳送的距離較近的邊緣設備中。

播放列表將修改段 URL 與預取指令使用查詢參數。對於分段請求, 當遇到這些查詢參數時,它會觸發邊緣應用中的預取操作,一個典型的再現播放列表如下圖所示。因爲依賴於查詢參數,能夠與現有的媒體播放器兼容。並且由於減少了預取指令,減少了 404 情況的出現。

Rendition Playlist 例子

下列的時序圖展示了一個非常典型的客戶端到 CDN 在到內容生成者的交互示意圖,客戶端在向邊緣設備請求片段 1 時,邊緣設備會向 CDN 緩存請求,如果沒有命中,則向源端請求,同時邊緣設備也會以同樣的方式請求後面的一些片段,當客戶端請求後續的片段時,客戶端將會從臨近的邊緣計算中獲得,

First Segment Request

Trickplay

特技模式(Trick mode)或特技播放(Trick play)是數字視頻系統(包括數字視頻錄像機和視頻點播系統)的一項功能,它模仿由 VCR 等模擬系統提供的快進和倒帶操作期間給出的視覺反饋 。基於 JPEG 的特技模式, 動態邊緣應用實現了動態生成圖像流,其具有以下特點:

在 Trickplay 過程中,動態邊緣應用的請求的處理過程如下,在 Master Manifest 中首先選擇 Rendition 播放列表生產 JPEG 圖像,然後再使用查詢參數添加圖像編碼到播放列表的 URL 中;在 Rendition 播放列表中,帶有圖像編碼指令的請求返回帶有包含圖像編碼的片段 URL 的播放列表指令;在段請求中,帶有圖像編碼查詢參數的請求將第一幀重新編碼爲 JPEG 圖像返回!

Trickplay 請求過程

Stream Format Conversion

視頻庫中存在許多的 HLS 格式的內容,大多數都是很少被觀看的舊視頻,因此在大規模數據數據的情況下,重新封裝是困難的,但仍然需要維護這些視頻流,從而確保與視頻播放器的兼容,這個邊緣計算應用可以轉換現有的 MPEG 傳輸流 HLS 碎片到 MP4 HLS,並且可選擇將音頻和視頻放入單獨的流中,這適用於視頻點播和直播流。

要實現上述操作,在 Master Manifests 中,如果音頻和視頻保持混合則不需要做任何改變,當音頻和視頻分離,則需要生成新的音頻播放列表 URLs;在 Rendition Playlists 中,媒體段 URLs 被使用新的前綴修改,remux 指令使用查詢參數被添加;在段請求中,使用複合查詢指令被分解。

格式轉換的請求處理

Conclusion

在實際應用之後,動態邊緣應用表現出了以下特點:

最後附上演講視頻:

視頻詳情

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/jbZgQf7RTw9_yus7X4NrsA