音视频入门-5-音频编码原理、编码器、ADTS格式
1. 概念
音频压缩技术指的是对原始数字音频信号流(PCM编码)运用的数字信号处理技术。
2. 背景 和 压缩的必要性
研究发现,直接采用PCM码流进行存储和传输存在非常大的冗余度。
以CD为例,其采样率为44.1KHz,量化精度为16比特,则1分钟的立体声音频信号需占约10M字节的存储容量,也就是说,一张CD唱盘的容量只有1小时左右。
事实上,在无损的条件下对声音至少可进行4:1压缩,即只用25%的数字量保留所有的信息,而在视频领域压缩比甚至可以达到几百倍。
3. 注: 消除冗余信息是有损编码
4. 有损编码, 可以采用消除冗余信息的思路
使用傅里叶变换得到频域信息,看着该频域信息图,我们来进行遮蔽效应的概念解释:
划红线处的蓝色音源,威力很大,能把其他频率的信息覆盖,这是遮蔽源。
你可以把这个蓝色的音源理解为一个爱吵架的女生,音调很高,1KHz, 嗓门很大(即声音强度大概在70dB)。
这个女生一扯嗓子,就能把别人的声音遮蔽掉,
那么这个女生扯嗓子时候最容易把谁的声音遮蔽掉呢?
这就需要科学来解释了,上面这张图就是科学规律的总结。
频率相近的三个棕色的音源是最容易被遮蔽掉的音源了,上图也标识出了这些是被遮蔽的声音。
那是不是只要嗓门(声音强度)没这个女生大的音源,都会被覆盖呢?并不是!
上图中红圆圈所示的音源,频率大概在0.25KHz,声音强度超过了10dB, 但声音强度远远不及70dB, 你可以把这理解为一个声音低沉且嗓门也不大的魅力男嗓。
从上图可以看出,该男嗓未处在爱吵架女生声音的遮罩门槛内,
且同时也未处在静音门槛内(一些冰箱、电风扇工作时发出的声音可能处在静音门槛范围内,所以也被遮蔽了),
所以该男嗓的声音强度虽然不及该女生,但是却不会被遮蔽。
这就是频域遮蔽效应的特点了。
在同一个时间点,谁的声音强度小,就会被遮蔽。
既然我们知道存在这个遮蔽效应这条科学规律,我们就可以通过一定的算法分析出哪些声音信息是会被遮蔽的,这就是消除冗余信息,是有损编码的一种实现思路。
5. 无损编码
熵编码是无损编码,具体的编码方式有很多,如下图
哈夫曼编码(Huffman Coding),又称霍夫曼编码,是一种编码方式,哈夫曼编码是可变字长编码(VLC)的一种。
Huffman于1952年提出一种编码方法,该方法完全依据字符出现概率来构造异字头的平均长度最短的码字,
有时称之为最佳编码,一般就叫做Huffman编码(有时也称为霍夫曼编码)。
6. 音频编码过程
7. 常见的音频编解码器
注:Speex包含回音消除功能。
8. AAC编码器介绍
9. ADTS格式头
AAC前面有个数据头,一般是ADTS格式的头。
对于直播系统,一般使用AAC,我们使用的都是ADTS格式。
注意,读出来Audio Object Types值还需要加1,才是对应的类型。
如果读出来Audio Object Types值是1,那么对应的是AAL LC类型。
ADTS头解析网站
PS:
1. 有时候我们无法播放一段AAC数据,可能是缺少了ADTS头信息,这是我们就需要想办法加上这个头信息。
2. 我们在使用ffmpeg时,虽然ADTS这些信息都会被封装在其内部,但是我们需要具备基本的音视频知识,以便更好地解决各类可能出现的麻烦问题。
10.
.
音视频入门-5-音频编码原理、编码器、ADTS格式的更多相关文章
- 音视频入门-14-JPEG文件格式详解
* 音视频入门文章目录 * JPEG 文件格式解析 JPEG 文件使用的数据存储方式有多种.最常用的格式称为 JPEG 文件交换格式(JPEG File Interchange Format,JFIF ...
- 音视频入门-18-手动生成一张GIF图片
* 音视频入门文章目录 * GIF 编码知识 GIF 包含的数据块: 文件头(Header) 逻辑屏幕标识符(Logical Screen Descriptor) 全局颜色表(Global Color ...
- 音视频入门-11-PNG文件格式详解
* 音视频入门文章目录 * PNG 文件格式解析 PNG 图像格式文件由一个 8 字节的 PNG 文件署名域和 3 个以上的后续数据块(IHDR.IDAT.IEND)组成. PNG 文件包括 8 字节 ...
- 音视频入门-07-认识YUV
* 音视频入门文章目录 * YUV & YCbCr 简介 YUV,是一种颜色编码方法.常使用在各个视频处理组件中. YUV 在对照片或视频编码时,考虑到人类的感知能力,允许降低色度的带宽. Y ...
- 音视频入门-01-认识RGB
* 音视频入门文章目录 * RGB 简介 RGB 色彩模式是工业界的一种颜色标准,是通过对红(R).绿(G).蓝(B)三个颜色通道的变化以及它们相互之间的叠加来得到各式各样的颜色的,RGB 即是代表红 ...
- moviepy音视频开发:音频剪辑基类AudioClip
☞ ░ 前往老猿Python博文目录 ░ 一.背景知识介绍 1.1.声音三要素: 音调:人耳对声音高低的感觉称为音调(也叫音频).音调主要与声波的频率有关.声波的频率高,则音调也高. 音量:也就是响度 ...
- 音视频入门-19-使用giflib处理GIF图片
* 音视频入门文章目录 * GIFLIB The GIFLIB project 上一篇 [手动生成一张GIF图片], 自己生成了一张 GIF 动态图 rainbow.gif. 下面,使用 GIFLIB ...
- 音视频入门-20-BMP、PNG、JPG、GIF静态图生成GIF动态图
* 音视频入门文章目录 * 静态图 -> 动态图 前面 [18-手动生成一张GIF图片] 和 [19-使用giflib处理GIF图片] 生成的 GIF 每一帧都是一个颜色,平时用到的 GIF 每 ...
- 堪称教科书级别的Android音视频入门进阶学习手册,开源分享!
概述 随着整个互联网的崛起,数据传递的形式也在不断升级变化,总的流行趋势如下: 纯文本的短信,QQ -> 空间,微博,朋友圈的图片文字结合 -> 微信语音 -> 各大直播软件 -&g ...
- 音视频入门-12-手动生成一张PNG图片
* 音视频入门文章目录 * 预热 上一篇 [PNG文件格式详解]详细介绍了 PNG 文件的格式. PNG 图像格式文件由一个 8 字节的 PNG 文件署名域和 3 个以上的后续数据块(IHDR.IDA ...
随机推荐
- 解决vue.js出现Vue.js not detected错误
第一:在拓展应用的文件夹中找到文件manifest.json,打开并将此处的false改成true. 第二:在vuejs devtool拓展程序的详情页中开启以下两个选项 如果你看到这,恭喜你,看到全 ...
- CF1929B Sasha and the Drawing 题解
CF1929B 题意 给定一个 \(n\times n\) 的正方形,已知正方形最多有 \(4\times n-2\) 条对角线,要求要有至少 \(k\) 条对角线经过至少一块黑色方格,求至少要将几条 ...
- 如何查询MySQL存储的树形结构,层次结构
表定义如下 如果我们需要在表中查询这个树状结构,通过SQL语句,有两种查询方法: 1.通过inner自连接查询,适用于简单的结构 SELECT * FROM course_category AS on ...
- Microsoft Dynamics CRM 插件被限制2分钟超时解决方案
背景: 在隔离模式"沙箱"中运行的插件或自定义工作流活动将有2分钟的硬限制.如果你的插件很复杂,需要超过2分钟,有一些解决方法. CRM on premise (本地版) 选择插件 ...
- 【C3】06 选择器概述
CSS中,选择器用来指定网页上我们想要样式化的HTML元素. CSS选择器有很多种可供使用,所以在选择要样式化的元素时,我们可以做到很精细的地步. 本文和本文的子篇中,我们将会很详细地讲授选择器不同的 ...
- Springboot实现HTML表单from简单的接收信息
HTML< from >元素 from可向Web服务器提交请求 普遍格式: <from action="服务器地址" method="请求方式" ...
- 如何计算两个正太分布的KL散度 —— 正太分布的KL散度 (Kullback-Leibler divergence) 计算
参考: https://blog.csdn.net/int_main_Roland/article/details/124650909 给出实现代码: def get_kl(): mean0, log ...
- 【转载】 softmax_cross_entropy_with_logits中“logits”是个什么意思?
原文地址: https://zhuanlan.zhihu.com/p/51431626 -------------------------------------------------------- ...
- python 音频处理(2)——提取PPG特征之whisper库的使用(2.1)
提取PPG特征之--whisper库的使用(2.1) 1 安装对应的包 方法一(自用): 直接pip即可: pip install openai-whisper 成功后如下图所示 方法二: 当时用了他 ...
- 单链表-18个基本操作代码实现C语言
单链表-18个基本操作代码实现C语言 原文地址:https://www.cnblogs.com/actanble/p/6713434.html 无更改,仅复现 运行后如图,运行软件dev-C++,系统 ...