音视频基础

最近公司要求做短视频的功能,由于之前的工作中并没有接触过关于音视频的工作,最多也就使用MediaPlayer+SurfaceView播放视频罢了,所以对于音视频的基本知识了解甚少。不过好在公司给的时间比较充裕,刚好趁着这个机会好好学一下这方面的知识。

解协议 : 将使用流媒体协议传输的的数据,解析为相应的封装格式数据。RTMP,HTTP..->MP4,MKV,RMVB,TS,FLV,AVI..

解封装 : 将输入的封装格式的数据,分离成为视频流压缩编码数据和音频流压缩编码数据。MP4,MKV,RMVB,TS,FLV,AVI..->H.264,H.265….编码的视频码流和AAC,mp3…编码的音频码流。

解码 : 将视频/音频压缩编码数据,解码成为非压缩的视频/音频原始数据。音频的压缩编码标准包含AAC,MP3,AC-3等等,视频的压缩编码标准则包含H.264,MPEG2,VC-1等等。压缩编码的视频数据输出成为非压缩的颜色数据,例如YUV420P,RGB等等;压缩编码的音频数据输出成为非压缩的音频抽样数据,例如PCM数据。

视音频同步 :根据解封装模块处理过程中获取到的参数信息,同步解码出来的视频和音频数据,并将视频音频数据送至系统的显卡和声卡播放出来。

时间戳 :音视频同步的参照物,每帧视频和音频都有时间戳,播放器根据时间戳来进行视频的渲染和音频的播放。

编码 :使用特定的音视频压缩算法对帧数据进行处理,减少视频和音频体积。例如YUV->H.264,PCM->AAC等。

采样率 :每秒从连续信号中提取并组成离散信号的采样个数,常用音频采样率为44.1khz和48.0khz.音频录制编码常用参数有采样率,比特率,声道数。

码率 :也叫比特率,代表每秒音视频的大小,这个参数决定音视频最终的大小,码率*时间=音视频体积,码率高到一定程度就没什么用了,但是低到一定程度会导致声音或者画面失真。

帧率 :每秒帧数,一般手机录制视频大概在30帧左右,音频由于本质是随时间变化的一维信号,所以固定格式固定采样率的音频的帧率基本是固定的。音频每帧时长=一对应的采样样本的个数/采样频率(单位为s)。例如44.1khz采样率下,AAC一帧固定采样1024个样本,根据计算 一个AAC帧时长=1024/44100=0.02232s=22.32ms,而mp3略有不同,mp3格式一帧=1152 * 1000 / 44100=26.122ms.

I帧,P帧,关键帧间隔 :I帧可进行独立解码,而P帧的解码则依赖于前一帧的数据,解码只能从I帧开始,I帧也称为关键帧,从一个I帧到下一个I帧为关键帧间隔,我们平时经常可以看到播放器只能从特定的地方开始播放,这个地方就是I帧所在,若I帧缺失则会导致接下来的画面花屏。

封装 :将音视频流进行合成,生成封装格式。例如 H.264 + AAC -> MP4

视频原始数据格式 :通过硬件设备采集到的原始帧数据(YUV,RGB)

音频原始数据格式 :通过硬件设备采集到的原始帧数据(PCM)

视频编码格式 : H.264(最流行),MPEG4,MPEG2,HEVC(H.265),VP9,VP8,VC-1…

音频编码格式 : AAC(新,各个领域),AC-3,MP3,WMA…

封装格式 : AVI(不支持流媒体),MP4,MKV,RMVB,TS,FLV,AVI…

流媒体协议 : RTSP+RTP,RTMP,RTMFP,HTTP,MMS…

直播服务普遍采用了RTMP作为流媒体协议,FLV作为封装格式,H.264作为视频编码格式,AAC作为音频编码格式,Flash播放器。

点播服务普遍采用了HTTP作为流媒体协议,H.264作为视频编码格式,AAC作为音频编码格式,Flash播放器。

经过调查,发现目前市场拍摄段视频多用的是mp4格式,视频流为H.264,音频流为AAC,至于AVI,3GP等格式,已经很少见了。

参考链接

视音频编解码技术零基础学习方法

文章目录
  1. 1. 参考链接
|