前言
众所周知,自适应码流,是一种将视频内容制作成多种分辨率版本,最终播放器根据当前的网络情况自动选择版本播放的技术。在腾讯视频、优酷、爱奇艺等视频媒体平台,腾讯课堂、企鹅辅导等在线教育网站中极为常见。近期有客户反馈,使用chrome和safari浏览器播放自适应码流的文件时,发现两者播放的清晰度不一致。是chrome的问题,还是safari对自适应码流转码后文件的码率选择有特殊要求?下面我们来复现下问题并分析下如何解决。主要使用以下腾讯云服务:
• 云点播VOD
问题定位
客户反馈使用云点播自带的系统预置模版,部分自适应转码后的视频在safari播放时,无法切换到高分辨率,一直是最低分辨率。是客户的网络状况不好导致的吗?客户分别使用chrome和safari浏览器同时播放示例视频地址,如下:
可以看到safari浏览器播放的清晰度稍差,是什么原因呢?
原来,safari和chrome的清晰度不一致是不同的浏览器对自适应码率视频的播放逻辑有差异,chrome在网络允许的情况下会直接播放高清的分辨率,而safari不管网络情况如何都会一开始加载低分辨率,后面才会根据带宽逐渐加载高分辨率,下图是chrome和safari的加载截图:
原因找到了,客户开心地继续测试。不一会客户又找过来,反馈使用客户的自有视频进行测试,发现在safari 播放5分钟内都没有切换清晰度。难道是safari还有什么隐藏的限制?
带着疑问我们使用客户提供的点播文件地址进行检查,发现客户自适应码流转码后的m3u8文件,高分辨率的峰值带宽比低分辨率的峰值带宽要低:
正常的m3u8文件,可以看到高分辨率的峰值带宽和平均带宽都是要比低分辨率的高:
而safari是根据峰值带宽来自动切换分辨率的,无法自动切换是因为高分辨率的峰值带宽比低分辨率的还低,导致无法自动切换。原因终于定位到了,是safari自动切换码率的标准跟chrome不一样,而客户测试的文件刚好命中这个问题。
解决方案:
客户的原视频分辨率太低,转出到高码率时分辨率可能会出现兼容性问题,可以更换高码率文件进行自适应码流转码。如果继续想使用低码率文件,系统预置的自适应转码模版的提供分辨率规格无法满足的话,可以自定义自适应码流模版。控制台【视频处理设置】-模板设置页面,“转自适应码流模板”页签下创建模板:
添加子流的视频和音频配置参数可以参考https://cloud.tencent.com/document/product/266/33818#.E8.87.AA.E9.80.82.E5.BA.94.E7.A0.81.E6.B5.81.E6.A8.A1.E6.9D.BF:
小结
safari和chrome播放自适应码流处理的视频,分辨率规格的选择有差异,chrome在网络允许的情况下会直接播放高清的分辨率,而safari不论网络如何都会从低分辨率开始播放,后续才会根据当前带宽的值播放高分辨率规格。除此之外,safari会根据峰值带宽来自动切换分辨率。我们要使用合适的自适应码流模版,转出匹配视频文件的分辨率规格,这样播放的时候浏览器就可以正常显示啦。