音频压缩

本文深入探讨音频压缩技术,包括有损和无损压缩,重点介绍了AAC和OPUS两种编码器。AAC是广泛应用的音频编码格式,适用于iOS、Android等平台,而OPUS则在在线教育和音视频会议中表现出色,因其低延迟和高压缩率。此外,文章还提到了音频编码的参数如采样率、频域遮蔽效应、时域遮蔽效应以及编码格式如ADIF和ADTS。
摘要由CSDN通过智能技术生成

音频压缩

消除冗余信息 - 20HZ以下,2万HZ以上的数据人不敏感,属于无效 有损压缩

无损压缩

音频有损压缩

音频冗余信息

音频压缩技术是在保证信号在听觉方面不失真的前提下,对音频数据信号进行尽可能大的压缩。

压缩的主要方法是去除采集到的音频荣冗余信息。所谓冗余信息包括人耳听觉范围外20HZ~2万HZ的音频信号以及被掩盖掉的音频信号。

信号的遮蔽可以分为频域遮蔽和时域遮蔽

在这里插入图片描述

频域遮蔽效应即简单来说就是在频率相近的情况下,强度大的遮蔽强度小的,但是无法遮蔽频率不相近的,哪怕是强度明显大于其强度

在这里插入图片描述

时域遮蔽效应,即强度大的会遮蔽前后一定时间内其他小强度的声音。

音频无损压缩

熵编码-代指无损编码

哈夫曼编码->用很小的一串0和1的二进制数代替一个特别长的字符,用小的代替长的,频率越高的编码越小,频率越低的编码越长

算术编码->通过二进制的小数进行编码

香农编码->算术编码就是在香农编码的基础上改进而来的

在这里插入图片描述

在这里插入图片描述

时域转频域变换:将时域一块长时间的数据交给模块转换为频域,转换成多种频段的数据,便于拆出哪些是需要的数据,哪些是不需要的。

心理声学模型:去掉20HZ~2万HZ之外的,以及一些被遮蔽的声音

常见的音频编码器

常见的音频编码器包括OPUSAAC、Ogg、Speex、iLBC、AMR、G.711等

OPUS:在线教育、音视频会议常用,延迟小压缩率高等优点,近些年比较突出。OPUS是较新的音编码器,WebRTC中默认使用。

AAC:目前应用最广泛的编解码器,用于IOS、安卓系统、嵌入式设备等都包含了硬件的AAC编解码,ffmpeg中也有很多的AAC编解码器。AAC在直播系统中应用广泛。

Ogg:收费,应用不是太广泛

Speex:在OPUS和AAC出现前使用广泛,有一个很好的优点,包括了回音消除的功能。

G.711:一般用于固话,窄带音频,编解码后的数据非常小,但是声音损耗严重

网上评测结果:OPUS > AAC > Ogg

在这里插入图片描述

纵轴是质量,横轴是码流大小

在这里插入图片描述

纵轴是延迟性,横轴是码率

AAC编码器介绍

AAC介绍

AAC(Advanced Audio Coding)由Fraunhofer IIS、杜比实验室、AT&T、Sony等公司共同研发,目的是取代MP3格式。

最开始是基于MPEG-2的音频编码技术,MPEG-4标准出现后,AAC重新集成了其特性,加入了SBR和PS技术。

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

在这里插入图片描述

图中蓝色的AAV HE V2 是误笔,实际上是AAC HE V2

AAC 规格描述

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

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

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

AAC格式

ADIF(Audio Data Interchange Format)

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

相当于AAC数据加了一个头,解码AAC文件时先对头进行解析,拿到所有的参数信息,通过参数进行解码

ADTS(Transport Stream)

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

二者最本质的区别在于,ADIF只可以从头播放,如果播放前进行拖拽进度,或者中间进行拖拽进度,由于找不到头信息,会无法播放,但是ADTS因为每一帧都有同步字,所以拖拽后可以向后寻找头信息进行播放。

ADTS结构

在这里插入图片描述

Audio Object Types

1:AAC Main

2:AAC LC

5:SBR

29:PS

序号从1开始,真正编码中要减一

所以从数据中读出来数字1时要加一,即取2,也就是AAC LC,这是因为解析的数据是经过处理的,而在处理时做了减一操作,所以要在此进行复原。

Sampling Frequecy Index

  • 0:96000 Hz

  • 1:88200Hz

  • 2:64000Hz

  • 3:48000Hz

  • 4:44100Hz

  • 5:32000Hz

  • 6:24000Hz

  • 7:22050Hz

  • 8:16000Hz

  • 9:12000Hz

  • 10:11025Hz

  • 11:8000Hz

  • 12:7350Hz

  • 13:Reserved

  • 14:ReservedHz

  • 15:frequency is written explictly

    工具解析网址:http://www.p23.nl/projects/aac-header/

在这里插入图片描述

这是一个在线解析ADTS头的网址,输入头进行解析。

在实际使用中ADTS这类的头在ffmpeg中有相应的API使用,也可以ffmpeg全线接管

通过ffmpeg命令生成AAC文件

如下命令:

ffmpeg -i xxx.mp4

​ -vn -c:a libfdk_aac

​ -ar 44100 -channels 2 -profile:a aac_he_v2 3.aac

参数:

-i-> 输入多媒体文件,一定要包含音频数据,因为要获取aac,并重新编码

-vn-> v代表vedio,n代表no,-vn过滤视频

-c->代表codec,即编码,a代表audio即使用音频编码器 指定音频编码器libfdk_aac,libfdk_aac是当前众多aac编解码器中性能最好的

-ar->代表代表音频采样率

-channels->代表双声道,即左右声道

-profile->对libfdk_aac编解码器设置一些参数,在profile中指定a即对音频的设置,设置为aac_he_v2,也可以直接设为aac_he_v1、aac

最后输出aac文件名xxx.aac

ffmpeg的音频编解码器参数参考网址:

http://ffmpeg.org/ffmpeg-codecs.html#libfdk_005faac

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值