音视频学习整理

2020-08-23 22:40:34 浏览数 (1)

| 导语 整理了一些音视频编解码中常用的几个参数知识。

一. 码率

1. 定义

码率又叫比特率/码流,是编码器(视频/音频)每秒输出的数据大小,单位是bps(Bit Per Second),一般取kbps/Mbps,是编解码中最重要的参数。

2. 影响码率因素

视频:分辨率,帧率,图像压缩程度,色彩空间(RGB)等

音频:声道数量,采样率,采样精度(8Bit/16Bit)

例子:

一个视频(720*480, 30p, 24位真彩色)

最大码率(不考虑图像压缩):720*480*24*30=248Mkps

一般视频的码率在5Mbps~10Mbps,音频码率在100kbps~500kbps

3. 码率的影响

清晰度:码率越大,压缩越小,图像还原更好,更清晰

文件大小:码率越大,文件越大

网络带宽:码率越大,单位时间传输的数据量越大,占用带宽越大

cpu/内存/缓存等:码率越大,需要越大的硬件资源

可见清晰度和其他点是相矛盾的,所以设置码率需要根据场景来权衡分析。

4. 编码模式

VBR(Variable Bitrate)

动态比特率 也就是没有固定的比特率,压缩软件在压缩时根据音视频数据即时确定使用什么比特率,这是以质量为前提兼顾文件大小的方式,推荐编码模式;

CBR(Constant Bitrate)

常数比特率 指文件从头到尾都是一种位速率。相对于VBR和ABR来讲,它压缩出来的文件体积很大,而且音质相对于VBR和ABR不会有明显的提高。

ABR(Average Bitrate)

平均比特率 是VBR的一种插值参数。LAME针对CBR不佳的文件体积比和VBR生成文件大小不定的特点独创了这种编码模式。ABR在指定的文件大小内,以每50帧(30帧约1秒)为一段,低频和不敏感频率使用相对低的流量,高频和大动态表现时使用高流量,可以做为VBR和CBR的一种折衷选择。

例子:

Elecard StreamEye可以用来查看视频帧的信息,下面看看VBR和CBR的差别。

VBR

CBR

VBR vs CBR

优点

缺点

适合场景

VBR

整体压缩率高,占用空间小,质量高

码率波动起伏大

媒体存储

CBR

码率稳定,压缩快

占用空间大,质量不稳定

流式播放(直播)

5. 码率设置

H.264(也叫AVC或X.264)的文档中,视频的建议码率如下:

Android Mediacodec设置码率模式(默认VBR):

BITRATE_MODE_CBR //CBR

BITRATE_MODE_VBR //VBR

BITRATE_MODE_CQ //Constant quality mode

注意的是,不同系统平台的codec对码率模式的支持可能不一样,一般用默认模式即可,如果需要根据场景做更加精细化的设置,需要对兼容性做测试。

二. Profile & Level

1. Profile

定义:画质级别(或规格),不同级别的压缩效率和性能不同。

H264有4种基本Profile:baseline, extended, main, high

1、Baseline Profile:基本画质。支持I/P 帧,只支持无交错(Progressive)和CAVLC;

2、Extended profile:进阶画质。支持I/P/B/SP/SI 帧,只支持无交错(Progressive)和CAVLC;

3、Main profile:主流画质。提供I/P/B 帧,支持无交错(Progressive)和交错(Interlaced), 也支持CAVLC 和CABAC 的支持;

4、High profile:高级画质。在main Profile 的基础上增加了8x8内部预测、自定义量化、 无损视频编码和更多的YUV 格式;

根据应用领域的不同,Baseline profile多应用于实时通信领域,Main profile多应用于流媒体领域,High profile则多应用于广电和存储领域。

AAC:9种Profile

  1. MPEG-2 AAC LC低复杂度规格(Low Complexity)
  2. MPEG-2 AAC Main主规格
  3. MPEG-2 AAC SSR可变采样率规格(Scaleable Sample Rate)
  4. MPEG-4 AAC LC低复杂度规格(Low Complexity),现在的手机比较常见的MP4文件中的音频部分就包括了该规格音频档案,,最常用,通用性好
  5. MPEG-4 AAC Main主规格
  6. MPEG-4 AAC SSR可变采样率规格(Scaleable Sample Rate)
  7. MPEG-4 AAC LTP长时期预测规格(Long Term Predicition)
  8. MPEG-4 AAC LD低延迟规格(Low Delay)
  9. MPEG-4 AAC HE高效率规格(High Efficiency)

Android官方文档说明:https://developer.android.com/guide/topics/media/media-formats?hl=zh-cn

视频:

音频:

可见,Android官方文档也没有列出所有Profile参数,且不同系统版本支持程度也不一样,一般用默认值即可,需要精细化设置的话需要做兼容性测试。

看看iOS的支持程度:

2. Level

定义:即档次,每一个档次设置不同的参数(如取样速率、图像尺寸、编码比特率等),得到对应的编解码器性能的不同level。

关于Level的资料比较少,引用网上的一张表来说明不同Level的区别:

实际使用过程中,Level一般需要和Profile配合起来使用,两种结合起来会决定最终的码率,相比之下,比较简单的做法是根据实际场景的带宽程度,设置合适的码率即可,如果需要更加精细化的设置,可以通过Profile和Level来控制码率。

0 人点赞