想要学习音视频编解码,如何一步两步的学。我也在摸索中,但是摸索也不是瞎摸索,需要有计划有步骤的。
我现在把我的步骤记录下来,并不断的修改。
//
1. 参考某QQ群主的建议,需要学习的知识如下:
// 基础部分
1:编解码
2:复用解复用
3:视频缩放
4:音频重采样
5:播放器同步原理
6:视频格式:h264格式
7:音频aac格式,PCM
8:封装格式:mpc,flv, ts
9:颜色空间:yuv格式,rgb格式
10:ffmpeg接口
11:sdl接口
// 网络部分
rtsp rtmp http hls,这些都要用纯C/C++的代码实现
//
// 2015/8/6更新
// 地址:http://bbs.csdn.net/topics/391116127?page=1#post-399931059
如果不做编解码,不做codec比较专业的方向发展,我建议向解决方案构建方向发展,至少知道目前各种音视频应用架构如何,其中涉及各个开源项目如ffmpeg,darwin,live555,vlc,mpc player,gstreamer,当然这项项目中,最重要的我认为是ffmpeg,其次,学习各种流媒体协议rtmp,hls,dash,rtp,rtsp,等,其中以hls比较多,如果视频监控可能rtp,rtsp比较多,再就是各大视频网站都用到的那些技术如nginx,视频服务器开发。其次,如果能熟悉几种常用的媒体封装格式比较好,像mp4,avi,mkv,音频至少知道aac的格式。当然每种格式需要时查文档也可以。还有需要了解H264的一些概念,NAL,SPS PPS,以及profile等。rtp封装H264.如果做直播系统,要非常熟悉mpeg2ts的相关概念,其中ts数据格式是必须知道的。PMT PAT这些概念也要知道。
还有一点。需要知道音视频同步原理,PTS ,DTS这些概念。 当然图形图像基础这些都需要了解,推荐看一下多媒体技术基础(第3版)(清华大学计算机系列教材) 林福宗著。了解color space.
最后,如果能理解编解码压缩原理,知道DTC变换,这些编解码原理也是非常有好处的。推荐知名博客 雷霄骅的博客,http://blog.csdn.net/leixiaohua1020?viewmode=list
//
// 2015/8/7 常见参考资料地址
1. http://dranger.com/ffmpeg/
老外的技术博客,教大家最基本的ffmpeg用法
2. http://blog.csdn.net/yang_xian521
这位帅哥参考了一些上面老外的博客,我是看到他的博客才找到老外的博客的
3. http://blog.csdn.net/leixiaohua1020
这位大牛写了很多ffmpeg文章,很不错,有些也是参考上面2个大牛的博客