返回 登录
0

哔哩哔哩殷汶杰:合格的多媒体技术工程师有成为全栈架构师的潜质

英雄会是CSDN旗下针对国内IT技术领域专家展示和交流的平台。通过线下线上的互动形式,为CSDN社区专家提供更多学习、合作、宣传的机会。英雄会后续将在北上广深等国内一二线城市建立分会,各个分会后期将组织技术交流活动。

恰逢11月18日-20日,SDCC2016将在北京举办,届时将在大会现场召开SDCC英雄会,正式成立CSDN英雄会北京分会,所在北京的重量级社区专家将受邀参加此次英雄会,面对面进行技术交流。

为了让大家更好地认识CSDN英雄会的成员,我们特别开设了【CSDN英雄会】采访专栏,讲述他们的技术成长之路。

本期邀请的嘉宾是哔哩哔哩弹幕视频网多媒体技术开发殷汶杰。殷汶杰介绍说,哔哩哔哩一直以来就有贡献开源工程的传统和氛围,除了弹幕引擎之外,还有很多项目都在行业内产生了巨大影响。例如,移动视频播放框架。

图片描述

哔哩哔哩弹幕视频网多媒体技术研发工程师

任何一个合格的多媒体技术工程师,都有成为全栈架构师的潜质

CSDN:请和大家介绍下你和目前所从事的工作。

殷汶杰: Hi,各位好,我是殷汶杰,目前在B站(哔哩哔哩弹幕视频网)从事多媒体技术开发工作,主要职责包括移动平台(iOS/Android)播放器以及主站HTML5播放器等方面的开发、维护和技术预研等工作。曾经在某互联网视频以及某世界500强安防企业从事视频技术研发工作,主要工作和研究兴趣包括视频编解码技术、移动视频技术开发、流媒体技术、应用于多媒体领域的云计算/大数据/模式识别/数据挖掘、视频异构开发等领域。

CSDN:您是如何一步步走上多媒体技术研发之路的?

殷汶杰:之所以选择从事多媒体技术的研发,主要是由在校期间的研究方向决定的。2010年我考入上海大学通信与信息工程学院读硕士研究生,在那几年间以视频编解码算法作为主要研究方向。我所在的实验室主要以自主知识产权的视频编码标准AVS/AVS+/AVS2为主要研究方向,几位导师也都是AVS标准工作组的核心成员。经过几年的研究和学习,我从一个完全不了解多媒体技术开发的学生,逐渐了解的多媒体技术研发的基本概念,得到了最基础的知识储备。

在毕业之后我处于最大化地发挥和利用自己已有的知识基础的目的,先后选择了进入某知名的互联网视频公司和某大型安防外资企业工作。这些经历给予了我很大的帮助。不过相比于多媒体技术研发领域内的知名专家,我依然只能算一名新人,相比于已经学到的东西,新兴技术和未知的领域只会有更多需要继续学习的内容。

CSDN:请问多媒体架构是怎么实现的,用了哪些技术?

殷汶杰:其实无论是多么复杂精密的多媒体系统,其整体架构都离不开这几个结构,以视频信号为例,视频采集→视频预处理→视频编码与封装→数据的存储/传输→视频解封装/解码→视频后处理→视频输出。根据系统的规模和需求不同,每一个模块的复杂度和规模可能有非常巨大的不同。

例如,视频采集,传统的视频采集可能以摄像机、监控探头为主,而近期直播的兴起,使得包括手机还有录屏软件都成了视频采集的重要设备。而且随着新兴业务的发展,还可能有更多目前想不到的视频采集设备产生。

在预处理阶段,不同类型系统所采用的技术可能完全不同。最常用的有像视频的去噪、图像增强等。对于各种直播软件,各种美颜工具也极为重要。

视频的编码和封装可谓是整个系统的心脏,很多时候甚至直接决定了整个系统的性能和使用体验。编码/封装器用于将数据量庞大的图像数据压缩为某种格式的视频码流,压缩的性能直接影响后期进行存储和传输的代价,编码的运算速度又影响了整个系统的输入——输出延迟。因此,这一步骤的工作常常成为整个系统的焦点所在。

视频的存储和传输在多年的发展中产生了巨大的变化。从最初的有线电缆、录像带到后来的无线电视广播、DVD,到再后来的云存储、P2P、CDN技术,发展的核心在于更低地花销代价和更强的实时性。另外,在很多时候,在这一部分还可能进行多种视频处理,如视频转码、数据分析等。

解码和解封装通常与编码端是同步发展,与编码端略有不同的地方在于,解码端在移动端、嵌入式系统上的应用更为广泛。因此,对低复杂度优化、低功耗等方面要求常常会更高。

视频的后处理的最显著的用途之一可谓是视频水印。例如电视台的台标、字幕等附加信息都是视频重要的组成部分。

视频渲染的设备最初以电视、显示器为主。近年来,随着新技术和设备的发展,越来越多的视频观看的设备涌入了我们的生活,例如使用手机、平板电脑等移动设备的机会大有取电视电脑而代之的趋势。在未来可能还会有更多新型设备占领我们的视野,如VR/AR设备、全息显示,甚至一些我们目前还无法想象的东西。

CSDN:多媒体技术,有什么心得和体会可分享?

殷汶杰:多媒体技术所涉及的技术领域相当广泛,而且发展也是相当快。任何一项其他技术或业务的发展都有可能使得多媒体领域三天一小变,五天一大变。因此,从事多媒体技术的开发必须始终保持对新生事物的敏感以及较高的学习能力才能保证不在技术变革中落伍。

CSDN:您对代码有着怎样的情感?对多媒体技术有什么特别的喜好吗?

殷汶杰:对于一名软件开发工程师而言,代码是他用于改变世界,实现理想,让世界变得更加美好的“武器”。同时,代码也是工程师的名片和自己的商标。世界上最优秀的工程师所开发的代码甚至会成为经典,流传给一代代的后辈供其膜拜。

至于多媒体技术,我认为我能进入这一领域进行学习、研究和工作是幸运的。

首先,多媒体领域与多种技术领域都存在着很强的交叉关系,因此,可以与多种技术形成相互促进的“互利共生”的局面,使之永远充满了活力。近年来,火热的VR就是最好的例证之一。

其次,音频、视频永远是所有用户的刚性需求,无论是站在社会最顶端的精英人群还是最基层的普通劳动者,他们的生活都不可能脱离多媒体信息而存在。因此,在整个信息产业的网络中,多媒体技术可谓是拥有最大市场的细分技术领域之一。这就给了无论是新兴技术发展、新兴商业模式还是全新的“技术+生活”结合的生态系统足够的营养、成长空间和资源支持,发展空间不可限量。

再次,多媒体技术由于其技术复杂、数据量庞大,是倒逼整个信息产业基础设置发展的重要力量之一。例如高清、超高清视频的出现,对数据的存储、传输和计算能力提出了更高的要求。这些新兴的需求对高密度存储器件、高速网络传输和异构计算、云计算等技术的发展起了巨大推动作用。

最后,对于从事多媒体技术开发的个人而言,多媒体技术是锻炼自身的技术能力的绝佳“训练场”。如果想要真正掌握多媒体技术,只学习某一门知识绝对远远不够,甚至必须要称为“多专全能”型的人才,从数学基础、网络技术、多端开发(server/client/web)、多种不同的编程语言(如C/C++/asm/Java/Objective-C/JS等)、多种不同系统平台(如Windows/Linux/MacOS/iOS/Android)等。还需要了解多种不同的系统架构等知识。可以说,任何一个合格的多媒体技术工程师,都有成为全栈/架构师的潜质。

弹幕增强了视频趣味性和可交互性

CSDN:哔哩哔哩弹幕视频网,可见在体现弹幕这一新媒体特征,请问弹幕是如何实现的?弹幕的价值体现在哪儿?

殷汶杰:事实上,视频中添加弹幕在现在的视频媒体中已经不是一个特别新鲜的特征,然而能做得像B站这般如此特点鲜明的,整个行业内还是相当稀少的。所谓的视频弹幕,其本质上是与视频信息联系紧密、与时间轴具备强关联的辅助信息的一种。视频弹幕目前主要是以丰富格式的文字信息为主,通过准确标定弹幕出现的时间与视频内容在该时刻的场景相结合,增强了观众在观看视频时的趣味性和可交互性,使得这样一种原本单向接受的行为转化为一种更加互动化的活动。

与传统的视频节目的评论不同,弹幕在发送过程之后,需要对其发送时间进行记录,并在其他观众播放到某个时间点时进行播放。在包含弹幕的视频播放时,显示设备(移动/网站播放器)会在原始视频上新建一个用于显示弹幕的层,并在某个指定的时刻通过相应的文字信息绘制方法(例如OpenGL ES等),将弹幕信息绘制在这一层中。由于这一层原本是透明的,并叠加在原始视频上方。因此,在观看时便会产生某个时刻弹幕信息从视频上方飞过的感觉。如果希望了解更深的细节,可以到Github上研究一下B站开源的弹幕引擎DanmakuFlameMaster:https://github.com/Bilibili/DanmakuFlameMaster
值得一提得是,哔哩哔哩一直以来就有贡献开源工程的传统和氛围,除了弹幕引擎之外,还有很多项目都在行业内产生了巨大影响。例如,移动视频播放框架ijkplayer:https://github.com/Bilibili/ijkplayer, html5视频转码内核flv.js:https://github.com/Bilibili/flv.js,欢迎多媒体技术圈里的朋友多参与我们的这些项目。

CSDN:能解释下H.264/AVC、H.265/HEVC、AVS、AVS+之间的区别吗?在技术的实现上有什么区别?

殷汶杰:实际上目前主流的视频压缩编码标准的思想和设计思路都是一致的,都采用了一种“块结构的混合编码方案”,其核心思想都是利用种种方式尽可能压缩运动图像中的时间、空间、视觉和统计冗余。不同标准的发展主要在于在各个模块中采用了更新、更复杂的新算法来增强其编码的性能,或者对运算复杂度和并行性等方面做了相应的优化。例如,H.264/HEVC相比于H.264/AVC采用了更加灵活的像素块分割方法、更加多样化的帧内/帧间预测模式、对并行计算更加友好等。AVS/AVS+/AVS2的发展过程也是与此类似。

CSDN:经典的开源编码器X264/X265是否真的无法超越?

殷汶杰:单纯从性能来考虑,无论是x264或x265都不可能完美适应所有业务的需求,在一些要求比较特殊的场合(如计算资源匮乏或缺乏相应平台支持)下,x264/x265可能并不是最佳选择,抛开这两者进行自主开发也是比较常见的情况。而在大多数场合下,使用x264/x265可以在满足大部分需求的情况下,最大化地降低开发成本,提升开发效率。因此,真正使得x264和x265相对于其他方案无法超越的原因不在于它们的性能多么强大,而是在满足了较好地性能情况下,使用场合最为广泛,获取支持最方便。

成长永远是需要付出代价的

CSDN:研发上,您是如何学习成长的?

殷汶杰:成长永远是需要付出代价的,就看我们如何对其进行取舍了。几年来,我曾经有过一些成果,也走过不少弯路,经验教训都还算印象深刻。第一,从走出学校开始,应当在一个学生的思维上加入一个工程师的思维,不再把完成任务作为终点,而是将工作看成不断武装自己,完成自身进化的过程,这就需要对自身的特长和发展规划有一个比较明确的认识,并在择业的时候保持一个清晰的头脑;第二,不要随便给自己加入限制。在明确了自己的目标之后,所有的努力都是朝着这一个方向,所有的资源都可以拿来为这一过程铺路。不要随便把自己限制在某个技术领域甚至编程语言里,比如把自己仅仅定位成一个“C++程序员”或“Java程序员”或“测试工程师”,这样只会让自己的核心竞争力慢慢丧失,越来越泯然众人。

CSDN:在你眼中,一个优秀的程序员应该具备哪些技能和修养?

殷汶杰:首先应该是一个健康的体魄,毕竟身体才是玩儿命的本钱)。即使再忙,也不要忘了积极锻炼身体。我自己的日常里,健身、游泳、篮球,每年多次的马拉松已经成为生活中不可分割的一部分。

然后需要保持一种充分的求知欲和好奇心,如同乔布斯乔帮主所说的:”Stay hungry, Stay foolish”。在这种特质的驱动下,我们才能不断地探究技术内在精髓,才能在某项技术上进行足够深度的钻研。

另外,最好有一点轻度的强迫症。这样在遇到某些困难或者“节”的时候,可以想方设法地突破过去,并在这个过程中获得成长,而不是遇到困难就思考怎样绕过或者寻找替代方案。只是这个过程需要把握一个“度”。

CSDN:你认为程序员如何“挤”出时间来提升自己或在技术上提升自己?

殷汶杰:读书和培训都已经传统的方式,只采用这样的方式在现在已经不够。个人感觉其实目前对自身提高最有效率的方式莫过于分享。分享有多种形式,包括在技术研讨会上做报告、写博客和开源项目都是很好的方式。比如CSDN的博客/论坛、微信公众号、微博文章等媒体都是相当有效的渠道。

CSDN:您是从何时知道CSDN的,又怎样在CSDN上开启您的技术之旅的,这些年您对CSDN已不陌生,CSDN对您的大感受是什么?给您带来了怎样的改变?

殷汶杰:最初接触CSDN应该是大学期间,那时自己的角色纯属一个获取者,主要的活动是在CSDN上下载别人上传的代码,而且常常苦于没有积分而下不了相应的的资源。后来逐渐开始在CSDN上写一些博文,主要也是出于对学习过程中一些知识点记录。随着现在整个CSDN社区越来越健全,包括学院、知识库等板块的完善,也给了我们越来越大的活动空间,可以做更多从前想做却没有资源推进的事情。说到建议,我个人希望在各种技术领域方面,各个板块可以更加细分,这样无论是文章还是资源都可以更有针对性。

殷汶杰CSDN博客地址:http://blog.csdn.net/shaqoneal


往期回顾


欢迎加入CSDN英雄会:http://t.cn/RV9mzUX

图片描述

评论