音频编码

本文章根据慕课网李超老师的音视频课程和https://blog.csdn.net/ty13392186270/article/details/106993477

 

本文讨论以下几个问题

1、为什么音频需要编码?

2、音频压缩分为几种?每种压缩的特点?

3、如何消除冗余信息?

4、什么是频域遮蔽和时域遮蔽?

5 无损压缩采用的编码有哪些?哈夫曼树是什么?

6、常见的音频编码器?

7、AAC编码器?

8、ffmpeg生成aac?ffmpeg生成opus

 

1、为什么音频需要编码?

录制出来的原始数据数据量很大,不利于网络传输,所以要进行音频编码。

2、音频压缩分为几种?每种压缩的特点?

音频压缩分为有损压缩和无损压缩

有损压缩就是无法恢复的压缩,比如音频去除冗余信息和被屏蔽掉的信息。因为已经去除,所以不可以恢复。

无损压缩就是对数据进行压缩后还可以原样恢复的的压缩。 比如 rar tar gzip zip 7z等。

音频压缩的流程

音频->去除冗余信息(有损压缩)->无损压缩 ->压缩包。生成压缩包就可以在网络上进行传输了。

 

3、如何消除冗余信息?

对于音频哪些是冗余信息?

  • 人类可以听到的范围是20-20000hz的频率的声音,<20和>20000hz的都是冗余信息
  • 被遮蔽掉的信息

去掉冗余信息的方式有两种频域遮蔽和时域遮蔽。

 

4、什么是频域遮蔽和时域遮蔽?

 

图1

 

图1当中横轴是频率,纵轴是声音强度

 

①静音门槛曲线下方的声音我们是听不到的,所以应该去除

②图中遮蔽源的声音,会将它旁边的声音进行遮蔽,这个我们也是听不到的。如果声音的强度比遮蔽源的强度低,但是离遮蔽源的频率远一些(低和高都行),那么也是不会遮蔽的。

 

 

 

图2

时域遮蔽:随着时间的推移,它是如何产生遮蔽效应的。横轴是时间,纵轴是声音强度,图2所示,0-200,同时有很多声音进来,声强的会压住声弱的。声强之前的声音也会被屏蔽掉。在50毫秒内,越靠近这个人说话,越会被屏蔽掉。对于后面的屏蔽更长了,达到了200毫秒,你超过它,你就把前面的声音给屏蔽掉了,就看图2后屏蔽。

总结

根据时域和频域遮蔽效应哪些被屏蔽掉

  1. 低于20hz或者高于2Whz的被屏蔽掉
  2. 声音强度很小的,也被屏蔽掉了
  3. 同时说话,声音强度大的压制声音强度小的
  4. 同一频率,声音强度大的压制声音强度小的
  5. 不同频率,他们之间的影响会小很多

5 无损压缩采用的编码有哪些?哈夫曼树是什么?

无损压缩用到熵编码

熵编码

  • 哈夫曼编码 每一个叶子节点代表一个编码
  • 算术编码
  • 香农编码

 

哈夫曼树如何理解

https://baijiahao.baidu.com/s?id=1664724684084187981&wfr=spider&for=pc 这篇文章写的很好,可以大体明白。

6、常见的音频编码器?

OPUS AAC Ogg Speex iLBC AMR G.711等

 

 

编码器

特点

应用范围

OPUS

延迟小,压缩率高,网络宽带适应性好

视频会议,WebRTC

AAC

全带音频,延迟高

使用最广泛,android,ios,ffmpeg都在大量使用,直播系统中使用广泛

Ogg

收费

 

Speex

回音消除

 

G.711

数据小,声音损耗大

固话

 

网上测评效果 OPUS >AAC>Ogg

各种编码适应的宽带类型

 

 

可以看到Opus是适应的所有的宽带。目前移动设备使用的aac只在全宽带。对网络的要求还是比较高。

音频编码码率

 

可以从图中看出opus延时小,码率范围大。aac延迟大,码率还可以。

7、AAC编码器?

 

为了取代mp3,mp3压缩率还是比较低

aac压缩率好于mp3,还原性比较好。

最开始是基于MPEG-2开发。MPEG-4标准推出后,AAC又加入了MPEG-4的特性,加入了SBR技术和PS技术。

目前常用的规格 AAC LC 、AAC HE V1、AAC HE V2

AAC规格

AAC LC:(LOW Complexity)低复杂度规格,码流是128 K, 音质好。

 

AAC HE V1:等于AAC LC + SBR(Spectral Band Replication)。其核心思想是按频谱分保存。低频编码保存主要成分,高频单独放大编码保存音质,码流在 64 K左右。

 

AAC HE V2:等于AAC+SPR+PS(Parametric Setreo)。其核心思想是双声道中的声音存在某种相似性,只需存储一个声道的全部信息,然后,花很少的字节用参数描述另一个声道和它不同的地方。码流在 32 K左右

ADIF(Audio Data Interchange Format)

这种格式的特征是可以确定的找到这个音频数据的开始,只能从头开始解码,不能再音频数据流中间开始,这种格式常用在磁盘文件中

ADTS(Audio Data Transport Stream)

这种格式的特征是每一帧都有一个同步字,所以可以在音频流的任何位置开始解码。它类似于数据流格式

下面是来自一个国外网站的介绍。http://wiki.multimedia.cx/index.php?title=ADTS  个人觉得这个网站的这个表结构的说明更加的形象一些。很好理解。1byte = 8 bits , 每个字段占用多少bits,各个字段的意义。

Structure
AAAAAAAA AAAABCCD EEFFFFGH HHIJKLMM MMMMMMMM MMMOOOOO OOOOOOPP (QQQQQQQQ QQQQQQQQ)
Header consists of 7 or 9 bytes (without or with CRC).

Letter Length (bits) Description
A     12     syncword 0xFFF, all bits must be 1
B     1       MPEG Version: 0 for MPEG-4, 1 for MPEG-2
C     2       Layer: always 0
D     1       protection absent, Warning, set to 1 if there is no CRC and 0 if there is CRC
E     2       profile, the MPEG-4 Audio Object Type minus 1
F     4       MPEG-4 Sampling Frequency Index (15 is forbidden)
G     1       private stream, set to 0 when encoding, ignore when decoding
H     3       MPEG-4 Channel Configuration (in the case of 0, the channel configuration is sent via an inband PCE)
I      1       originality, set to 0 when encoding, ignore when decoding
J      1       home, set to 0 when encoding, ignore when decoding
K     1       copyrighted stream, set to 0 when encoding, ignore when decoding
L     1        copyright start, set to 0 when encoding, ignore when decoding
M   13      frame length, this value must include 7 or 9 bytes of header length: FrameLength = (ProtectionAbsent == 1 ? 7 : 9) + size(AACFrame)
O    11       Buffer fullness
P     2        Number of AAC frames (RDBs) in ADTS frame minus 1, for maximum compatibility always use 1 AAC frame per ADTS frame
Q     16     CRC if protection absent is 0

可以通过

https://p23.nl/projects/aac-header/ 用户解析aac的头

audio相应的头信息 https://wiki.multimedia.cx/index.php/MPEG-4_Audio#Audio_Object_Types

 

 

8、ffmpeg生成aac?ffmpeg生成opus

 

生成aac

ffmpeg -i xxx.mp4 -vn -c:a libfdk_aac -ar 44100 -ac 2  -profile:a aac_he_v2 3.aac

生成opus

ffmpeg -i xxx.mp4 -vn -c:a libopus 3.opus

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值