賴材棟,謝崇斌,張小強
(中國移動通信集團陜西有限公司,陜西西安,710077)
隨著家庭寬帶業(yè)務(wù)的高速發(fā)展,陜西移動OTT互聯(lián)網(wǎng)電視用戶規(guī)模已達430萬,成為傳播紅色能量、弘揚主旋律的一支重要力量。IPTV隨著規(guī)模和影響力的提升,已經(jīng)成為主流的宣傳渠道。如何更好的提升OTT互聯(lián)網(wǎng)電視整體用戶體驗,推動OTT視頻業(yè)務(wù)大力發(fā)展,成為互聯(lián)網(wǎng)電視從業(yè)人員的重大課題。
IPTV視頻通過內(nèi)容注入多碼率節(jié)目源適配,提升全網(wǎng)終端用戶體驗良好,使得優(yōu)質(zhì)高帶寬家庭組網(wǎng)用戶體驗VR、4K、極清、高清節(jié)目,不斷提升用戶滿意度;普通帶寬終端用戶更好體驗4K、極清、高清節(jié)目,提升用戶滿意度;低帶寬終端用戶流暢體驗高清、標清節(jié)目,保證用戶體驗滿意度。
OTT業(yè)務(wù)使用http的方式進行分發(fā),其中playlist標準為由m3u擴展而來的m3u8文件,媒體文件為MPEG2-TS或者AAC文件(audio only)。m3u8是HTTP Live Streaming直播的索引文件,m3u8分頂級m3u8和二級m3u8,頂級m3u8主要是做多碼率適配的, 二級m3u8才是真正的切片文件,客戶端默認會首先選擇碼率最高的請求,如果發(fā)現(xiàn)碼率達不到,會請求降低碼率的流。
(1)單碼率適配:每個m3u8索引文件中包含單個視頻源格式文件。
(2)多碼率適配:每個m3u8索引文件中包含多個碼率及對應(yīng)視頻格式的文件。
視頻碼率就是數(shù)據(jù)傳輸時單位時間傳送的數(shù)據(jù)位數(shù),一般我們用的單位是kbps即千位每秒。視頻碼率就是取樣率,單位時間內(nèi)取樣率越大,精度就越高,處理出來的文件就越接近原始文件,但是文件體積與取樣率是成正比的,所以幾乎所有的編碼格式重視的都是如何用最低的碼率達到最少的失真。對于一個音頻,其碼率越高,被壓縮的比例越小,音質(zhì)損失越小,與音源的音質(zhì)越接近。
為了更好理解碼率,幾點原則如下:
(1)碼率和質(zhì)量成正比,但是文件體積和碼率也成正比。
(2)碼率超過一定數(shù)值之后,會對圖像的質(zhì)量沒有多大影響。
(3)理論上來講,如果1M的帶寬,在網(wǎng)上只能看不超過1024kbps的視頻,如果超過1024kbps的視頻只能等待視頻緩沖才能順利觀看。
播放器進行碼率自適應(yīng)播放的前提是流媒體服務(wù)器提供多碼率的片源。播放器根據(jù)片源信息會生成一張碼率列表。
(1)碼率碼率自適應(yīng)的整體流程三步
首先,播放器會定時的計算當前理想的播放碼率值,該值被稱為smoothBitrate,它是根據(jù)當前播放器的狀態(tài)參數(shù)計算出來的一個理想值。即播放器如果能播放碼率正好等于smoothBitrate的片源,那么理論上播放的流暢性和清晰度能達到最優(yōu)。如果播放碼率 > smoothBitrate,播放的清晰度可能會提高,但是可能會發(fā)生緩沖區(qū)欠載導致頻繁發(fā)生視頻卡頓;另一方面如果播放碼率 < smoothBirate,播放的流暢度可能會提高,但是因為碼率降低了,可能視頻質(zhì)量會降低。smoothBirate的變化曲線應(yīng)該是平滑的,不會在短時間內(nèi)發(fā)生巨變,因此計算smoothBitrate的公式會有個平滑因子,公式如下所示。
其中l(wèi)astSmoothBitrate是上一次計算的平滑碼率值,currentDownloadBitrate是當前下載速率,平滑因子的默認值是0.3。 smoothBitrate的值由前次歷史平滑碼率值和當前下載速率兩個值組合計算而成。最后smoothBitrate還需要根據(jù)當前的緩存狀況進行調(diào)整,公式如下所示。
其中,最低緩存數(shù)據(jù)時長的含義是:假如該值是5s,那么說明播放器至少需要緩存5s的數(shù)據(jù)才能開始播放。因此當緩存數(shù)據(jù)的時長小于最低緩存數(shù)據(jù)時長,即表示播放器的緩沖區(qū)緩沖的數(shù)據(jù)不夠,說明當前的播放碼率高了,下載速度跟不上播放的速度,這時計算出的緩存因子< 0,最后調(diào)整后的平滑播放碼率adjustedSmoothBirate < smoothBitrate;反之,當緩存數(shù)據(jù)的時長大于最低緩存數(shù)據(jù)時長,即表示播放器的緩沖區(qū)數(shù)據(jù)比較充足,可以適當?shù)奶嵘シ艓挘@時計算出的緩存因子>0,最后調(diào)整后的平滑播放碼率adjustedSmoothBitrate > smoothBitrate。
(2)碼率自適應(yīng)的整體流程時延與抖動
還要考慮一個場景,那就是網(wǎng)絡(luò)下載速度發(fā)生劇烈抖動的情況,當網(wǎng)絡(luò)發(fā)生劇烈抖動時,可能瞬時的下載速率會很高,但這不代表下載速度整體提高了,如果不考慮這種情況就會導致了計算出來的adjustedSmoothBirate偏大,使得碼率上切。但實際情況是由于網(wǎng)絡(luò)發(fā)生了抖動造成了瞬時下載速率過高并不是下載速度真的提升了,碼率上切后很可能會造成緩沖區(qū)欠載,又會發(fā)生碼率下切,如果再發(fā)生抖動,又會上切,這樣來來回回的產(chǎn)生了碼率切換震蕩。因此,在這種場景下就要對網(wǎng)絡(luò)抖動進行判斷,如果發(fā)生了抖動就不能進行碼率上切。判斷的條件是,如果根據(jù)adjustedSmoothBirate選擇的片源碼率selectedBitrate>當前的播放碼率currentPlayBitrate,并且平均下載速度averageDownloadBitrate>當前的播放碼率currentPlayBitrate, 那么就將selectedBitrate作為下一次播放的片源碼率。平均碼率averageDownloadBitrate的計算公式如下所示:
最后,如果選擇的碼率selectedBitrate 不等于當前的播放碼率currentPlayBitrate,那么播放器就要更新currentPlayBitrate,讓其等于selectedBitrate,并選擇更新后的碼率值為currentPlayBitrate的片源進行播放。在主流的流媒體協(xié)議中(HLS,HSS以及DASH),播放器都是通過HTTP下載媒體分片進行流媒體播放的。因此切換不同碼率的片源也就是下載不同碼率的媒體分片。
在實際部署測試過程中,牌照方上游在內(nèi)容注入時下發(fā)多碼率節(jié)目源XX衛(wèi)視,平臺CDN節(jié)點拉流獲取多碼率碼流內(nèi)容及m3u8索引文件,終端用戶模擬多場景條件下網(wǎng)絡(luò)帶寬環(huán)境進行播放體驗,進行終端用戶視頻播放優(yōu)良率指標監(jiān)控。并且實時監(jiān)控平臺用戶訪問日志,關(guān)注系統(tǒng)整體負荷及CDN節(jié)點性能。通過周期性測試結(jié)果分析終端用戶優(yōu)良率指標趨于優(yōu)良,系統(tǒng)整體負荷平穩(wěn)無明顯突增或上下起伏,CDN節(jié)點設(shè)備整體性能平穩(wěn)。以此分析總結(jié),節(jié)目源多碼率用戶視頻能夠幫助提升終端用戶視頻播放優(yōu)良率指標,并且在現(xiàn)有測試條件下未發(fā)現(xiàn)導致系統(tǒng)負載突增情況。對整體終端用戶體驗提升有正向效果。