蔣夢云
關(guān)鍵詞:HLS;流媒體技術(shù);Twitch;自適應(yīng)碼率
0 引言
隨著互聯(lián)網(wǎng)技術(shù)的快速發(fā)展,流媒體傳輸已成為各類多媒體應(yīng)用的核心需求。其中,HLS(HTTP LiveStreaming) 是一種由Apple公司開發(fā)的基于HTTP的流媒體傳輸技術(shù),具有簡單、靈活、自適應(yīng)性強(qiáng)等特點,被廣泛應(yīng)用于在線直播、廣播電視、車載娛樂等領(lǐng)域[1]。本文將介紹HLS流媒體技術(shù)在Twitch直播平臺中的應(yīng)用與實踐。
1 HLS 流媒體技術(shù)的工作原理
HLS流媒體技術(shù)是一種基于HTTP協(xié)議的流媒體傳輸技術(shù)。它將直播流媒體分割為多個小的HTTP文件,每個文件包含一小段時間的直播數(shù)據(jù)??蛻舳烁鶕?jù)需要請求這些文件,并按照文件的時間戳重新組裝成完整的直播流媒體,技術(shù)框架如圖1所示[2]。
2 HLS 流媒體技術(shù)的主要特點
1) 簡單易用:HLS基于標(biāo)準(zhǔn)的HTTP協(xié)議,無需復(fù)雜的配置即可實現(xiàn)流媒體傳輸。客戶端只須支持標(biāo)準(zhǔn)的HTTP請求即可獲取直播流媒體數(shù)據(jù)。
2) 靈活性強(qiáng):HLS支持對直播流媒體進(jìn)行任意時間粒度的分割,可以滿足不同網(wǎng)絡(luò)環(huán)境和設(shè)備性能的需求。同時,客戶端可以根據(jù)需要選擇不同的時間粒度,以實現(xiàn)最佳的播放效果。
3) 自適應(yīng)性好:HLS可以通過動態(tài)調(diào)整碼率等方式,自適應(yīng)網(wǎng)絡(luò)環(huán)境和設(shè)備性能的變化,保證直播流媒體的穩(wěn)定性和流暢性[3]。
4) 可擴(kuò)展性強(qiáng):HLS可以與CDN(內(nèi)容分發(fā)網(wǎng)絡(luò))結(jié)合使用,實現(xiàn)大規(guī)模的直播流媒體分發(fā)和播放,滿足更多用戶的需求。
3 HLS 流媒體技術(shù)在Twitch 平臺中的實踐
Twitch 是全球最大的游戲直播平臺之一,使用HLS流媒體技術(shù)進(jìn)行直播內(nèi)容的傳輸。具有以下的應(yīng)用需求。1) 滿足大規(guī)模并發(fā)訪問需求:Twitch平臺每天吸引了數(shù)百萬用戶觀看直播內(nèi)容,其中不乏一些熱門直播間的并發(fā)訪問量高達(dá)數(shù)百萬。HLS流媒體技術(shù)通過將直播內(nèi)容分割為多個HTTP文件,并使用CDN 進(jìn)行分發(fā),成功滿足了Twitch 平臺大規(guī)模并發(fā)訪問的需求[4]。2) 提供穩(wěn)定流暢的播放體驗:HLS流媒體技術(shù)的自適應(yīng)性強(qiáng),可以根據(jù)網(wǎng)絡(luò)環(huán)境和設(shè)備性能的變化自適應(yīng)調(diào)整碼率和清晰度,保證了Twitch 平臺直播流媒體的穩(wěn)定性和流暢性。無論用戶處于何種網(wǎng)絡(luò)環(huán)境或使用何種設(shè)備,都可以獲得清晰、流暢的觀看體驗。
3.1 HLS流媒體技術(shù)中自適應(yīng)算法的設(shè)計
針對直播實踐,本文設(shè)計出一種自適應(yīng)算法(ABR) 用來根據(jù)緩沖區(qū)狀態(tài)來做出碼率調(diào)整決策。當(dāng)緩沖區(qū)處于過度填充或者空閑狀態(tài)時,該算法會相應(yīng)地調(diào)整碼率,以平衡播放的流暢性和視頻質(zhì)量,以下是核心代碼:
首先,初始化了 ABRAlgorithm類,并定義了緩沖區(qū)大小、高閾值、低閾值和可選的視頻碼率等參數(shù)。然后,在monitor_buffer方法中,根據(jù)下載的數(shù)據(jù)量和時長更新緩沖區(qū)狀態(tài)。接著,通過adjust_bitrate方法根據(jù)當(dāng)前的緩沖區(qū)狀態(tài)來動態(tài)調(diào)整視頻碼率。最后,通過 playback方法模擬視頻的播放過程,根據(jù)緩沖區(qū)狀態(tài)來進(jìn)行相應(yīng)的處理。
3.2 HLS 流媒體技術(shù)中自適應(yīng)算法遇到的問題
1) 碼率切換時的延遲問題:在進(jìn)行碼率切換時,由于需要獲取新的碼率對應(yīng)的視頻片段,可能會導(dǎo)致一定的延遲,從而影響用戶觀看體驗[5]。
2) 流暢性和畫質(zhì)平衡:自適應(yīng)算法需要在保證視頻流暢播放的同時,盡可能提供高質(zhì)量的視頻畫面。因此需要在不同網(wǎng)絡(luò)條件下找到合適的平衡點,以避免頻繁的碼率切換和畫質(zhì)下降。
3) 網(wǎng)絡(luò)狀況變化引起的抖動:當(dāng)網(wǎng)絡(luò)狀況頻繁變化時,自適應(yīng)算法可能會出現(xiàn)頻繁的碼率切換,導(dǎo)致視頻播放的抖動現(xiàn)象,影響用戶體驗。
4) 跨平臺和設(shè)備兼容性:不同設(shè)備和平臺可能具有不同的網(wǎng)絡(luò)條件和性能特點,自適應(yīng)算法需要在各種設(shè)備上表現(xiàn)良好 ,包括移動設(shè)備、智能電視、桌面電腦等。
5) 用戶體驗個性化:由于不同用戶的觀看環(huán)境和偏好不同,自適應(yīng)算法需要考慮如何根據(jù)用戶的個性化需求來調(diào)整碼率選擇,以提供更好的用戶體驗。
6) 實時性能優(yōu)化:自適應(yīng)算法需要在實時性和穩(wěn)定性之間尋找平衡,確保及時響應(yīng)網(wǎng)絡(luò)狀況的變化,同時避免過于頻繁地進(jìn)行調(diào)整。
3.3 HLS 流媒體技術(shù)中自適應(yīng)算法的優(yōu)化策略
1) 延遲問題的優(yōu)化策略
①使用HTTP/2或HTTP/3協(xié)議,以減少連接建立和認(rèn)證的延遲。HTTP/2引入了頭信息壓縮和多路復(fù)用等技術(shù),可以減少請求的大小和數(shù)量,提高傳輸效率。HTTP/3則基于QUIC協(xié)議,通過在TCP上建立連接并使用UDP 進(jìn)行數(shù)據(jù)傳輸,進(jìn)一步提高了傳輸效率。
②引入CDN(內(nèi)容分發(fā)網(wǎng)絡(luò))和多級緩存策略,將直播流媒體內(nèi)容分發(fā)到全球各地的服務(wù)器,使用戶可以從最近的服務(wù)器獲取數(shù)據(jù),減少延遲。
③優(yōu)化直播流媒體的分片大小和時間粒度,以減少請求的數(shù)量和大小,從而減少延遲。
2) 自適應(yīng)碼率問題的優(yōu)化策略
①動態(tài)調(diào)整碼率時,需要在保證流暢度和清晰度之間進(jìn)行權(quán)衡。通過合理地調(diào)整碼率,避免頻繁的碼率變化引起的卡頓。
②采用智能碼率調(diào)整算法,根據(jù)網(wǎng)絡(luò)環(huán)境和設(shè)備性能的變化,自適應(yīng)調(diào)整碼率。例如,當(dāng)網(wǎng)絡(luò)環(huán)境較差時,可以自動降低碼率以確保流暢性;當(dāng)網(wǎng)絡(luò)環(huán)境較好且設(shè)備性能較高時,可以自動提高碼率以提供更好的清晰度[6]。
③引入緩存策略,緩存已經(jīng)請求過的直播片段,以減少重復(fù)請求和碼率調(diào)整引起的卡頓。
3) 跨平臺和跨設(shè)備兼容性問題的優(yōu)化策略
①與設(shè)備制造商和操作系統(tǒng)開發(fā)商合作,針對不同設(shè)備和操作系統(tǒng)進(jìn)行優(yōu)化,確保最佳的播放效果。
②提供適用于不同設(shè)備和操作系統(tǒng)的播放器界面和插件,使用戶可以在不同的設(shè)備和平臺上順暢地觀看直播內(nèi)容。
③引入自適應(yīng)播放器,根據(jù)用戶的設(shè)備和網(wǎng)絡(luò)環(huán)境自動選擇最佳的播放模式和清晰度。
4) 廣告與訂閱模式的集成問題的優(yōu)化策略
①與廣告投放系統(tǒng)集成,確保廣告的正確播放和計費(fèi)。例如,通過在直播流媒體中插入廣告片段或在直播界面上展示廣告,同時保證廣告的播放不會影響觀眾的觀看體驗。
②與訂閱管理系統(tǒng)集成,實現(xiàn)觀眾的付費(fèi)訂閱和權(quán)限管理。例如,通過與支付平臺合作,實現(xiàn)觀眾的支付和訂閱管理,同時保證訂閱用戶的權(quán)益和特權(quán)。
5) 高并發(fā)訪問問題的優(yōu)化策略
①使用負(fù)載均衡技術(shù),將用戶請求分配到多個服務(wù)器上進(jìn)行處理,提高平臺的并發(fā)處理能力[6]。
②引入分布式緩存和數(shù)據(jù)庫系統(tǒng),以減輕數(shù)據(jù)庫的負(fù)載并提高數(shù)據(jù)的訪問速度。例如,使用Redis等內(nèi)存數(shù)據(jù)庫作為緩存層,加速數(shù)據(jù)的讀取速度并減輕數(shù)據(jù)庫的負(fù)載。
③使用CDN和多級緩存策略,將直播流媒體內(nèi)容分發(fā)到全球各地的服務(wù)器,使用戶可以從最近的服務(wù)器獲取數(shù)據(jù),提高并發(fā)訪問的處理能力。
3.4 HLS 流媒體技術(shù)中自適應(yīng)算法的優(yōu)化實現(xiàn)
針對上述問題,本文采用基于機(jī)器學(xué)習(xí)和深度學(xué)習(xí)的方法進(jìn)行了優(yōu)化,詳細(xì)步驟如下:
1) 數(shù)據(jù)準(zhǔn)備
設(shè)置監(jiān)控系統(tǒng)來實時記錄用戶觀看視頻時的網(wǎng)絡(luò)帶寬、延遲、丟包率等網(wǎng)絡(luò)狀態(tài)信息,以及視頻質(zhì)量指標(biāo)如卡頓率、清晰度評分等。收集每個用戶的設(shè)備信息,設(shè)備型號、屏幕分辨率等,以及用戶的地理位置信息和觀看時間等。利用日志文件和事件跟蹤來記錄用戶觀看視頻時的各種行為和交互信息,以便后續(xù)分析用戶行為模式和偏好選擇模型。
2) 數(shù)據(jù)處理
清洗數(shù)據(jù):收集的用戶觀看視頻時的網(wǎng)絡(luò)帶寬數(shù)據(jù),可能會出現(xiàn)一些異常值,比如網(wǎng)絡(luò)帶寬突然飆升或驟降的情況,需要識別并移除這些異常值。特征工程:在視頻流媒體服務(wù)中,用戶的設(shè)備類型和屏幕分辨率可能多種多樣。需對這些特征進(jìn)行縮放。例如,計算網(wǎng)絡(luò)帶寬的平均值、最大值、標(biāo)準(zhǔn)差等統(tǒng)計特征,或者從時間戳中提取小時、星期幾等時間特征。數(shù)據(jù)平滑:對網(wǎng)絡(luò)帶寬數(shù)據(jù)進(jìn)行移動平均,以減少瞬時波動對最佳碼率選擇的影響。特征選擇:某些設(shè)備信息可能對最佳碼率選擇的影響較小,在特征選擇階段可以考慮將其移除。
3) 模型訓(xùn)練
對于最佳碼率選擇問題,可以考慮使用監(jiān)督學(xué)習(xí)方法,比如回歸模型或者分類模型。針對連續(xù)數(shù)值型的最佳碼率選擇,可以選擇回歸模型,比如線性回歸、決策樹回歸、集成回歸模型等;而如果將最佳碼率選擇離散化為幾個檔次,也可以考慮使用分類模型,比如邏輯回歸、隨機(jī)森林分類器等。
4) 模型評估
針對最佳碼率選擇模型。
4 總結(jié)與技術(shù)展望
隨著流媒體技術(shù)的不斷發(fā)展和創(chuàng)新,HLS流媒體技術(shù)將在未來的直播行業(yè)中繼續(xù)發(fā)揮重要作用。展望未來,HLS流媒體技術(shù)將面臨更多挑戰(zhàn)和機(jī)遇。以下是一些未來可能的研究方向。
1) 新型編碼和壓縮技術(shù):隨著視頻編碼和壓縮技術(shù)的不斷發(fā)展,未來可能會出現(xiàn)更高效的編碼和壓縮算法,進(jìn)一步提高視頻質(zhì)量和壓縮比,減少存儲和傳輸成本。
2) 智能優(yōu)化技術(shù):未來將有更多的智能優(yōu)化技術(shù)應(yīng)用于HLS流媒體領(lǐng)域,如深度學(xué)習(xí)、人工智能等。這些技術(shù)可以幫助系統(tǒng)自動識別和調(diào)整直播流媒體的質(zhì)量,以更好地適應(yīng)網(wǎng)絡(luò)環(huán)境和設(shè)備性能的變化。
3) 混合流媒體技術(shù):HLS流媒體技術(shù)可以與其他流媒體技術(shù)相結(jié)合,如DASH、WebRTC等,形成混合流媒體技術(shù),以提供更豐富的功能和更好的用戶體驗。
綜上所述,HLS流媒體技術(shù)在未來的直播行業(yè)中將繼續(xù)發(fā)揮重要作用,并面臨更多挑戰(zhàn)和機(jī)遇。未來研究方向?qū)⒑w新型編碼和壓縮技術(shù)、智能優(yōu)化技術(shù)、混合流媒體技術(shù)、5G網(wǎng)絡(luò)的應(yīng)用以及隱私和安全保護(hù)等方面,以推動流媒體技術(shù)的創(chuàng)新和發(fā)展,提高整個行業(yè)的效率和用戶體驗。