音视频开发必备基础知识点整理

153 阅读9分钟

2.音频编码

3.多媒体播放组件

4.帧率

5.分辨率

6.编码格式

7.封装格式

8.码率

9.颜色空间

10.采样率

11.量化精度

12.声道

视频编码

视频编码指的是通过特定的压缩技术,将某个视频文件格式转换为另一种视频格式文件的方式,视频传输中主要编解码标准如下:

  • 运动静止图像专家组的 M-JPEG

  • M-JPEG 是一种图像压缩编码标准,是 Motion-JPEG 的简称,JPEG 标准主要是用来处理静止图像,而 M-JPEG 把运动的视频序列作为连续的静止图像来处理,这种压缩方式单独完整地压缩每一帧,在编辑过程中可随机存储每一帧,可进行精确到帧的编辑,M-JPEG 只对帧内的空间冗余进行压缩,不对帧间的时间冗余进行压缩,故压缩效率不高。

  • 国际标准化组织(ISO)运动图像专家组的 MPEG 系列标准

  • MPEG 标准主要有五个:MPEG-1、MPEG-2、MPEG-4、MPEG-7 及 MPEG-21 等,MPEG 标准的视频压缩编码技术主要利用了具有运动补偿的帧间压缩编码技术以减小时间冗余度,利用 DCT 技术以减小图像的空间冗余度,利用熵编码则在信息表示方面减小了统计冗余度。这几种技术的综合运用,大大增强了压缩性能。

  • 国际电联(ITU-T)的 H.261、H.263、H.264等

  • H.261:第一个实用的数字视频解码标准,采用的压缩算法是运动补偿帧间预测与分块 DCT 相结合的混合编码,其运动补偿使用用全像素精度和环路滤波,支持 CIF 和 QCIF 两种分辨率。

  • H.263:H.263 与 H.261 编码算法一样,但是做了一点改善,使得 H.263 标准在低码率下能够提供比 H.261 更好的图像效果,其运动补偿使用半像素精度,支持 CIF、QCIF 、SQCIF、4CIF和16CIF 五种分辨率。

  • H.264:H.264则是由两个组织 ISO 和 ITU-T 联合组建的联合视频组(JVT)共同制定的新数字视频编码标准,所以它既是 ITU-T 的H.264,又是 ISO/IEC 的 MPEG-4 高级视频编码(Advanced Video Coding,AVC)的第 10 部分,因此,不论是MPEG-4 AVC、MPEG-4 Part 10,还是 ISO/IEC 14496-10,都是指 H.264,H.264 是基于传统框架的混合编码系统,做了局部优化,注重编码效率和可靠性。H.264 在具有高压缩比的同时还拥有高质量流畅的图像,经过 H.264 压缩的视频数据,在网络传输过程中所需要的带宽更少,是压缩率最高的视频压缩标准。

音频编码

常见的音频编解码标准如下:

  • ITU:G.711、G.729 等

  • MPEG:MP3、AAC 等

  • 3GPP:AMR、AMR-WB、AMR-WB+等

  • 还有企业制定的标准,如 Dolby AC-3、DTS 、WMA 等

常见的介绍如下:

  • MP3(MPEG-1 audio layer 3):一种音频压缩技术,它被设计用来大幅度地降低音频数据量,利用 MPEG Audio Layer 3 的技术,将音乐以 1:10 甚至 1:12 的压缩率,压缩成容量较小的文件,而对于大多数用户来说重放的音质与最初的不压缩音频相比没有明显的下降,它是利用人耳对高频声音信号不敏感的特性,将时域波形信号转换成频域信号,并划分成多个频段,对不同的频段使用不同的压缩率,对高频加大压缩比(甚至忽略信号),对低频信号使用小压缩比,保证信号不失真,这样就相当于抛弃人耳基本听不到的高频声音,只保留能听到的低频部分,从而对音频进行一定压缩,此外 MP3 属于有损压缩的文件格式。

  • AAC:Advanced Audio Coding 的缩写,最初是基于 MPEG-2 的音频编码技术,MPEG-4 出现后,AAC 重新集成了其特性,且加入了SBR 技术和 PS 技术,为了区别于传统的 MPEG-2 AAC 又称为MPEG-4 AAC,AAC 是一种专为声音数据设计的文件压缩格式,相较 MP3,AAC 格式的音质更佳,文件更小,但是 AAC 是一种有损压缩格式,随着大容量设备的出现,其优势将越来越小。

  • WMA:Windows Media Audio 的缩写,是微软公司开发的一系列音频编解码器,也指相应的数字音频编码格式,WMA 包括四种不同的编解码器:WMA,原始的WMA编解码器,作为 MP3 和 RealAudio 编解码器的竞争者;WMA Pro,支持更多声道和更高质量的音频[;WMA Lossless,无损编解码器;WMA Voice,用于储存语音,使用的是低码率压缩。一些使用 Windows Media Audio 编码格式编码其所有内容的纯音频 ASF 文件也使用 WMA 作为扩展名,其特点是支持加密,非法拷贝到本地是无法播放的,WMA 也属于有损压缩的文件格式。

更多音视频编解码标准可以参考:音频编解码标准

多媒体播放组件

Android 多媒体播放组件包含 MediaPlayer、MediaCodec、OMX 、StageFright、AudioTrack 等,具体如下:

  • MediaPlayer:为应用层提供的播放控制接口

  • MediaCodec:提供访问底层媒体编解码器的接口

  • OpenMAX :Open Media Acceleration,又缩写为 OMX,开放多媒体加速层,是一个多媒体应用程序标准,Android 主要的多媒体引擎StageFright 是透过 IBinder 使用 OpenMax,用于编解码处理。

  • StageFright:Android 2.2 开始引入用来替换预设的媒体播放引擎 OpenCORE,Stagefright 是位于 Native 层的媒体播放引擎,内置了基于软件的编解码器,且适用于热门媒体格式,其编解码功能是利用OpenMAX 框架,引入的是 OpenCORE 的 omx-component 部分,在 Android 中是以共享库的形式存在,对应 libstagefright.so。

  • AudioTrack:管理和播放单个音频资源,仅支持 PCM 流,如大多数的 WAV 格式的音频文件就是就是 PCM 流,这类音频文件支持 AudioTrack 直接进行播放。

常见的多媒体框架及解决方案

常见的多媒体框架及解决方案有 VLC 、 FFmpeg 、 GStream 等,具体如下:

  • VLC : 即 Video LAN Client,是一款自由、开源的跨平台多媒体播放器及框架 。

  • FFmpeg:多媒体解决方案,不是多媒体框架,广泛用于音视频开发中。

  • GStreamer : 一套构建流媒体应用的开源多媒体框架 。

帧率

帧率是用于测量显示帧数的量度。单位为「每秒显示帧数」(Frame per Second,FPS)或「赫兹,Hz」,表示每秒的帧数(FPS)或者说帧率表示图形处理器处理场时每秒钟能够更新的次数,高的帧率可以得到更流畅、更逼真的动画,一般来说 30fps 就是可以接受的,但是将性能提升至 60fps 则可以明显提升交互感和逼真感,但是一般来说超过 75fps 一般就不容易察觉到有明显的流畅度提升了,如果帧率超过屏幕刷新率只会浪费图形处理的能力,因为监视器不能以这么快的速度更新,这样超过刷新率的帧率就浪费掉了。

分辨率

视频分辨率是指视频成像产品所形成的图像大小或尺寸,常见的 1080P、4K 等有代表什么呢,P 本身的含义是逐行扫描,表示视频像素的总行数,1080P 表示总共有 1080 行的像素数,而 K 表示视频像素的总列数,4K 表示有 4000 列的像素数,通常来说,1080P 就是指 1080 x 1920 的分辨率,4 k 指 3840 x 2160 的分辨率。

刷新率

刷新率就是屏幕每秒画面被刷新的次数,刷新率分为垂直刷新率和水平刷新率,一般提到的刷新率通常指垂直刷新率,垂直刷新率表示屏幕的图象每秒钟重绘多少次,也就是每秒钟屏幕刷新的次数,以 Hz(赫兹)为单位,刷新率越高越好,图象就越稳定,图像显示就越自然清晰,对眼睛的影响也越小,刷新频率越低,图像闪烁和抖动的就越厉害,眼睛疲劳得就越快,一般来说,如能达到 80Hz 以上的刷新频率就可完全消除图像闪烁和抖动感,眼睛也不会太容易疲劳。

编码格式

针对音视频来说,编码格式对应的就是音频编码和视频编码,对照前面的音频编码标准和视频编码标准,每种编码标准都对应的编码算法,其目的是通过一定编码算法实现数据的压缩、减少数据的冗余。

封装格式

直接看下百度百科的关于封装格式的介绍,封装格式(也叫容器),就是将已经编码压缩好的视频轨和音频轨按照一定的格式放到一个文件中,也就是说仅仅是一个外壳,或者大家把它当成一个放视频轨和音频轨的文件夹也可以,说得通俗点,视频轨相当于饭,而音频轨相当于菜,封装格式就是一个碗,或者一个锅,用来盛放饭菜的容器。

码率

码率,也就是比特率(Bit rate),指单位时间内传输或处理的比特的数量,单位为 bps(bit per second)也可表示为 b/s,比特率越高,单位时间传送的数据量(位数)越大,多媒体行业在指音频或视频在单位时间内的数据传输率时通常使用码率,单位是 kbps,一般来说,如果是 1M 的宽带,在网上只能看码流不超过 125kbps 的视频,超过 125kbps 的视频只能等视频缓冲才能顺利观看。

码率一般分为固定码率和可变码率:

  • 固定码率会保证码流的码率恒定,但是会牺牲视频质量,比如为了保证码率恒定,某些图像丰富的内容就是失去某些图像细节而变得模糊。

  • 可变码率指的是输出码流的码率是可变的,因为视频信源本身的高峰信息量是变化的,从确保视频传输质量和充分利用信息的角度来说,可变码率视频编码才是最合理的。

码率的高低与视频质量和文件提交成正比,但当码率超过一定数值后,对视频质量没有影响。

颜色空间