JoJo的个人博客

记录精彩的程序人生

目录
音视频系统入门4之音频编码原理
/    

音视频系统入门4之音频编码原理

音频压缩

有损压缩

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

压缩的方法是去除采集到的音频冗余信息。所谓冗余信息包括人耳听觉范围外的音频信号以及被屏蔽掉的音频信号

低于20赫兹,高于两万赫兹,去除掉

遮蔽效应,信号的遮蔽可以分为频域遮蔽时域遮蔽

无损编码

熵编码

  • 哈夫曼编码
  • 算数编码
  • 香农编码

音频编码过程

音频编码器

常见的音频编码器

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

其中,AAC在直播系统中应用的比较广泛;OPUS是较新的音频编码器,WebRTC默认使用的是OPUS;固话一般用的是G.711系列

音频编码质量比较

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

AAC延迟较高,不太适合实时的通讯,适合有延迟的直播

AAC编码器介绍

AAC(Advanced Audio Coding)由[Fraunhofer IIS](https://baike.baidu.com/item/Fraunhofer IIS)、杜比实验室AT&T索尼等公司共同开发,目的是取代MP3格式

2000年,MPEG-4标准出现后,AAC重新集成了其特性,加入了SBR技术和PS技术,为了区别于传统的MPEG-2 AAC又称为MPEG-4 AAC

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

  • AAC LC:(Low Complexingty)低复杂度规格,码流是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)

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

ADTS(Audio Data Transport Stream)

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

ADTS头由7/9个字节组成

Audio Object Type

1: AAC Main 2:AAC LC 5: SBR 29: pS

ADTS头参数解析网址

https://www.p23.nl/projects/aac-header/

通过ffmpeg生成AAC数据

ffmpeg -i qq.mp4 -vn -c:a libfdk_aac -ar 44100 -channels 2 -profile:a aac_he_v2 1.aac

参数参考地址

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

如果报错没有找到libfdk-aac库

  1. 安装fdk-aacbrew install fdk-aac
  2. 重新在ffmpeg源码目录下执行./configure 并增加--enable-libfdk-aac参数
  3. make && make install

生成opus

ffmpeg -i qq.mp4 -vn -c:a libopus 1.opus

如果报错没有找到libopus库

  1. 安装opusbrew install opus
  2. 重新在ffmpeg源码目录下执行./configure 并增加--enable-libopus参数
  3. make && make install

标题:音视频系统入门4之音频编码原理
作者:SunnySky
地址:https://www.tianyang.pub/articles/2020/11/17/1605609770821.html

评论