賴材棟,謝崇斌,張小強
(中國移動通信集團陜西有限公司,陜西西安,710077)
隨著家庭寬帶業務的高速發展,陜西移動OTT互聯網電視用戶規模已達430萬,成為傳播紅色能量、弘揚主旋律的一支重要力量。IPTV隨著規模和影響力的提升,已經成為主流的宣傳渠道。如何更好的提升OTT互聯網電視整體用戶體驗,推動OTT視頻業務大力發展,成為互聯網電視從業人員的重大課題。
IPTV視頻通過內容注入多碼率節目源適配,提升全網終端用戶體驗良好,使得優質高帶寬家庭組網用戶體驗VR、4K、極清、高清節目,不斷提升用戶滿意度;普通帶寬終端用戶更好體驗4K、極清、高清節目,提升用戶滿意度;低帶寬終端用戶流暢體驗高清、標清節目,保證用戶體驗滿意度。
OTT業務使用http的方式進行分發,其中playlist標準為由m3u擴展而來的m3u8文件,媒體文件為MPEG2-TS或者AAC文件(audio only)。m3u8是HTTP Live Streaming直播的索引文件,m3u8分頂級m3u8和二級m3u8,頂級m3u8主要是做多碼率適配的, 二級m3u8才是真正的切片文件,客戶端默認會首先選擇碼率最高的請求,如果發現碼率達不到,會請求降低碼率的流。
(1)單碼率適配:每個m3u8索引文件中包含單個視頻源格式文件。
(2)多碼率適配:每個m3u8索引文件中包含多個碼率及對應視頻格式的文件。
視頻碼率就是數據傳輸時單位時間傳送的數據位數,一般我們用的單位是kbps即千位每秒。視頻碼率就是取樣率,單位時間內取樣率越大,精度就越高,處理出來的文件就越接近原始文件,但是文件體積與取樣率是成正比的,所以幾乎所有的編碼格式重視的都是如何用最低的碼率達到最少的失真。對于一個音頻,其碼率越高,被壓縮的比例越小,音質損失越小,與音源的音質越接近。
為了更好理解碼率,幾點原則如下:
(1)碼率和質量成正比,但是文件體積和碼率也成正比。
(2)碼率超過一定數值之后,會對圖像的質量沒有多大影響。
(3)理論上來講,如果1M的帶寬,在網上只能看不超過1024kbps的視頻,如果超過1024kbps的視頻只能等待視頻緩沖才能順利觀看。
播放器進行碼率自適應播放的前提是流媒體服務器提供多碼率的片源。播放器根據片源信息會生成一張碼率列表。
(1)碼率碼率自適應的整體流程三步
首先,播放器會定時的計算當前理想的播放碼率值,該值被稱為smoothBitrate,它是根據當前播放器的狀態參數計算出來的一個理想值。即播放器如果能播放碼率正好等于smoothBitrate的片源,那么理論上播放的流暢性和清晰度能達到最優。如果播放碼率 > smoothBitrate,播放的清晰度可能會提高,但是可能會發生緩沖區欠載導致頻繁發生視頻卡頓;另一方面如果播放碼率 < smoothBirate,播放的流暢度可能會提高,但是因為碼率降低了,可能視頻質量會降低。smoothBirate的變化曲線應該是平滑的,不會在短時間內發生巨變,因此計算smoothBitrate的公式會有個平滑因子,公式如下所示。

其中lastSmoothBitrate是上一次計算的平滑碼率值,currentDownloadBitrate是當前下載速率,平滑因子的默認值是0.3。 smoothBitrate的值由前次歷史平滑碼率值和當前下載速率兩個值組合計算而成。最后smoothBitrate還需要根據當前的緩存狀況進行調整,公式如下所示。

其中,最低緩存數據時長的含義是:假如該值是5s,那么說明播放器至少需要緩存5s的數據才能開始播放。因此當緩存數據的時長小于最低緩存數據時長,即表示播放器的緩沖區緩沖的數據不夠,說明當前的播放碼率高了,下載速度跟不上播放的速度,這時計算出的緩存因子< 0,最后調整后的平滑播放碼率adjustedSmoothBirate < smoothBitrate;反之,當緩存數據的時長大于最低緩存數據時長,即表示播放器的緩沖區數據比較充足,可以適當的提升播放帶寬,這時計算出的緩存因子>0,最后調整后的平滑播放碼率adjustedSmoothBitrate > smoothBitrate。
(2)碼率自適應的整體流程時延與抖動
還要考慮一個場景,那就是網絡下載速度發生劇烈抖動的情況,當網絡發生劇烈抖動時,可能瞬時的下載速率會很高,但這不代表下載速度整體提高了,如果不考慮這種情況就會導致了計算出來的adjustedSmoothBirate偏大,使得碼率上切。但實際情況是由于網絡發生了抖動造成了瞬時下載速率過高并不是下載速度真的提升了,碼率上切后很可能會造成緩沖區欠載,又會發生碼率下切,如果再發生抖動,又會上切,這樣來來回回的產生了碼率切換震蕩。因此,在這種場景下就要對網絡抖動進行判斷,如果發生了抖動就不能進行碼率上切。判斷的條件是,如果根據adjustedSmoothBirate選擇的片源碼率selectedBitrate>當前的播放碼率currentPlayBitrate,并且平均下載速度averageDownloadBitrate>當前的播放碼率currentPlayBitrate, 那么就將selectedBitrate作為下一次播放的片源碼率。平均碼率averageDownloadBitrate的計算公式如下所示:

最后,如果選擇的碼率selectedBitrate 不等于當前的播放碼率currentPlayBitrate,那么播放器就要更新currentPlayBitrate,讓其等于selectedBitrate,并選擇更新后的碼率值為currentPlayBitrate的片源進行播放。在主流的流媒體協議中(HLS,HSS以及DASH),播放器都是通過HTTP下載媒體分片進行流媒體播放的。因此切換不同碼率的片源也就是下載不同碼率的媒體分片。
在實際部署測試過程中,牌照方上游在內容注入時下發多碼率節目源XX衛視,平臺CDN節點拉流獲取多碼率碼流內容及m3u8索引文件,終端用戶模擬多場景條件下網絡帶寬環境進行播放體驗,進行終端用戶視頻播放優良率指標監控。并且實時監控平臺用戶訪問日志,關注系統整體負荷及CDN節點性能。通過周期性測試結果分析終端用戶優良率指標趨于優良,系統整體負荷平穩無明顯突增或上下起伏,CDN節點設備整體性能平穩。以此分析總結,節目源多碼率用戶視頻能夠幫助提升終端用戶視頻播放優良率指標,并且在現有測試條件下未發現導致系統負載突增情況。對整體終端用戶體驗提升有正向效果。