你好,我是李江。

我们的课程到这就要结束了,恭喜你已经掌握了视频技术的基础知识。整个学习过程还顺利吗?坦白讲,虽然我想给你呈现的是一门视频通识基础课程,主要讲解一些最基本的视频原理和问题,但是由于视频技术还是有一些门槛的,所以难度相对还是比较高,比如说视频编码和弱网对抗的部分。所以,如果你感觉视频技术不好学习,觉得想放弃,那么大可不必,因为我也是这么过来的。

视频技术难是挑战更是机遇

视频技术的门槛既是对新学者的一个挑战,也是一个机遇。因为这一块做得有深度的人比较少,所以人才一直是稀缺的。而且相比其他的软件开发方向来说,视频技术开发者可以做到越老越吃香。

相信这几年大家经常会焦虑,程序员35岁之后怎么办?会不会没有公司要了?会不会被软件行业淘汰掉?但是,从我的公司声网来看,似乎并不需要担心这个问题,因为我们公司有很多“老专家”,他们都是一大把年纪了(“老专家们”不好意思了哈哈)。

为什么呢?我想有很大一个原因是因为视频技术比较深比较难,需要长时间的积累。也是因为这样,视频行业相比后台开发、前端开发方向没有那么拥挤,没有那么“内卷”。所以你大可不必担心学好了视频技术之后没人要,你需要做的就是勇往直前地“攻克视频技术”。

当然,要想学好视频技术也不是一朝一夕的事儿,其涉及的方向有很多,包括视频的采集和渲染、视频的前处理、视频编解码、网络传输和弱网对抗等等。你可以先找一个方向入手,深度钻研,完全掌握之后就以这个方向作为你的基本盘,在这里“安营扎寨”,然后向周围慢慢扩张。基本盘是你的“护城河”,它是你最核心的价值。有了核心价值之后,你再扩充你的“领地”,学习相关联的知识,逐渐就可以成为不可替代的人

好的学习资料

那学习视频技术,有哪些好的学习资料呢?这里我给你推荐几个我学习的时候经常会参考的开源软件代码。

首先是RTC领域的“王者”——WebRTC。WebRTC在音视频的网络传输和弱网对抗这一方向应该是最完整的参考软件了。它里面有视频编码RTP封包、带宽预测、JitterBuffer、PacedSender等多个模块的具体实现。

其中,带宽预测模块里有基于延时和丢包的带宽预测实现和最大带宽探测算法;JitterBuffer里面有如何组帧,如何判断帧是不是完整了,如何寻找帧的参考帧判断当前帧是不是可以解码,以及如何使用卡尔曼滤波来预测网络的抖动来平滑播放视频帧,如何做丢包重传策略,如何判断是不是要发送关键帧请求等等;PacedSender里面你可以学习怎样有节奏地发送数据包,防止关键帧或者大P帧引起网络的瞬时拥塞导致卡顿。

WebRTC还有很多模块都有很重要的参考意义,你可以把它当作一个音视频技术的宝库。

另外一个音视频领域的“王者”——FFmpeg。每一个学习音视频技术的人都必须知道FFmpeg,它是学习视频采集播放、视频解码、视频前处理、音视频封装最好的开源项目,也是最全的开源项目。其中,libavcodec主要是音视频编解码相关的实现;libavformat主要是音视频封装和网络协议的实现;libavfilter则是音视频前后处理的实现。相对来说网络上FFmpeg的可参考资料也多一些,学习起来很方便。

另外,在视频编码领域,我还推荐OpenH264(H264)和libvpx(VP8)。相比成熟且复杂的x264来说,OpenH264 和 libvpx 更加简单易入门一些,里面的结构更加简单清晰,不会让你觉得每一行代码都像是在“劝退你”。

学习方法的一点感悟

有了学习资料之后,我还想分享一点我的学习感悟,就聊聊我在中南大学(本科学校)的学习经历吧。与那些在学习视频技术过程中觉得很困难想放弃的同学共勉!

我记得我刚入大学不久,就遇到了一个学姐,她被保送了清华大学的研究生。当时我就非常佩服和崇拜学姐,希望有一天能够像她一样也被保送。但是高中的时候我的数学就是弱项,而且你知道的,大一基本上就有一堆数学相关的课程,高等数学、线性代数、概率论啊之类的。就光微积分这一门课就差点劝退我了,因为对于数学不好的我来说实在是太难了,我觉得很痛苦。

所以我去了学校的心理咨询室找老师聊聊她对我的看法和建议。具体聊的内容我已经忘记了,但是我记得最清楚的就是:老师建议我不要一开始就想结果,而是去做。比如说求导,你看一次教材看不懂,就看两次,两次看不懂就看三次,并且不要一直停留在这个还没有弄懂的地方,如果经过四五次你还不懂,可以往前走学习下一个知识点,在学习后面知识点的时候,隔三差五回来再看看这个不懂的地方。总有一天你会把不懂变成懂的。

在那之后我还真是照着这个方法做的。而且这个方法看起来虽然有点笨,但是等你真正把一个不懂的知识点弄懂了之后,这个经历会不断的正反馈,告诉你再难的知识点你也是可以学会的。

一次次的把不懂变成懂,就会有一次次的正反馈,激励你去攻克一个个技术难点。到现在我还是保留了这个学习方法,而且这个学习方法帮助我在大学三年取得了93分的平均成绩(是不是有点炫耀的意思,我觉得多少有一点哈哈),最后顺利保送浙大。

图片

通过这个经历,我想告诉你的就是,如果你学习视频技术觉得很难的话,先不要放弃,可以反复地查阅资料,反复学习。而且不要死磕一处,可以先往前走,然后中间不断的回过头来学习不懂的地方,最后你会惊喜地发现这些知识点之间都是有联系的,后面所学可以帮助你理解前面的内容,前面的内容又会成为你的积累,帮助你更快接受新的知识。最终,由点成线,由线组网。

如果你已经幸运地进入了这个正反馈的过程中,那么恭喜你,你要开启学霸模式了,之后的学习之路会更加通畅。这可能也是大家常说的“信心比黄金更重要”吧,其实在学习这件事上也是这样的。

视频技术学习之路,路遥且艰辛,我与你是一样的,所以不要畏难,也许此刻你的对手已经提前放弃了,你就是最后的少数的幸运儿呢。对吧?

最后,文末有一份结课问卷,希望你可以花两分钟的时间填写一下。我会认真倾听你对这个专栏的意见或建议,期待你的反馈!