音视频解码与播放
YUV定义:分为三个分量,
“Y”表示 明亮度 也就是 灰度值 ,而“U”和“V” 表示的则是 色度 和 饱和度 ,作用是描述影像色彩及饱和度,用于指定像素的颜色。
I frame :帧内编码帧 ,I 帧通常是每个 GOP(MPEG 所使用的一种视频压缩技术)的第一个帧,经过适度地压缩,做为随机访问的参考点,可以当成图象。I帧可以看成是一个图像经过压缩后的产物。
自身可以通过视频解压算法解压成一张单独的完整的图片。
P frame: 前向预测编码帧 ,通过充分将低于图像序列中前面已编码帧的时间冗余信息来压缩传输数据量的编码图像,也叫预测帧;
需要参考其前面的一个I frame 或者P frame来生成一张完整的图片。
B frame: 双向预测内插编码帧 ,既考虑与源图像序列前面已编码帧,也顾及源图像序列后面已编码帧之间的时间冗余信息来压缩传输数据量的编码图像,也叫双向预测帧;
要参考其前一个I或者P帧及其后面的一个P帧来生成一张完整的图片。
PTS:Presentation Time Stamp 。PTS主要用于度量解码后的视频帧 什么时候被显示出来
DTS:Decode Time Stamp 。DTS主要是标识读入内存中的帧数据在 什么时候开始送入解码器 中进行解码。
在没有B帧存在的情况下DTS的顺序和PTS的顺序应该是一样的。
DTS主要用于视频的解码,在解码阶段使用。PTS主要用于视频的同步和输出.在显示的时候使用。
通常所说的音频裸数据就是PCM(Pulse Codec Modulation脉冲编码调制)
libavformat
用于各种音视频封装格式的生成和解析 ,包括获取解码所需信息以生成解码上下文结构和读取音视频帧等功能;音视频的格式解析协议,为 libavcodec 分析码流提供独立的音频或视频码流源。
libavcodec
用于各种类型声音/图像编解码 ;该库是音视频编解码核心,实现了市面上可见的绝大部分解码器的功能,libavcodec 库被其他各大解码器 ffdshow,Mplayer 等所包含或应用。
libavfilter
filter(FileIO、FPS、DrawText) 音视频滤波器的开发 ,如水印、倍速播放等。
libavutil
包含一些 公共的工具函数 的使用库,包括算数运算 字符操作。
libswresample
原始音频格式转码 。
libswscale
( 原始视频格式转换 )用于视频场景比例缩放、色彩映射转换;图像颜色空间或格式转换,如 rgb565,rgb888 等与 yuv420 等之间转换。