最近收到了朋友邮寄过来的一本书,刚拿回来就趁机学习了一波音视频开发的知识。现就音视频开发的一些基本知识做一个总结。如下:
1.视频编码
通过特定的压缩技术,将视频格式文件转换成另一种视频格式文件的方法。
视频编码主要分为2个系列,分别如下:
MPEG系列:ISO下属的MPEG,VCD(MPEG1),DVD(MPEG2)等
H.26X系列:ITU(国际电传视讯联盟),侧重网络传输。
2.音频编码
AAC:专为声音数据设计的文件压缩格式。有损压缩格式
MP3:是一种音频压缩技术。只保留能听到的低频部分。
AC3:有损音频编码格式,环绕声系统由5个全频域声道和1个超低音声道组成,称为5.1声道。
3.多媒体播放组件
Android多媒体:
MediaPlayer:播放控制
MediaCodec:音视频编解码
OMX:多媒体的编解码标准
StageFright:主要做了一层OMX层,以共享库.so形式存在,其中的module播放音视频。
AudioTrack:音频播放
IOS多媒体:
VideoToolBox:底层框架,提供对硬件编码器和解码器的直接访问。提供视频压缩和解压缩服务。
AudioToolBox:这个框架将比较短的声音注册到System Sound服务上,必须满足以下3个条件。
(1)播放时间不能超过30s。
(2)数据必须是PCM或者IMA4流格式。
(3)必须被打包成3种格式之一:.caf,.wav,.aiff。
AVPlayer:可用来播放音频和视频。使用时,导入AVFoundation.framework框架,引入.h头文件。
4.常见的多媒体框架及解决方案:
VLC:Video LAN Client,是一种自由、开源的跨平台多媒体播放器及框架。
FFmpeg:多媒体解决方案。不是框架。
GStreamer:构建流媒体应用的开源多媒体框架。
专业术语:
帧率:显示帧数的量度,简称fps。表示图形处理器处理时每秒能够更新的次数。
分辨率:视频成像产品所形成的图像大小或尺寸。
刷新率:屏幕每秒画面被刷新的次数,分为垂直和水平刷新率。刷新率高,图像稳定,清晰。
编码格式:编码的目的是压缩数据量。2种格式:MPEG,H.26X。
封装格式:编码后封装到一个容器。封装格式:MKV、AVI、TS等。
码率:也就是比特率。单位时间播放连续的媒体的比特数量。文件大小=码率*时长。
画质:视频质量与码率、编码算法都有关系。
DTS:读入内存中的比特流何时送入解码器解码。
PTS:度量解码后的视频帧何时被显示出来。
YUV:Y代表亮度、UV代表色差。
RGB:R红、G绿、B蓝相互叠加得到各种颜色。
量化精度:将模拟信号分为多少个等级。量化精度越高,越接近原音乐。
采样率:每秒音频采样点个数。
常见的视频帧:I、P、B帧。
I 帧:关键帧,一帧画面的完整保留。解码只需要本帧数据。
P帧:表示这一帧和之前的一个关键帧的差别
B帧:双向差别帧,B帧记录的本帧与前后帧的差别
常见音频帧:PCM、AMR、MP3。
PCM:未经编码的音频数据,根据采样率和采样精度就可播放。
AMR:规定每20ms音频是1帧,每一帧都是独立的。
MP3:比较复杂,包含采样率、比特率等参数。音频数据帧个数由文件大小和帧长决定。每一帧分为帧头和数据两部分。
5.声道:
声音在录制或播放时在不同空间位置采集或回收的相互独立的音频信号。声道数就是扬声器数量。
单声道:设置一个扬声器。
立体声道:单声道扩展为左右对称的2个扬声器。
4声道:4个发音点,前左、前右、后左、后右。
5.1声道:左环绕和右环绕,中央位置增加重低音效果。
7.1声道:5.1基础上增加了中左和中右两个发音点。前后相对平衡的声场。