zoukankan      html  css  js  c++  java
  • 音视频入门-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. 

     

     

    .

    /************* 社会的有色眼光是:博士生、研究生、本科生、车间工人; 重点大学高材生、普通院校、二流院校、野鸡大学; 年薪百万、五十万、五万; 这些都只是帽子,可以失败千百次,但我和社会都觉得,人只要成功一次,就能换一顶帽子,只是社会看不见你之前的失败的帽子。 当然,换帽子决不是最终目的,走好自己的路就行。 杭州.大话西游 *******/
  • 相关阅读:
    【Mocha.js 101】Mocha 入门指南
    CSS 中 Font-Family 中英文对照表
    Android Studio中找出不再使用的资源
    Java反射机制实战——字段篇
    python进阶——day02、03面向对象进阶
    python进阶_day01面对对象编程基础
    day05(文件配置命令和远程登录)
    day04(磁盘管理与目录介绍)
    day03(系统启动及常用的Linux命令的基本使用)
    day02(操作系统简介和Linux的安装与常用命令简介)
  • 原文地址:https://www.cnblogs.com/happybirthdaytoyou/p/14257183.html
Copyright © 2011-2022 走看看