FFmpeg入门详解之16:音频编码原理

音频编码

编码

    即压缩编码,其原理是压缩掉冗余的信号,冗余信号是指不能被人耳感知到的信号,包括人耳听觉范围之外的音频信号以及被掩蔽掉的音频信号。

    模拟音频信号转换为数字信号需要经过采样和量化,

    量化的过程被称之为编码,根据不同的量化策略,产生了许多不同的编码方式,

    常见的编码方式有:PCM ADPCM,这些数据代表着无损的原始数字音频信号,添加一些文件头信息,就可以存储为WAV文件了,它是一种由微软和IBM联合开发的用于音频数字存储的标准,可以很容易地被解析和播放。

几个概念

在进一步了解音频处理和压缩之前需要明确如下几个概念:

  • 1)音调:泛指声音的频率信息,人耳的主观感受为声音的低沉(低音)或者尖锐(高音)。

  • 2)响度:声音的强弱。

  • 3)采样率:声音信息在由模拟信号转化为数字信号过程中的精确程度,采样率越高,声音信息保留的越多。

  • 4)采样精度:声音信息在由模拟信号转化为数字信号过程中,表示每一个采样点所需要的字节数,一般为16bit(双字节)表示一个采样点。

  • 5)声道数:相关的几路声音数量,常见的如单声道、双声道、5.1声道。

  • 6)音频帧长:音频处理或者压缩所操作的一段音频信息,常见的是10ms,20ms,30ms。


音频编码的基本原理讲解

1概述

语音编码致力于:降低传输所需要的信道带宽,同时保持输入语音的高质量

语音编码的目标在于:设计低复杂度的编码器以尽可能低的比特率实现高品质数据传输。

2静音阈值曲线

指在安静环境下,人耳在各个频率能听到声音的阈值

FFmpeg入门详解之16:音频编码原理_第1张图片

3临界频带

    由于人耳对不同频率的解析度不同,MPEG1/Audio将22khz内可感知的频率范围,依不同编码层,不同取样频率,划分成23~26个临界频带。下图列出理想临界频带的中心频率与频宽。图中可看到,人耳对低频的解析度较好。

FFmpeg入门详解之16:音频编码原理_第2张图片

4频域上的掩蔽效应

幅值较大的信号会掩蔽频率相近的幅值较小的信号,如下图:

FFmpeg入门详解之16:音频编码原理_第3张图片

5时域上的遮蔽效应

    在一个很短的时间内,若出现了2个声音,SPL(sound pressure level)较大的声音会掩蔽SPL较小的声音。

    时域掩蔽效应分前向掩蔽(pre-masking)和后向掩蔽(post-masking),其中post-masking的时间会比较长,约是pre-masking的10倍。

时域遮蔽效应有助于消除前回音。

FFmpeg入门详解之16:音频编码原理_第4张图片


音频编码基本手段

编码基本手段(1):量化和量化器

基本概念:

  • 量化和量化器:量化是把离散时间上的连续信号,转化成离散时间上的离散信号。

  • 常见的量化器有:均匀量化器,对数量化器,非均匀量化器。

  • 量化过程追求的目标是:最小化量化误差,并尽量减低量化器的复杂度(这2者本身就是一个矛盾)。

常见的量化器的优缺点:

  • (a)均匀量化器:最简单,性能最差,仅适应于电话语音。

  • (b)对数量化器:比均匀量化器复杂,也容易实现,性能比均匀量化器好。

  • (c)非均匀(Non-uniform)量化器:根据信号的分布情况,来设计量化器。信号密集的地方进行细致的量化,稀疏的地方进行粗略量化。

编码基本手段(2):语音编码器

1基本概念

语音编码器分为三种类形:(a)波形编器 、(b)声码器 、(c)混合编码器 。

波形编码器以构造出背景噪单在内的模拟波形为目标。作用于所有输入信号,因此会产生高质量的样值并且耗费较高的比特率。 而声码器 (vocoder)不会再生原始波形。这组编码器 会提取一组参数 ,这组参数被送到接收端,用来导出语音产生模形。声码器语音质量不够好。混合编码器,它融入了波形编码器和声器的长处。

2波形编码器

波形编码器的设计常独立于信号,所以适应于各种信号的编码而不限于语音。

时域编码:

  • a)PCM:pulse code modulation,是最简单的编码方式。仅仅是对信号的离散和量化,常采用对数量化。

  • b)DPCM:differential pulse code modulation,差分脉冲编码,只对样本之间的差异进行编码。前一个或多个样本用来预测当前样本值。用来做预测的样本越多,预测值越精确。真实值和预测值之间的差值叫残差,是编码的对象。

FFmpeg入门详解之16:音频编码原理_第5张图片

  • c)ADPCM:adaptive differential pulse code modulation,自适应差分脉冲编码。即在DPCM的基础上,根据信号的变化,适当调整量化器和预测器,使预测值更接近真实信号,残差更小,压缩效率更高。

频域编码:

          频域编码是把信号分解成一系列不同频率的元素,并进行独立编码。

  • a)sub-band coding:子带编码是最简单的频域编码技术

    是将原始信号由时间域转变为频率域,然后将其分割为若干个子频带,并对其分别进行数字编码的技术。

    它是利用带通滤波器(BPF)组把原始信号分割为若干(例如m个)子频带(简称子带)。将各子带通过等效于单边带调幅的调制特性,将各子带搬移到零频率附近,分别经过BPF(共m个)之后,再以规定的速率(奈奎斯特速率)对各子带输出信号进行取样,并对取样数值进行通常的数字编码,其设置m路数字编码器。将各路数字编码信号送到多路复用器,最后输出子带编码数据流。对不同的子带可以根据人耳感知模型,采用不同量化方式以及对子带分配不同的比特数。

  • b)transform coding:DCT编码

3声码器

  • channel vocoder: 利用人耳对相位的不敏感。

  • homomorphic vocoder:能有效地处理合成信号。

  • formant vocoder: 以用语音信号的绝大部分信息都位于共振峰的位置与带宽上。

  • linear predictive vocoder:最常用的声码器。

4混合编码器

    波形编码器试图保留被编码信号的波形,能以中等比特率(32kbps)提供高品质语音,但无法应用在低比特率场合。声码器试图产生在听觉上与被编码信号相似的信号,能以低比特率提供可以理解的语音,但是所形成的语音听起来不自然。

混合编码器结合了2者的优点:

  • RELP: 在线性预测的基础上,对残差进行编码

        机制为:只传输小部分残差,在接受端重构全部残差(把基带的残差进行拷贝)。

  • MPC: multi-pulse coding,对残差去除相关性,

        用于弥补声码器将声音简单分为voiced和unvoiced,而没有中间状态的缺陷。

  • CELP: codebook excited linear prediction

        用声道预测其和基音预测器的级联,更好逼近原始信号。

  • MBE: multiband excitation,

        多带激励,目的是避免CELP的大量运算,获得比声码器更高的质量。


常见的音频压缩格式

  • 1.WAV编码

    WAV编码是在PCM数据格式的前面加上44字节,分别用来描述PCM的采样率、声道数、数据格式等信息。特点:音质非常好、大量软件都支持。使用场景:多媒体开发的中间文件、保存音乐和音效素材等。

FFmpeg入门详解之16:音频编码原理_第6张图片

  • 2.MP3编码:

    MP3具有不错的压缩比,使用LAME编码的中高码率的MP3文件,听感上非常接近源WAV文件。特点:音质在128Kbps以上表现还不错,压缩比比较高,兼容性好。使用场景:高比特率下对兼容性有要求的音乐欣赏。

  • 3.AAC编码:

    AAC是新一代的音频有损压缩技术,它通过一些附加编码技术(如PS、SBR等),衍生出LC-AAC、HE-AAC、HE-AAC V2三中主要编码格式。特点:在小于128kbps码率下表现优异,且多用于视频中的音频编码。适用场景:128Kbps 码率下的音频编码,多用于视频中的音频轨的编码。

  • 4.Ogg编码:

    Ogg编码音质好、完全免费。可以用更小的码率达到更好的音质,128Kbps的Ogg比192Kbps甚至更高的MP3还要出色。但是目前媒体软件支持上还是不够友好。特点:高中低码率下都有良好的表现,兼容性不够好,流媒体特性不支持。使用场景:语音聊天的音频消息场景。

  • 5.FLAC编码: 

    FLAC中文可解释为无损音频压缩编码。FLAC是一套著名的自由音频压缩编码,其特点是无损压缩。不同于其他有损压缩编码如MP3及AAC,它不会破坏任何原有的音频信息,所以可以还原音乐光盘音质 。2012年以来它已被很多软件及硬件音频产品(如CD等)所支持。特点:无损压缩、压缩率高于普通文件夹压缩格式(ZIP、rar等)。使用场景:高品质音乐等。


音频压缩

本质:消除冗余数据

  • 第一:频谱掩蔽效应:

    人耳所能察觉的声音信号的频率范围为20Hz~20KHz,在这个频率范围以外的音频信号属于冗余信号。

    人耳听觉范围外的音频信号: 20Hz~20KHz

  • 去除人耳听觉频率范围临界附近的值

  • 大声音附近如果有小的声音可以去除

  • 时域屏蔽效应

  • 高声附近50ms内如果声音比较小可以去掉

  • 无损压缩

  • 第二:时域掩蔽效应: 

    当强音信号和弱音信号同时出现时,弱信号会听不到,因此,弱音信号也属于冗余信号。


常见的音频编码器

OPUS、AAC、Vorbis、Speex、iLBC、AMR、G.711等

  • OPUS:

    目前性能最好、质量最高,但是由于时间短,暂时还没有普及,rtmp协议还不支持它。

  • AAC:

     有损压缩算法,目的取缔mp3,压缩率很高、但还能接近原始的质量;

  • MPEG-4标准出现后,加入了SBR技术和PS技术,目前常用规格有AAC LC、AAC HE V1、AAC HE V2;

  • AAC LV:低复杂度,码流128k

  • AAC HE V1:AAC+SBR 分频编码,低频(减少采样率)和高频(增加采样率)分开编码

  • AAC HE V2:AAC+SBR+PS 由于声道间相同的性质很大,所以对于其它声道只要存储一些差异性的特征

  • AAC格式: 

    ADIF-只能从头开始解码,常用于磁盘文件中;

    ADTS 每帧都有一个头信息,可以在音频流的任何位置解码,但是占用比较大。

    AAC编码库:

        Libfdk_AAC > ffmpeg AAC > libfaac > libvo_aacenc

你可能感兴趣的:(音视频,动画)