腾讯多媒体内核中心高级研究员时永方接受了LiveVideoStack的邮件采访,谈及了个人成长中的关键时刻,学习多媒体开发的三点核心,以及在5G和高清时代下,微信多媒体团队面临的挑战。

策划 / LiveVideoStack


LiveVideoStack:时永方你好,能否简要介绍下自己,包括目前的主要工作及关注领域?

时永方:我是来自腾讯微信多媒体内核中心的时永方,本科毕业于南京大学,研究生毕业于香港科技大学MTREC实验室,研究生毕业之后加入微信,从事微信视频通话的相关技术研发,目前的工作主要在提升微信视频通话的QoS/QoE(Quality of Experience),包括清晰度、流畅度提升,流量控制,抗丢包策略,多编码器协同编码等,近期也有关注运用深度学习方法进行在视频、图片主观质量的提升。

LiveVideoStack:是哪些原因或机缘巧合让你选择腾讯,并专注在多媒体技术?


时永方:我进腾讯应该说是一个巧合,当时我在香港科大还有一年MPhil毕业,还在准备ICME会议的paper,没有全力找工作。我的一个博士师兄去微信面试了,当时是小龙给他面试的,小龙给他展示了刚推出不久的微信音视频通话功能(2012年微信4.2版本)。我通过师兄得知微信在招视频编解码相关的人才,在体验过微信清爽的视频聊天之后有些心动。师兄拿到了offer,但最终因为个人原因去了美国高通,我“捡漏”通过师兄投递了简历,很幸运通过了面试来到了微信事业群的前身广州研发部。

LiveVideoStack:多媒体技术涉及许多基础科学,需要足够的耐心潜心研究,初学者入门不易。您对此有哪些体会或经验分享?


时永方:多媒体技术确实涉及很多基础学科,如高等数学,数字信号处理,通信原理,信息论等。通过我本人的学习经历,有三点建议:

第一,初学者需要掌握数字信号处理及信息论等基本知识,这些知识是我们进入这个行业的敲门砖;

第二,需要了解技术的演进过程以及解决的“痛点”。具体到视频编解码上,我建议初学者需要了解视频编码标准的演进过程,从早期的H .261/263,MPEG1/2/4,到现在的H.264/H.265/H.266,熟悉每一项标准的差异点,以及在技术进步过程中想解决的问题,这样不仅知其然还能知其所以然;

第三,最后一点,知行合一!通过对各标准的测试模型或开源软件的代码阅读,加深对技术细节的理解,通过部分模块的优化,提高自身的实践能力。如果能做到这三点,恭喜你就已经是内行人了。

LiveVideoStack:能否推荐一些学习多媒体开发的书籍或资料?


时永方:基础知识方面推荐岗萨雷斯的《数字信号处理》,东南大学的《信息论与编码》,编码基础方面推荐Wiley的《THE H.264 ADVANCED VIDEO COMPRESSION STANDARD》或国内毕厚杰老师的《新一代视频压缩编码标准H.264》,最新的标准可以看相关的标准文档。

LiveVideoStack:过去这五年是微信经历了快速发展,能否介绍下你所做的对微信音视频的优化与改进?

时永方:过去五年,微信取得了高速发展,成为一款“国民APP”,我所在的微信多媒体中心的音视频通话业务也取得了极大的发展。我的优化工作主要在微信视频通话的QoE提升上,主要分以下几个方面:

1. “三高”(高帧率、高分辨率、高质量)优化

高帧率、高分辨率优化简单来说就是提高视频通话的帧率和分辨率。为了解决各终端性能的“长尾”效应,我们对各终端的性能进行统一评估,根据不同的能力来决定其最高编码帧率和分辨率。另外,针对软编码的性能瓶颈(速度、发热),我们对高分辨率视频的编码采用硬件加速,以此提高视频通话的高清体验。为了提高视频的主观质量,我们还做了编码器的压缩效率和视觉质量优化,减轻低码率时的块效应。

2.流量控制优化

为了能尽可能准确描述信道的状态,除了一般流控系统里用到的丢包和延时参数外,我们还估计端到端的可用带宽,根据这些信息来综合调节,减少超带宽的概率。

3. 弱网优化

在流畅度保证方面,除了传统的加FEC冗余数据包保护外,我们还进行了多方面的优化: 我们改进了编码器的参考帧结构,降低某帧丢失导致的误差传播概率,我们还优化了FEC冗余数据包保护策略,将冗余数据包优先分配给重要的帧;对于高丢包但RTT较低的网络,我们会提前判断是否需要I帧请求,降低卡顿时长。

LiveVideoStack:随着手机更新换代,硬件性能不断提升,对于微信音视频的QoS/QoE是不是更容易保障了?在网络条件不断改进,终端硬件性能提升的情况下,对底层技术的研发是不是不再重要呢?

时永方:硬件性能的提升,确实有助于我们提高微信视频的QoS/QoE,只有硬件性能足够,我们才有可能进行更复杂、更高效率的视频编码,提升分辨率,用复杂度trade-off一些压缩效率上的提升。但其实,从整个系统来看,硬件终端只是整个VOIP端到端系统里起点和终点,我们面临最大的不确定性在网络途中。我们的IP网络是一个best-effort的数据网络,是一个大黑盒,突发丢包、随机丢包、抖动这些未知因素会极大地影响我们的视频通话体验,QoS/QoE保障仍然是一个艰巨的任务。

底层技术研发的重要性是不言而喻的,我们对技术的极致追求也是持续的。我们都知道,网络再好也有“抽风”的时候,手机再强但仍有用户使用较差的手机。对微信团队而言,我们有强烈的用户导向,我们重视每一个用户的反馈,重视每一个异常的场景。如果说现在的微信视频通话已经解决了80%场景下的QoS/QoE问题,剩下的20%仍需要我们不断地一点点打磨、优化。

LiveVideoStack:接下来微信多媒体服务的挑战还有哪些?改进和研发重点方向是什么?


时永方:随着业务的扩大,我们的带宽成本在不断地提升,为了控制成本,同时又能保证用户的视频质量体验,我们还要不断地提升我们编码器的编码效率,优化视频的主观质量;随着腾讯“连接一切”战略的深入,可以预见,以后将会有各式各样的设备接入微信的多媒体服务,如何给众多异构设备提供高标准的服务,无论对我们的WAVE引擎(Wechat Audio & Video Engine)还是后台,都有相当的挑战。为此,我们不仅要提高WAVE引擎的通用性,还要提升后台的处理能力和稳定性。

LiveVideoStack:能否介绍下在微信上的软/硬件协同编码,以及多Codec协同的业务场景和实践?

时永方:上面也提到了,我们在视频通话上根据不同分辨率、不同的网络特点、设备性能选择合适的软/硬件编码器协同工作。简要来说,在网络较差、分辨率较低时,我们采用自研软件编码器,具有更强的传输适应性,在较差网络中降低卡顿;在网络较好、硬件编码性能良好的设备上进行高分辨率视频编码时,我们采用硬件编码器编码,可以降低高清视频编码的延时以及减少手机的发热。

LiveVideoStack:在5G、4K时代到来之后,对多媒体技术带来哪些挑战?对于开发而言,有哪些机遇?


时永方:5G、4K高清时代的到来会对我们带来很多挑战。

首先,最直观的是,视频类业务量的激增和用户对视频质量的要求不断提高,对我们而言意味着视频带宽成本更大,因此,我们需要提高压缩效率;

第二,对于移动设备而言,运算更加复杂更加耗时,因此我们要优化编解码器,提高编解码速度;

第三,可以预见,路越修越宽,车越开越多,网络拥塞状态并不一定会随着5G的使用而彻底好转,不确定性仍然很多,我们的流控响应的动态范围还要继续扩大以适应新的网络特性。

新的时代孕育新的机会,我们期待在5G、4K到来时展现我们的硬实力,包括编解码器压缩效率、速度,智能流控等。

LiveVideoStack:在今年的CVPR大会上,看到中国来自国内的AI相关的企业。参与此次CVPR,你是听众身份参会吗,还是有其他任务?参与大会观察到哪些现象,有何体会?


时永方:我主要是去学习最新的学术成果,了解最新的工业界关注方向。这次参会,我看到自动驾驶、AI医疗很火热,很多国内国外的大公司都有相应的人工智能实验室,在顶会上吸引顶尖的学生、研究人员。我印象最深的是,AI教主——NVIDIA CEO黄仁勋亲自赶到会场,和众多使用NVIDIA芯片研究自动驾驶、AI医疗解决方案的小创企业交流,了解他们的实际需求以及业务发展状况。另外,大会的一个tutorial中提到,一个PhD学生用深度学习只花了1周时间就可以媲美资深天体物理学家几十年搜索到的宇宙暗物质。(https://obamawhitehouse.archives.gov/blog/2011/06/27/competition-shines-light-dark-matter)对我们多媒体技术而言,如果能借助人工智能提升我们在QoE提升方面的一些主观的、人为的决策也是极好的。

时永方:做到这三点,你就是多媒体内行了相关推荐

  1. JVM 在遇到OOM(OutOfMemoryError)时生成Dump文件的三种方式

    JVM 在遇到OOM(OutOfMemoryError)时生成Dump文件的三种方式,以及如何使用Eclips Memory Analyzer(MAT)插件进行堆内存分析. 方法一: jmap -du ...

  2. java oom dump_JVM 在遇到OOM(OutOfMemoryError)时生成Dump文件的三种方式

    JVM 在遇到OOM(OutOfMemoryError)时生成Dump文件的三种方式,以及如何使用Eclips Memory Analyzer(MAT)插件进行堆内存分析. 方法一: jmap -du ...

  3. 在学习一门编程语言时要特别注意以下三个方面

    2019独角兽企业重金招聘Python工程师标准>>> 在学习一门编程语言时要特别注意以下三个方面: 这门语言提供了哪些Primitive,比如基本类型,比如基本运算符.表达式和语句 ...

  4. 改变客户端访问时的方法名

    •客户端无法重载方法(overload) –可以通过判断arguments数量来模拟重载 •如果服务器端出现了方法重载? –使用WebServiceAttribute指定客户端方法名 –使用和真正的W ...

  5. c语言错误1004,excel宏运行时提示错误1004的三种解决方法

    在使用excel宏功能的时候,一些网友会遇到excel宏运行不了,软件提示:"运行时错误1004,应用程序定义或对象定义错误"的问题,那么,excel宏运行时错误1004怎么办?幸 ...

  6. 手机视频怎么裁剪时长?教你三招快速搞定

    大家知道手机视频怎么裁剪时长吗?现如今,新媒体行业发达,因为很多地方都需要用到视频文件,所以对视频处理的相关操作是免不了的.那么当你因为视频时长过长,导致视频无法发布的时候,你是怎么做的呢?其实很简单 ...

  7. 产品促销时,务必记住这三句话

    作者:付永承 全文共 3841 字 4 图,阅读需要 8 分钟 ---- / BEGIN / ---- "产品销量上不来?促销!" "用户好像没兴趣?促销!" ...

  8. 永坤电机SEO三天两夜课程学习总结

    通过这次的学习.我在以前的基础上进一步巩固了互联网上的很多知识并运用到我们产品上.例如我们公司的产品:电机,通过互联网这一渠道来推广.目的是为了提高网站收录,提高网站权重,提高精准流量. 对于如何是着 ...

  9. 软件工程(方法学、三要素)

    软件 1983年IEEE这么定义:软件是计算机程序.方法.规则.相关的文档资料和在计算机上运行程序所必需的数据. 软件工程 1983年IEEE这么定义:软件工程是软件开发.运行.维护和修复软件的系统方 ...

最新文章

  1. 百万数据修改索引,百万数据修改主键
  2. SSE-CMM5个级别划分概述
  3. STP HSRP和NAT结合实现网络出口的冗余和次优路径分析
  4. ASP.NET设置ie打印两法 (精)(转)
  5. killall 后面信号_五个你可能不了解的killall选项
  6. mysql的外键_mysql如何查看外键
  7. Java新手造假_老板居然让我在Java项目中“造假”
  8. Python使用BoundedSemaphore对象进行线程同步
  9. [Java][Android][Process] Process 创建+控制+分析 经验浅谈
  10. 对个人来说,最好的记账方法是什么?
  11. Python-经验模态分解(EMD)分解及测试用例
  12. node.js 下载速度慢问题
  13. python怎么把照片转成卡通_如何把照片变成手绘动漫化?
  14. 用Python删除含有特定字符串的行
  15. AES算法中S盒的FPGA实现
  16. 如何理解光圈、ISO、快门、曝光这几个概念?
  17. c语言股价连续上涨的天数,为什么通达信没有连涨天数,我的通达信怎么没有连涨天数显示...
  18. html焦点图自动轮播,JS实现焦点图轮播效果的方法详解
  19. (AAAI-2019)用于行人重识别的水平金字塔匹配
  20. 基于 51 单片机室内灯光控制系统

热门文章

  1. 智能、弹性、易用:云时代的负载均衡之道
  2. 一张图读懂阿里巴巴一站式研发协同云——云效
  3. Python format() 函数
  4. 编程语言分类及python所属类型
  5. arcgis api for js共享干货系列之一自写算法实现地图量算工具
  6. MQTT协议笔记之mqtt.io项目TCP协议支持
  7. linux为启动菜单加密码
  8. 如何使用subversion管理iOS源代码
  9. James Shore:敏捷的衰落
  10. cocos ScrollView(滚动容器)加载大量item导致的卡顿问题解决方案