时间过得好快,转眼半年就过去了,半年里感觉自己好像并没有学到太多的东西。主要是学习了雷宵骅老师的视频和殷文杰老师的视频,我之前完全没有接触过FFmpeg,而且都没有听说过,起初是听雷宵骅老师的视频,也是偶然间才知道他的遭遇,感觉很难过,只能说天妒英才,刚开始我有点无法接受这个消息,对我来说,他是我在FFmpeg方面的启蒙老师。雷宵骅老师的课程很基础,特别适合我们这些从来没有接触过FFmpeg的人学习,他是从最底层的知识讲起,包括FFmpeg的使用,以及平时会用到的一些工具,编解码的原理,都有给出。里面还涉及了SDL视频显示库的内容。 我在后面听殷文杰老师的课,项目的环境配置也都是按照雷宵骅老师的方法来配置的。殷文杰老师的课是很基础的使用FFmpeg编程的教程,逐语句的教大家编程,但是没有涉及太多原理上的东西。下面是我平时做的一些笔记,很凌乱,因为我也还没有学的很系统,以后如果有机会继续深入的学习,我会再做整理。(在这里给出雷宵骅老师的博客这部分的链接,博客里有对各方面知识更详细的介绍 http://blog.csdn.net/leixiaohua1020/article/details/15811977/)
1、各种格式文件后缀名:
封装格式:MP4、RMVB、TS、FLV、AVI
视频编码数据:H.264、MPEG2、VC-1
音频编码数据:AAC、MP3、AC-3
视频像素数据:YUV420P、RGB
音频采样数据:PCM
2、视频播放流程:
3、MPEG-TS 封装格式和FLV封装格式:
(1)MPEG-TS 封装格式
MPEG-TS 封装格式没有头,主要用于数字电视,可以从任意地方开始播放,即打开电视可以随时播放。TS Package的长度固定,为188字节。如果前面或者 后面的单元破坏了,中间的可以正常播放。
(2)FLV封装格式
有头部结构,有一个个的Tag单元组成,Tag单元的大小不固定。如果头部坏了整个文件便不可以在播放。
4、H.264码流分析:
SODB(原始数据比特流) RBSD(原始数据字节流) NALU单元
SODB+RBSP trailing bits(RBSP尾部填充)=RBSP
NAL header+RBSP=NALU单元
start code prefix(起始编码前缀)+NALU=H.264
5、RGB和YUV
(1)RGB: Red Green Blue 三色混合
存储方式:存储屏幕上每一个像素点的RGB信息,如下图
(2)YUV : Y表示亮度信息 UV表示两个色度信息
存储方式:显存整个屏幕的Y信息,再存整个屏幕的U信息,最后存V信息。对UV色度信息压缩的更狠一些,UV的信息量在横轴和纵轴上都是Y的一半。