**

音频的定义

**

音频:能被人体感知的声音频率,定义为20-20000HZ。声音是通过物体振动产生的声波。是通过介质(空气或固体、液体)传播并能被人或动物听觉器官所感知的波动现象。

介绍:模拟信号是可以听见的声音经过音频线或话筒的传输都是一系列的模拟信号,模拟信号是可以听见的。而数字信号就是用一堆数字记号(二进制1和0)来记录声音,而不是用物理手段来保存信号,实际上我们听不到数字信号。
    比较一下模拟时代的录音制作与数码时代的区别:模拟时代是把原始信号以物理方式录制到磁带上(当然在录音棚里完成),然后加工、剪接、修改,最后录制到磁带、LP等广大听众可以欣赏的载体上。这一系列过程全是模拟的,每一步都会损失一些信号,到了听众手里自然是差了好远,更不用说什么HI-FI(高保真)了。数码时代是第一步就把原始信号录成数码音频资料,然后用硬件设备或各种软件进行加工处理,这个过程与模拟方法相比有无比的优越性,因为它几乎不会有任何损耗。对于机器来说这个过程只是处理一下数字而已,当然丢码的可能性也有,但只要操作合理就不会发生。最后把这堆数字信号传输给数字记录设备如CD等,损耗自然小很多。
  
**

PCM整理

**

简介

PCM:又称脉冲编码调制。人耳听到的是模拟信号,**PCM是把声音从模拟信号转化为数字信号的技术。**原理是用一个固定的频率对模拟信号进行采样,采样后的信号在波形上看就像一串连续的幅值不一的脉冲(脉搏短暂起伏的电冲击),把这些脉冲的幅值按一定的精度进行量化,这些量化后的数值被连续的输出、传输、处理或记录到存储介质中,所有这些组成了数字音频的产生过程(抽样、量化、编码三个过程)。
描述PCM数据的6个参数:

  1. Sample Rate : 采样频率。8kHz(电话)、44.1kHz(CD)、48kHz(DVD)。
  2. Sample Size : 量化位数。通常该值为16-bit。
  3. Number of Channels : 通道个数。常见的音频有立体声(stereo)和单声道(mono)两种类型,立体声包含左声道和右声道。另外还有环绕立体声等其它不太常用的类型。
  4. Sign : 表示样本数据是否是有符号位,比如用一字节表示的样本数据,有符号的话表示范围为-128 ~ 127,无符号是0 ~ 255。
  5. Byte Ordering : 字节序。字节序是little-endian还是big-endian。通常均为little-endian。字节序说明见第4节。
  6. Integer Or Floating Point : 整形或浮点型。大多数格式的PCM样本数据使用整形表示,而在一些对精度要求高的应用方面,使用浮点类型表示PCM样本数据。

**

PCM数据格式

**
如果是单声道的音频文件,采样数据按时间的先后顺序依次存入(有的时候也会采LRLRLR方式存储,只是另一个声道的数据为0),如果是双声道的话就按照LRLRLR的方式存储,存储的时候与字节序有关。big-endian模式如下图所示:


**

字节序

**
谈到字节序的问题,必然牵涉到两大CPU派系。那就是Motorola的PowerPC系列CPU和Intel的x86系列CPU。PowerPC系列采用big endian方式存储数据,而x86系列则采用little endian方式存储数据。那么究竟什么是big endian,什么又是little endian?

big endian是指低地址存放最高有效字节(MSB,Most Significant Bit),而little endian则是低地址存放最低有效字节(LSB,Least Significant Bit)。

下面用图像加以说明。比如数字0x12345678在两种不同字节序CPU中的存储顺序如下所示:

Big Endian

低地址 高地址

----------------------------------------------------------------------------->

| 12 | 34 | 56 | 78 |

Little Endian

低地址 高地址

----------------------------------------------------------------------------->

| 78 | 56 | 34 | 12 |

所有网络协议都是采用big endian的方式来传输数据的。所以也把big endian方式称之为网络字节序。当两台采用不同字节序的主机通信时,在发送数据之前都必须经过字节序的转换成为网络字节序后再进行传输。

采样频率、量化精度(采样位数)和声道数

采样频率是设备一秒钟内对模拟信号的采样次数,在主流的采集卡上分为:(8Khz的电话采样率就可以达到人的对话程度)

22.05KHz:无线电广播;
44.1KHz:音频 CD,MP3等;
48KHz:miniDV、数字电视、DVD、电影和专业音频。

人耳能够感觉到的最高频率为20KHz,要满足人耳的听觉要求,则需要每秒进行40K次的采样,即40KHz。常见的CD采样率为44.1KHz。
采样位数比如8bit(现在少见)、16bit(常用)和24bit,指的是描述数字信号所使用的位数。
声道数:声音在录制或播放时在不同空间位置采集或回访的相互独立的音频信号。
单声道 采样数据为8位的短整数(short);
双声道 采样数据为16位的证书,(int),高八位(左声道)和低八位(右声道)分别代表两个声道。

[时长]s * [采样率]Hz * [采样位数]bit * [声道数] / 8 = [文件大小]byte
某音频信号是采样率为8kHz、声道数、位宽为16bit,时长为1s,则音频数据的大小为:
1 * 8000 * 16 *2 = 256000 bit / 8 = 32000 byte / 1024 = 31.25 KB(双声道)

**

音频帧

**
音频和视频不一样,视频每一帧都是一张图像,音频数据是流式的,不同的编码格式各自不同的编码标准,拿PCM和MP3做一个对比。PCM因为没有压缩,根据采样率位宽等数据可以得到每秒的音频数据,并不需要帧的概念;MP3是因为压缩后信息比较多,则有了类似H264的帧概念,每一个帧都有帧头。

MP3原理

**

录播过程

**
播放音乐时,应用程序从存储介质中读取音频数据(MP3、WMA、AAC),进过解码后,最终送到音频驱动程序中的就是PCM数据,反过来,在录音是,音频驱动不停地把采样所得到的PCM数据送回给应用程序,有应用程序完成压缩、存储等任务。所以,音频驱动的两大核心任务就是:
playback:如何把用户空间的应用程序发货来的PCM数据,转化为人耳可以辨别的模拟音频
capture:把mic拾取得到的模拟信号,经过采样、量化,转化为PCM信号送回给用户空间的应用程序。

**

G711整理

**
g711是一种由国际电信联盟制定的一套语音压缩标准,主要用于电话语音通信,而人声最大频率一般在3.4kHz,所以只要以8k的采样频率对人声进行采样,就可以保证完全还原原始声音。
g711的内容是将一个13bit或14bit的样本编码成一个8bit的样本。
g711标准主要分两种压缩方法:a-law和mu-law,

a-law:将一个13bit的pcm样本压缩成一个8bit的pcm样本。

mu-law:将一个14bit的pcm样本压缩成一个8bit的pcm样本。

**

AAC

**
1:AAC解码整体流程简述

在主控模块开始运行后,主控模块将AAC比特流的一部分放入输入缓冲区,通过查找同步字得到一帧的起始,找到后,根据ISO/IEC 13818-7所述的语法开始进行Noisless Decoding(无噪解码),无噪解码实际上就是哈夫曼解码,通过反量化(Dequantize)、联合立体声(Joint Stereo),知觉噪声替换(PNS),瞬时噪声整形(TNS),反离散余弦变换(IMDCT),频段复制(SBR)这几个模块之后,得出左右声道的PCM码流,再由主控模块将其放入输出缓冲区输出到声音播放设备。

2:主控模
主控模块的主要任务是操作输入输出缓冲区,调用其它各模块协同工作。其中,输入输出缓冲区均由DSP控制模块提供接口。输出缓冲区中将存放的数据为解码出来的PCM数据,代表了声音的振幅。它由一块固定长度的缓冲区构成,通过调用DSP控制模块的接口函数,得到头指针,在完成输出缓冲区的填充后,调用中断处理输出至I2S接口所连接的音频ADC芯片(立体声音频DAC和DirectDrive耳机放大器)输出模拟声音。
原AAC详解
详AAC详解

音频编码(PCM、G711A、G711U、AAC)理解相关推荐

  1. FFmpeg音频编码 ---- pcm转aac(使用新版ffmpeg API,亲测可用)

    /** * @projectName 08-01-encode_audio * @brief 音频编码 * 从本地读取PCM数据进行AAC编码 * 1. 输入PCM格式问题,通过AVCodec的sam ...

  2. FFmpeg简单使用:音频编码 ---- pcm转aac

    基本流程  函数说明 avcodec_find_encoder:根据指定的AVCodecID查找注册的编码器. avcodec_alloc_context3:为AVCodecContext分配内存. ...

  3. c++之PCM G711A G711U源码实现

    系列音视频指南 文章目录 系列音视频指南 前言 一.PCM是什么? 二.G711是什么? G711 A-LAW G711 U-LAW 三.源码分析 1.PCM->G711A 2.G711A-&g ...

  4. 【Android RTMP】音频数据采集编码 ( 音频数据采集编码 | AAC 高级音频编码 | FAAC 编码器 | Ubuntu 交叉编译 FAAC 编码器 )

    文章目录 安卓直播推流专栏博客总结 一. 音频数据采集.编码 二. AAC 高级音频编码 三. FAAC 编码器 四. Ubuntu 18.04.4 交叉编译 FAAC 编码器 安卓直播推流专栏博客总 ...

  5. AAC(高级音频编码)帧格式及编码介绍

    参考资料: AAC以adts格式封装的分析:http://wenku.baidu.com/view/45c755fd910ef12d2af9e74c.html aac编码介绍:http://wenku ...

  6. 音频编码分析:AAC、MP3、Opus

    目录 AAC 一.定义 二.特点 1.优点 2.缺点 三.应用 MP3 一.定义 二.特点 1.优点 2.缺点 三.应用 OPUS 一.定义 二.特点 1.优点 2.缺点 三.应用 AAC 一.定义 ...

  7. 海康摄像头音频编码获取

    画面合成中,需要音频数据推送(Pusher),经过大量测试发现, 海康摄像头分为2种: 1.视频服务器类,音频编码格式为G711U,在海康客户端软件中不能配置 2.摄像头类,音频编码包含G711A,G ...

  8. 音频相关pcm,增益

    PCM音频编码 PCM音频编码 - 简书 什么是分贝 (dB)? 20db代表的是声音的增益,它的数值是以对数的形式表示的.在音频工程中,db是一种常用的度量单位,用于描述声音的音量.音频信号的增减和 ...

  9. RTP载荷G711A/G711U/PCM/G726音频

    <音视频应用开发系列文章目录> 编码RTP over G711A/G711U/PCM音频的大致过程 1.添加RTP12字节的头 2.添加payload(G711A/G711U/PCM/G7 ...

最新文章

  1. Allegro如何导出生产文件
  2. 连遭主流社交应用抛弃,是时候宣判黑莓系统死刑了
  3. DOM-1 DOM初探、JS对象、XML、幻灯片案例展示
  4. Sort HDU5884(二分+多叉哈夫曼树)
  5. 10.傅里叶变换——更正式的傅里叶变换,频谱,局限性,离散傅里叶变换_4
  6. 关于 HDFS Append
  7. Spring+Spring Boot+Mybatis框架注解解析
  8. JavaScript 虽火,但不要轻易去追随!
  9. vue-cli+webpack在生成的项目中使用bootstrap的方法
  10. http协议、cookie与session介绍
  11. mybatis批量导入
  12. 让Win7系统下的硬盘不在狂闪的诀窍
  13. 嵌入式系统概论-考试总结
  14. 数组过滤filter()方法
  15. IOS app蓝牙连接硬件设备 自动断开问题
  16. 信息系统安全研究的内容包括哪些?
  17. zigzag扫描matlab,Zigzag逆扫描
  18. python中iloc切片_Dataframe选择行列loc,iloc,切片,布尔索引,条件判断等
  19. Liberal Event Extraction and Event Schema Induction
  20. 密信零信任安全解决方案

热门文章

  1. 17计算机七班班级活动,2017班级主题活动方案设计
  2. SDN之旅—mininet(在Windows系统上)安装
  3. 浏览器屏蔽百度推广广告
  4. java文本框双击可编辑_JS实现双击内容变为可编辑状态
  5. [BZOJ4784][UOJ290][ZJOI017]仙人掌-树形DP
  6. 07.合成复用原则(Composite/Aggregate Reuse Principle,CARP)
  7. linux系统1060的显卡驱动打不上,ubuntu14.04+GTX1060 重新安装显卡驱动
  8. 录音转文字的app哪个好用?来试试这几个宝藏软件
  9. 硬盘柱面损坏怎么办_硬盘扇区损坏怎么办
  10. python中如何打开csv文件_Python如何读取csv文件