音视频入门-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 ...
随机推荐
- Day 2 - 分治、倍增、LCA 与树链剖分
分治的延伸应用 应用场景 优化合并 假设将两个规模 \(\frac{n}{2}\) 的信息合并为 \(n\) 的时间复杂度为 \(f(n)\),用主定理分析时间复杂度 \(T(n) = 2 \time ...
- 栈—顺序栈(C实现)
// Code file created by C Code Develop // 顺序栈 #include "ccd.h" #include "stdio.h" ...
- python virtualenv虚拟环境配置与使用
python virtualenv虚拟环境配置与使用 By:赖富玉 QQ:1033553122 概述 python开发过程中,我们可能需要同时开发多款应用,这些应用可能公用同一个版本的Python程序 ...
- ABC348
A link 这道题就先输出整个的\(oox\),再输出剩一个两个的. 点击查看代码 #include<bits/stdc++.h> using namespace std; int n; ...
- 第十二节 JMeter基础-中级地址信息【IF控制器】
声明:本文所记录的仅本次操作学习到的知识点,其中商城IP错误,请自行更改. 背景:提交订单前,我们需要核对一些信息,比如商品信息,收货地址,支付方式等.现在核对一下收货地址信息. 思路: 1.前提条件 ...
- java进行文件搜索的一个小案例
分享一个小demo,可以查询某个文件目录下的某个文件并启动,来自黑马的IO教程 import java.io.File; import java.io.IOException; public clas ...
- hbuilderx打正式包所需的私钥证书的创建方法
现在使用uniapp作为底层框架来开发app应用已经成为了很多公司的事实标准,而uniapp的开发工具hbuilderx云打包的时候,需要私钥证书和证书profile文件. 而且还需要将打包好的ipa ...
- LangChain的LCEL和Runnable你搞懂了吗
LangChain的LCEL估计行业内的朋友都听过,但是LCEL里的RunnablePassthrough.RunnableParallel.RunnableBranch.RunnableLambda ...
- 【HbuilderX】解决苹果手机不能连接Win10问题
从微软商店上下载Itunes 只要这个Itunes能识别Iphone,HbuilderX也可以识别Iphone 如果之前已经装了其他来源下载的Iphone,先卸载掉,然后重启系统安装 另外: 还有一种 ...
- jdk命令行工具系列——检视阅读
jdk命令行工具系列--检视阅读 参考 java虚拟机系列 RednaxelaFX知乎问答 RednaxelaFX博客 jps--虚拟机进程状态工具 jps :(JVM Process Status ...