作者:eric

  在有相同内容的视频网站选择一个驻足观看,同学们的理由是什么呢?抛开小清新的页面风格,夸张噱头的文字介绍和截图,贴心准确的个性化推荐化等个人喜好因素不说,对广大骚年来说相信最朴素最直接的两个指标还是流畅度和清晰度了,而这也是诸多视频网站最基本也是核心的竞争力。

 

  流畅度方面,腾讯视频和架平的同事合作,通过布局CDN建设和完善调度,优化编码码率控制和封装,播放器端的自适应调度加载,在多轮的调优后,根据第三方基调数据,在2012年底腾讯视频的流畅度体验得分已超过竞品达到第一。在这里不作更详细的介绍。

 

     本文重点介绍腾讯视频的清晰度优化。近年来各家视频企业对清晰度的竞争已经达到了白热化的程度,几家客户端公司先后购买了外部的视频优化算法,一家知名视频网站从芯片公司整体打包了团队做低码率的高清视频,PPS、迅雷上线下一代HEVC编码,优酷和爱奇艺研究基于人眼感兴趣区域的编码。在舆论和入口的争夺上,各家更是剑走偏锋,奇招迭出。暴风的金左眼病毒营销;爱奇艺在业内率先推出超清视频并主打全站高清概念,此外还启用了“最高清的视频”等通用网址;一直“土土看不清楚”的行业某大佬,最近雇佣五毛水军搞了个小黑屋50人视频质量大测评,造势意图改变人们的固有心理印象。当中个中精彩,不一而足。可以看出,各家对于清晰度的口碑是非常重视的。腾讯视频以清晰度起家,几年来持续优化,清晰度始终位列前三,但面对业内激烈的竞争,我们深感:除了对质量较差的片源需要纠正提供给用户一致的观看体验,视频整体的主观质量也需要有大幅的提升,将品质真正做到第一。为此,今年上半年我们启动了清晰度提升和码率优化计划,也即美仑计划。

 

  我们的总体设想是,通过在视频编码时进行柔化降噪,对比度饱和度自适应增强,智能锐化,以及对264编码优化等的处理,在降低码率的同时,保持甚至达到更高的视频主观质量

 

  但在设计技术方案的时候,有几个必要先决条件是不能忽略的

 

  (1)我们对视频增强是在编码时进行,这与暴风左眼等解码时增强的技术有较大的差异,解码时增强其程度是可以视个人喜好调节甚至关闭的,因此增强不太过的话影响不大;而编码增强一经改变就确定不可逆了,因此讨好人眼时需要恰到好处,过犹不及,否则长时间观看容易造成疲劳刺眼等情况。

 

  (2)相比拍摄的图片,视频单帧的质量差的较多,不可避免存在运动模糊,块效应的情况,因此对于边缘区域和平缓区域,具体到角点、孤立点,细节和文字,需要区别增强,避免锐化增强带来的毛刺等瑕疵

 

  (3)算法的性能速度需满足运营上线的要求,视频行业同质化严重,比竞品早一分钟完成编码上线,都能带来更好的口碑效应和影响力传播,形成竞争优势。因此算法除了效果好性能也要追求极致的快, 

 

  下面介绍我们的优化过程。

 

  1人眼判断视频质量优劣很大程度取决于对视频的亮度和对比度的整体第一印象,因此基于视频分析,我们首先开发了全局自适应的对比度增强算法, 对视频主体边缘进行灰度和颜色拉伸强化人眼兴趣感知区域,而对非边缘等区域进行灰度合并来有效节省亮度空间码率和分配给UV空间更多码率,提升uv编码质量,使颜色更艳丽

 

  此外,然后我们纠正了视频编码中不正确的颜色空间转换和gamma显示问题(主要存在于mpg格式)。
 

  进行上述优化后的效果比较,左为优化前,右为优化后:
 

 

2 为了进一步提高编码的效率,在编码上我们引入了分层B帧的架构。


  分层B (也称为金字塔B), 是应用了H.264中「可参考B帧」和「弹性编码顺序」来实现分层编码。B帧主要利用前面与后面参考帧的关系进行预测编码最理想的情况是前一帧和后一帧都是高质量而且是能参考的例如在三个B帧的情况下会先编第2B然后以第2B帧做参考编第1和第3这种情况下就会有两帧符合前一帧和后一帧都能参考的情况。

 

  图一: 利用分层B帧的情况箭头表示参考关系如中间的P要参考前面的I B 表示可参考的B, b表示不可参考的B帧。

 

  没有分层B帧的情况下, B帧需要参考较远的帧来做编码由于关联性较低编码效果不太好。

 

 

  图二没有分层B帧的情况1与第3B帧效果较差。

 

  3 由于人眼对图像的边缘和纹理很敏感,而梯度能较好地反映出图像中微小的细节反差和纹理特征变化的这些特性,为此我们开发了基于梯度的边缘算子的视频降噪和增强算法,首先用基于梯度的边缘算子提取锐度模板,然后根据提取的锐度强度,对平缓区域和边缘区域进行幅值不等的降噪或增强,在开发过程中,根据实际效果和性能的要求先后舍弃了双边滤波等经典的算法。

 

  下面我们来看下经过美仑计划优化后的视频效果

 

  先来对比下自身优化前后的视频质量,


  左为优化前,体验链接http://v.qq.com/page/z/s/i/z0012wxtjsi.html


 

  后为优化后,体验链接http://v.qq.com/page/c/l/o/c0012m85elo.html


 

  优化后码率降低超过15%

 

 

  可看出优化后的视频质量更胜一筹,数据也支撑这一结论,计算无参考主观质量得分(自研的视频质量评价得分)优化后的比原来高了3分左右

 

  然后我们选择目前业内做的最好的两家爱奇艺、搜狐对比我们优化后的清晰度效果   

 

    
  搜狐走的是低码率省带宽的路线,在业内码率最低而效果较好,我们测试同样码率和分辨率下的效果对比,


 

  左为搜狐视频,体验链接http://tv.sohu.com/20130704/n380744170.shtml


 

  右为腾讯视频,体验链接http://v.qq.com/page/c/l/o/c0012m85elo.html

 

 

  爱奇艺走的是高码率高清的路子,在业内码率最高自称最高清,我们测试同样码率和分辨率下的效果对比:

 

  左边为爱奇艺,体验链接http://www.iqiyi.com/dianshiju/20130704/e1f5938d0486989b.html

 

  右边为腾讯视频,体验链接http://v.qq.com/page/c/3/j/c0012b0lr3j.html

 

 

  可以看到,在同等分辨率下和同样质量下,主观效果好于爱奇艺和sohu,在播放器全屏时优势会更加明显。

 

  除了主观体验,无参考质量得分数据同样支撑了这一事实,相同分辨率和码率下,我们优化后的视频无参考得分比sohu2.5分,比爱奇艺高3分以上。

 

  接下来需要考虑性能优化和运营实用化的问题,腾讯视频经过前期的专用服务器选型和开发分片软编码技术,编码上线速度目前业内最快,因此引入新的算法仍然要保证运营的效率。

 

  在算法原型机完成时,性能一度很差,每秒编码速度不到5帧,我们定位发现

 

1)在求取单个像素的梯度特征值时,需要对临近滤波核的像素进行中值滤波,基于比较排序的算法计算量相当大,即使是快速算法也复杂度甚高,因此在研究后,我们先转化成为基于直方图统计的中值滤波,规避掉比较操作,再通过核直方图的更新来减少,如下图,速度大幅提升到接近20

 

 

2)采用SIMD汇编和内存读写优化,一次读入更多的数据,并行SIMD计算,完毕后将多点的计算结果一次性写回内存,减少读写依赖;进行循环展开,虽然增加了代码复杂程度,但SIMD指令的效率更高,有利于多指令发射和乱序执行。经过SIMD和内存优化,单模块性能提升了4倍以上,编码速度上升到40帧以上

 

  经过优化后,编码时间仅比未进行增强算法前降低25%,满足了运营上线的速度要求,降低码率的编码新版本7月已在MV频道上线,并将很快全量推广

 

  视频质量优化无止境,Be The Best我们一直在努力,欢迎大家一起探讨!