给音视频开发同学的一些建议

2022-05-25 14:43:06 浏览数 (1)

音视频开发之前算是一个相对冷门的方向,近年来稍微好一点了,市场环境打开了,想往这个方向转的人也就比较多了,去年国家整顿了教培行业,影响了在线教育这个音视频领域比较重要的一个应用场景,有些同学又开始犯难了,绝对风向不对,其实我觉得大可不必,因为驱动音视频技术发展的两个重大动力并没有发生变化:一是互动娱乐;二是信息交流。音视频技术会提升大家在游戏中体验——具体看AR和VR的应用(虽然从2015年之后每一年都被称为AR元年,但是游戏的AR化正在慢慢成为现实,至于什么时候成为主流,那要看硬件的发展)。同时我们生活中常见的视频聊天、视频会议、视频直播购物等等也极大地方便和影响着我们的生活。

音视频的岗位逐渐增多,其优于同等岗位的薪资待遇也吸引着更多的人加入,但是有很多人反馈音视频不好入门,学习的东西比较多,门槛比较高,初学者往往抓不住重点,导致事倍功半。最近我面试了一些同学,他们主要的背景有如下几类:

  1. 熟悉FFmpeg,但仅限于命令
  2. 熟悉Android,但是对Camera/MediaCodec/OpenGL一知半解,对JNI开发不熟悉
  3. 熟悉Java,不熟悉C
  4. 擅长业务开发,不擅长分析问题

有些想转音视频的同学或多或少存在上面的问题,你可能知道音视频开发需要掌握哪些技能,但是掌握到何种程度?不知道掌握到能完成什么样的工作的程度?从涉及的领域来分,音视频相关的岗位可以分为:

  1. 音视频生产——VideoEditor
  2. 音视频消费——播放器
  3. 3D渲染——Filament或者其他的渲染引擎
  4. 音视频传输——WebRTC/RTMP/QUIC/UDP
  5. 算法——OpenCV/模型分割/编解码算法优化

它们虽然是音视频的不同领域,但是它们之间的差异也是非常大的,可以算是完全不同的方向了。所以在你确定好音视频这个大方向之后,最好能坚定地确定下来往什么方向走?但是人就是这样,在一个坑里刨,如果长时间刨不到水,就会放弃,然后再刨另外一个坑,最后刨地到处是坑,却没有多少有水的坑。学习我比较支持在一个方向挖得比较深入,就是基本上这个方向上的问题你都能解决或者解决起来不费劲,然后可以以此拓展,向其他方向延伸。不要在职业生涯的早期过分重视广度而忽略深度。

我之前的文章——音视频全链路技能分析之音视频消费侧技能树 比较全面的介绍了播放器相关的知识。我这里想借着Video Editor来谈谈其中用到了哪些音视频技术以及需要的具体技能。

VideoEditor就是音视频编辑器,字节有剪映,快手有快剪,微信有秒剪,主流的视频平台都会有自己的音视频编辑器,做一个音视频编辑器可不是一件容易的事情,需要一个不小的团队,如果涉及到多个平台,需要的人更多,大家费钱去养活这么大的团队,是希望一个好的Video Editor能够生产出用户希望的视频,然后扩充自家的视频内容,进而提升视频平台的活跃度,这是一个产品的闭环思维:

一个视频内容平台让用户喜爱的原因只能是:用户喜欢它的内容或者说内容。当然想腾讯视频、优酷、爱奇艺这种PCG的平台它们无须按照上面的逻辑,因为它们作为平台本身就是上传视频的”用户“,内容的精良则必须要自己花钱买,它们的商业逻辑又是另外一回事情了。

为了吸引用户,主流的VideoEditor推出了很多视频模板,视频模板大大降低了普通用户生产视频的难度,用户只需要上传几段视频或者图片,就能生产出一个非常优美的视频,这对视频UGC而且是一个很大的突破,真正将一个小众的视频剪辑推广到了大众化的水平。

VideoEditor中很多其他的功能基本上都能由上面的子功能组合而成,例如一个视频模板,就是解析多个特效组成的,或者解析一个特效视频,本质上就是原视频 特效视频=合成视频。简单地看来,VideoEditor确实没什么难的,但是要打磨出一款优秀的VideoEditor软件,并不是一件非常容易的事情,想通过几篇八股文来应付音视频的面试不是容易的事情。建议大家还是深入挖掘背后的技术原理。

这儿我给大家提几个问题:

上面的几个问题都是VideoEditor软件中遇到的比较棘手的问题,你如果自信能掌握得比较好,那恭喜你,你可以算得上一个不错的VideoEditor工程师了,当然接下来的挑战也是大大的。你对OpenGL熟悉吗?可以做出一些不错的图片效果吗?OpenGL在处理图片纹理的时候如何优化性能。

本文只是一个引子,大家可以一起讨论和交流,后面我会不定期地更新相关的文章来描述如何做一个高质量的VideoEditor。完成一件事情不难,但是做好一件事情不容易,且行且珍惜。

0 人点赞