移动视频源m3u8多码率节目源终端自动适配技术
2022-03-17赖材栋谢崇斌张小强
赖材栋,谢崇斌,张小强
(中国移动通信集团陕西有限公司,陕西西安,710077)
0 引言
随着家庭宽带业务的高速发展,陕西移动OTT互联网电视用户规模已达430万,成为传播红色能量、弘扬主旋律的一支重要力量。IPTV随着规模和影响力的提升,已经成为主流的宣传渠道。如何更好的提升OTT互联网电视整体用户体验,推动OTT视频业务大力发展,成为互联网电视从业人员的重大课题。
IPTV视频通过内容注入多码率节目源适配,提升全网终端用户体验良好,使得优质高带宽家庭组网用户体验VR、4K、极清、高清节目,不断提升用户满意度;普通带宽终端用户更好体验4K、极清、高清节目,提升用户满意度;低带宽终端用户流畅体验高清、标清节目,保证用户体验满意度。
1 应用场景
OTT业务使用http的方式进行分发,其中playlist标准为由m3u扩展而来的m3u8文件,媒体文件为MPEG2-TS或者AAC文件(audio only)。m3u8是HTTP Live Streaming直播的索引文件,m3u8分顶级m3u8和二级m3u8,顶级m3u8主要是做多码率适配的, 二级m3u8才是真正的切片文件,客户端默认会首先选择码率最高的请求,如果发现码率达不到,会请求降低码率的流。
(1)单码率适配:每个m3u8索引文件中包含单个视频源格式文件。
(2)多码率适配:每个m3u8索引文件中包含多个码率及对应视频格式的文件。
2 视频多码率适配实现技术
2.1 视频码率基本概念
视频码率就是数据传输时单位时间传送的数据位数,一般我们用的单位是kbps即千位每秒。视频码率就是取样率,单位时间内取样率越大,精度就越高,处理出来的文件就越接近原始文件,但是文件体积与取样率是成正比的,所以几乎所有的编码格式重视的都是如何用最低的码率达到最少的失真。对于一个音频,其码率越高,被压缩的比例越小,音质损失越小,与音源的音质越接近。
为了更好理解码率,几点原则如下:
(1)码率和质量成正比,但是文件体积和码率也成正比。
(2)码率超过一定数值之后,会对图像的质量没有多大影响。
(3)理论上来讲,如果1M的带宽,在网上只能看不超过1024kbps的视频,如果超过1024kbps的视频只能等待视频缓冲才能顺利观看。
2.2 视频多码率实现原理
播放器进行码率自适应播放的前提是流媒体服务器提供多码率的片源。播放器根据片源信息会生成一张码率列表。
(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下载媒体分片进行流媒体播放的。因此切换不同码率的片源也就是下载不同码率的媒体分片。
3 应用场景
在实际部署测试过程中,牌照方上游在内容注入时下发多码率节目源XX卫视,平台CDN节点拉流获取多码率码流内容及m3u8索引文件,终端用户模拟多场景条件下网络带宽环境进行播放体验,进行终端用户视频播放优良率指标监控。并且实时监控平台用户访问日志,关注系统整体负荷及CDN节点性能。通过周期性测试结果分析终端用户优良率指标趋于优良,系统整体负荷平稳无明显突增或上下起伏,CDN节点设备整体性能平稳。以此分析总结,节目源多码率用户视频能够帮助提升终端用户视频播放优良率指标,并且在现有测试条件下未发现导致系统负载突增情况。对整体终端用户体验提升有正向效果。