音频编解码

在数字通信、媒体存储和传输领域,音视频编解码技术起到了至关重要的作用,它能够有效地压缩音频和视频数据,减小存储和传输所需的带宽,并且保持较高的音视频质量。
本文使用C++实现了APP常用的音频编解码算法,源码见 github 项目 AndroidAudioCodec

1.音频编码格式

1.1 常见的音频编码格式

G.711

  1. 概念
    是国际电信联盟ITU-T定制出来的一套语音压缩标准,它代表了对数PCM抽样标准,主要用于电话。
    它利用一个 64Kbps 未压缩通道传输语音讯号。起压缩率为1:2, 即把16位数据压缩成8位
  2. 有两种编码方式
    u-law 主要运用于北美和日本
    a-law 主要运用于欧洲和世界其他地区
  3. 特点
    采样频率:8000 Hz
    采样位数:16 bit
    压缩率:2倍
    信息量/压缩速率:64kbps

G.723.1

  1. 概念
    G.723是ITU-T在1996年制订成型的一种多媒体语音编解码标准。以8kHz的速率采样,每秒可以对5.3或6.3千位的数据进行压缩,编码在30毫秒的帧中完成。
  2. 特点
    采样频率:8000 Hz
    压缩率:12倍

MP3(MPEG Audio Layer3)

  1. 概念
    MP3是利用MPEG Audio Layer 3的技术,将音乐以1:10甚至1:12 的压缩率,压缩成容量较小的file,换句话说,能够在音质丢失很小的情况下把文件压缩到更小的程度。>而且还非常好的保持了原来的音质。
    2. 压缩率:10~12倍
  2. 优点:压缩比高,适合用于互联网上的传播
  3. 缺点: MP3 在 128KBitrate 及以下时,会出现明显的高频丢失

AAC(Advanced Audio Coding/高级音频编码)

  1. 概念
    一种专为声音数据设计的文件压缩格式,与MP3不同,它采用了全新的算法进行编码,更加高效,具有更高的“性价比”。利用AAC格式,可使人感觉声音质量没有明显降低aac标志的前提下,更加小巧。AAC属于有损压缩的格式,与时下流行的APE、FLAC等无损格式相比音质存在“本质上”的差距。加之,传输速度更快的USB3.0和16G以上大容量MP3正在加速普及,也使得AAC头上“小巧”的光环不复存在了。
  2. 优点:支持多种音频声道组合,提供优质的音质。

WMA(Windows Media Audio)

  1. 概念
    是微软力推的一种音频格式。WMA格式是以减少数据流量但保持音质的方法来达到更高的压缩率目的,其压缩率一般可以达到1:18,生成的文件大小只有相应MP3文件的一半。
  2. 压缩率:10~12倍
  3. 缺点:在高比率的渲染能力低下,同音源的一个320KBPS的MP3与比较192KBPS的WMA相比,音质和渲染力很容易分别出是前者较优。因为:
    当 Bitrate 小于 128K 时, WMA 最为出色且编码后得到的音频文件很小。
    当 Bitrate 大于 128K 时, WMA 音质损失过大。
  4. 优点:WMA还可以通过DRM(Digital Rights Management)方案加入防止拷贝,或者加入限制播放时间和播放次数,甚至是播放机器的限制,可有力地防止盗版。

ATRAC

  1. 概念
    ATRAC压缩技术主要是利用了人耳的蔽遮效应,在心理声学原理上,在进行音频录入的同时,有许多外部的频段同时也会被录入,当人耳同时听到两个不同频率、不同音量的声音时,音量较小的低频及音量较小的高频连同不为人耳所察觉的频段信号都会被自动减弱或忽略不予记录,因此又可以称为适应性变换声码技术,由于近年來编码压缩技术(ATRAC的版本)越來越成熟,所以经过编码解码过程后的声音仍直逼CD,
    ATRAC将16比特44.1KHz的数字信号以频率响应轴分成52个区段(在低频时分割较细而在高频时分割较粗),根据声音心理学的原理,将声音信号中人耳听不到和对人的听力影响不大的信息给剔除出去而达到缩小声音文件的目的。利用这种原理,ATRAC可以将录音的资料量压缩为原来的五分之一(即压缩比为1:5)。
  2. 压缩率:5倍
  3. 特点:自动减弱或者忽略外部频段的杂音

PLAC

  1. 概念
    FLAC与MP3不同,MP3是音频压缩编码,但FLAC是无损压缩,也就是说音频以FLAC编码压缩后不会丢失任何信息,将FLAC文件还原为WAV文件后,与压缩前的WAV文件内容相同OGG

OGG

  1. 概念
    OGG格式的全称应该是OGG Vobis。它是一种新的音频压缩格式,类似于MP3等现有的音乐格式。但有一点不同的是,它是完全免费、开放和没有专利限制的。OGG Vobis有一个很出众的特点,就是支持多声道,
  2. 特点
    OGG Vobis在压缩技术上比MP3好,可以对所有的声道进行编码,而不是MP3只能编码2个声道。多声道音乐的兴起,给音乐欣赏带来了革命性的变化,尤其在欣赏交响时,会带来更多临场感。这场革命性的变化是MP3无法适应的。在以后的播放技术>不断提高以后,而且人们对音质要求不断提高,Ogg的优势将更加明显。
  3. 优点:完全免费。开放没有专利限制。支持多声道

APE

  1. 概念
    APE的本质,其实它是一种无损压缩音频格式。庞大的WAV音频文件可以通过Monkey”s Audio这个软件进行“瘦身”压缩为APE。有时候它被用做网络音频文件传输,因为被压缩后的APE文件容量要比WAV源文件小一半多,可以节约传输所用的时间。更重要的是,通过Monkey”s Audio解压缩还原以后得到的WAV文件可以做到与压缩前的源文件完全一致,.。所以APE被誉为“无损音频压缩格式”
  2. 特点
    无损压缩

1.2 各种编码比较

种类 压缩比 支持声道 优点 缺点
MP3 10~12 双声道 压缩比高,适合用于互
联网上的传播
在128KBitrate及以下时,
会出现明显的高频丢失
WMA 10~12 当Bitrate小于128K时,
WMA最为出色且编码
后得到的音频文件很小
当Bitrate大于128K时,
WMA音质损失过大
OGG 多声道 OGG Vobis在压缩技术
上比MP3好,而且它的多
声道
AAC 18~20 多声道 支持多种音频声道组合,
提供优质的音质
与时下流行的APE、FLAC等
无损格式相比音质存在“本质
上”的差距。加之,传输速度
更快的USB3.0和16G以上大
容量MP3正在加速普及,也
使得AAC头上“小巧”的光环
不复存在了
APE 无损压缩 用做网络音频文件传输,
因为被压缩后的APE文件
容量要比WAV源文件小
一半多,可以节约传输
所用的时间
FLAC 2
WAV 无损压缩 单声道
立体声
WAVE文件作为最经典的
Windows多媒体音频格式

2.编解码器的使用

已实现的编解码算法:G711_A_LAW、G711_U_LAW、G723。
在Android端使用C++实现,录音后选择编码方式进行编码,然后解码播放。

2.1 实现G711和G723编解码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
/**
* g711编码 (编码后长度为1/2)
*
* @param in 输入
* @param out 输出
* @param inLen 输入长度
* @param type 0:G711_A_LAW, 1:G711_U_LAW
* @return 输出长度
*/
public static native int g711Encode(byte[] in, byte[] out, int inLen, int type);

/**
* g711解码 (解码后长度为2倍)
*
* @param in 输入
* @param out 输出
* @param inLen 输入长度
* @param type 0:G711_A_LAW, 1:G711_U_LAW
* @return 输出长度
*/
public static native int g711Decode(byte[] in, byte[] out, int inLen, int type);

/**
* g723编码 (编码后长度为1/5.3)
*
* @param in 输入
* @param out 输出
* @param inLen 输入长度
* @return 输出长度
*/
public static native int g723Encode(byte[] in, byte[] out, int inLen);

/**
* g723解码 (解码后长度为5.3倍)
*
* @param in 输入
* @param out 输出
* @param inLen 输入长度
* @return 输出长度
*/
public static native int g723Decode(byte[] in, byte[] out, int inLen);

源码见:
https://github.com/yadiq/AndroidAudioCodec/blob/main/app/src/main/jni_audio_codec/main.c

2.2 效果图

AudioCodec2.jpg

3.相关文章

数字音频基础知识

音频编码原理

0条搜索结果。