1.封装格式 MPEG-4 其中 MPEG-1 和 MPEG-2 是采用相同原理为基础的预测编码、变换编码、 熵编码及运动补偿等第一代数据压缩编码技术; MPEG-4(ISO/IEC 14496)则是基于第二代压缩编码技术制定的国际标准,它以视听媒体对象为基本单元,采用基于内容的压缩编码,实现数字视音频、图形合成应用及交互式多媒体的集成。 MPEG 系列标准对 VCD、 DVD 等视听消费电子及数字电视和高清晰度电视(DTV&&HDTV)、 多媒体通信等信息产业的发展产生了巨大而深远的影响. AVI AVI,音频视频交错(Audio Video Interleaved)的英文缩写。 AVI 格式调用方便、图像质量好,压缩标准可任意选择,是应用最广泛、也是应用时间最长的格式之一。 FLV FLV 是 FLASH VIDEO 的简称, FLV 流媒体格式是一种新的视频格式。由于它形成的文件极小、加载速度极快,使得网络观看视频文件成为可能,它的出现有效地解决了视频文件导入 Flash 后,使导出的 SWF 文件体积庞大,不能在网络上很好的使用等缺点。
2.编码格式 视频部分 h264、wmv、xvid、mjpeg(摄像头出来的每一帧都是mjpeg,缺点在于只有I帧、没有B帧、P帧) 音频部分 acc、MP3、ape、flac 3.文件封装格式和编码格式
音频帧和视频帧的帧率是不一致的,比如音频帧采样率是44.1khz,声音必须的源源不断输出,所以音频帧率可能为22.05帧,每个帧里存了2K采样数据.
视频解码
音频解码
4.像素格式 压缩编码中一般使用的是RGB24,YUV420 , YUV420P, YUV422P, YUV444P等格式数据,最常见的是YUV420P. RGB格式 BMP文件存储的就是RGB格式像素数据 yuv格式 y表示明亮度,而u(Cb 蓝色色差值)和v(Cr 红色色差值)则表示色度值.它将亮度信息(Y)与色彩信息(UV)分离,没有UV信息一样可以显示完整的图像,只不过是黑白的,由于UV色度不是很明显看出,所以除了YUV4:4:4外,又诞生了YUV4:2:2,YUV4:2:0格式.从而占用极少的存储数据.
如下图所示,黑点表示该像素点的Y分量,以空心圆圈表示像素点的UV分量:
YUV420、YUV420P、YUV420SP区别
5.YUV和RGB转换格式
RGB 转换成 YUV
YUV 转换成 RGB
RGB取值范围均为0~255,Y=0~255,U=-122~+122,V=-157~+157 以下是经过简化的公式,运算量比上述公式要小一些。 RGB转YUV
YUV转RGB
PS:除了软解之外,则还可以交给GPU进行硬解.
6.DTS、PTS、GOP
而dts和pts值是不一定是相等的,如下图GOP(Group of Picture)所示:
从上图,可以看到,DTS和PTS的顺序是不一致的,并且每组GOP中开头都是I帧,然后后面都是B、P帧,如果开头的I帧图像质量比较差时,也会影响到一个GOP中后续B、P帧的图像质量.
一般平均来说, I 的压缩率是 7(跟 JPG 差不多), P 是 20, B 可以达到 50.
在ffmpeg中,pts和dts单位都是不确定,如果要换算为时分秒,则需要AVStream的time_base时基来一起换算出当前显示的标准时间 而time_base结构体为AVRational:
所以计算时分秒为:
if (frame->pts != AV_NOPTS_VALUE)
dpts = av_q2d(is->video_st->time_base) * frame->pts;