音视频基本概念和FFmpeg的简单入门
基本概念
容器/文件(Conainer/File):
即特定格式的多媒体文件,一般来说一个视频文件是由视频,音频,字幕等按特定的格式/规则组合到一起的,常见如:
mp4
flv
mkv
avi
媒体流(Stream):
表示时间轴上的一段连续数据,如一段声音数据、一段视频数据或一段字幕数据,可以是压缩的,也可以是非压缩的,压缩的数据需要关联特定的编解码器。
数据帧/数据包(Frame/Packet):
通常,一个媒体流是由大量的数据帧组成的,对于压缩数据,帧对应着编解码器的最小处理单元,分属于不同媒体流的数据帧交错存储于容器之中。
一般: Frame对应压缩前的数据,Packet对应压缩后的数据。
编解码器(Codec):
视频和音频都需要经过编码,才能保存成文件。编解码器是指以帧为单位实现压缩数据和原始数据之间的相互转换的;
编码:原始数据->压缩数据;
解码:压缩数据->原始数据;
不同的编码格式(CODEC),有不同的压缩率,会导致文件大小和清晰度的差异。
常用的视频编码格式如下:
H.262
H.264
H.265
示例:原始图形YUV数据用H.264编码成H264帧
常用的音频编码格式如下:
MP3
AAC
示例:原始声音PCM数据用AAC编码器编码成AAC帧(是的音频也有帧)
复用(mux):
把不同的流按照某种容器的规则放入容器,这种行为叫做复用(mux)
解复用(demux):
把不同的流从某种容器中解析出来,这种行为叫做解复用(demux)
帧率(Frame rate):
n帧率也叫帧频率,用FPS表示。帧率是视频文件中每一秒的帧数,