我的一些学习经验:视频流媒体方面

刚来公司还没转正时,接触视频方面的第一个任务是将一系列JPEG图片封装为AVI视频文件。当时我没有接触过FFMPEG,而且也不知道公司项目代码上能不能用第三方库,所以就自己看AVI格式文档,自己写代码组装。通过这个任务,对AVI格式有了了解,另外第一次将数据结构中的双向链表应用到实际工作中。完成后交付给其它部门的同事。至于到底有没有使用我写的模块,就不得而知了。

后来工作上涉及到视频方面的知识越来越多,我也开始学习ffmpeg,还对jpeg、bmp文件读写进行封装。后来将其结合MFC编写小工具,在产品的字符叠加、Gama调节等方面进行调试使用。在研发项目时,其它部门同事不懂上位机软件,上达领导层要求我们做支持,这些知识也帮了不少忙。

再后来,接触平台底层视频采集方面的多了,发现自己对YUV颜色空间了解不够。又去搜索学习,同时还参考常见的YUV播放器写了一个属于自己的YUV播放器。并支持多种YUV格式。做此工具,纯粹是为了学习YUV转RGB格式,因此那段时间,甚至将像素点画出来做对照。经过实打实式的练习后,终于对YUV格式有了比较深入的了解。

再后来,被合并到另一个部门,合并之初大领导叫我们几个搞平台的人到办公室,有意安排我们向流媒体方向发展,计划很宏伟,领导承诺让我们专注去搞——当然事实是不可能的。随后部门制定的计划中有很多项是流媒体的,于是我开始接触h264标准。但标准中的语法描述实在晦涩难懂,对于学习新知识,我一向不习惯只看理论,也看不透。只有用代码去接触才能了解。当时市面上的h264码流分析工具几乎是商用的且不开源。公司购买的软件亦只能在一台PC上运行。后来找到雷博写的h264码流分析工具,使用了开源的h264码流分析库。于是我也参考着使用MFC自己实现。

不到一年时间吧,公司策略似乎要着手h265研发。于是我也着手了解h265。经过慎重考虑,决定在原来的码流分析工具基础上添加h265的支持,接着便使用ffmpeg实现h264、h265裸视频文件的播放、转码保存功能。当时分析工具较少且要授权,试用版功能有很多限制。有感于雷博的开源精神,我所写的YUV播放器及码流分析器都开源放到github网站。

所有这些实践,都基于MFC,因为不熟悉其它界面库,另外也是因为MFC是我第一个认真自学的界面库,对此有感情。——至今我还能清晰记得许多年前的暑假在大学宿舍边听《似是故人来》写MFC的情形。

工作后对视频方面的知识,我都是断断续续地接触、学习的,无他,工作所需。比如学习h264,是因为公司打算自己实现h264视频编码。而做YUV播放器则完全是为了提高自身技能所实施的。如果不是当时下决心写,以公司策略随时变化的管理风格,我还没缓过神来已经被安排另一个事务了,也不可能有自己写的工具开源出来。我还记得很多个傍晚,老婆在炒菜,而我在VS写h265语法解析。


李迟 2016.10 中旬

你可能感兴趣的:(代码工人的仓库,生活工作掠影)