原因:由于需要对比aac编码和libfdk_aac编码后音频质量,故在此简单介绍一下libfdk_aac.

音频简单介绍:

音频的主要几个参数为采样率,通道个数,通道类型,样本类型,码率等.我们的耳朵听到的频率间隔为20-20KHZ,我们的发声频率为100-3KHZ左右,所以可以看出如果只是单纯的采集发声频率可以使用8KHZ就可以,采样率必须是输入信号最高频率的2倍以上,这样才会最大可能的保存信号信息.故我们的听到的样本的采样率一般都为44.1KHZ及以上.

音频的存储格式有wmv,mp3,m4a,mp4,wma,avi等.既然有存储那么就会涉及到编码方式,编码又分为有损压缩和无损压缩,有损压缩主要有AAC,MP3,WMA,MP3Pro等,无损压缩主要有FLAC,ALAC等.目前有损压缩一般使用的是mp3和aac,AAC又可以扩展为AAC-LC和AAC-HE-V1,AAC-HE-V2等.

AAC:Advanced Audio Coding(高级音频编码)主要为了替代mp3编码, 定义在MPEG-4的第三部分.对于音频使用.m4a扩展名存储.FFmpeg目前支持AAC-LC编码和HE-AAC(V1/V2)编码.而HE-AAC的实现是在libfdk_aac模块中.

FDK_AAC介绍:

可以理解为当前最高质量的AAC编码.编码模式分为CBR和VBR.

采样率支持:

样本类型:可以看出只支持16bit pcm输入.

CBR模式:

设置目标码率,当样本之间差异较小时,可以通过该方法更好地控制文件大小,设置每个通道为64kbps.立体声为128kbps,以此类推。使用参数-b

转换音频文件到AAC保存为m4a

ffmpeg -i input.wav -c:a libfdk_aac -b:a 128k output.m4a

VBR模式:

指定目标质量,而不是码率,质量从1到5由低到高.使用参数-vbr,vbr模式下大致给出了每个通道对应的码率,从下图可以看出HE和HEV2适用于低码率.

关于不同的编码类型对应的采样率和码率如下,可以看出HE-AAC-V2只适用于双声道.而高码率下则还是AAC-LC优势更明显.

上图中SBR:spectral Band Replication(频段复制),简单来说就是之前的编码方式会存在保存低频信号而损失高频信号,而通过SBR技术实现了低频和高频分开编码,故可以减少音频损失.PS:parametric stereo(参数立体声)由于双声道时会存在相似性,故可以通过一些参数来记录差异,从而减少保存数据量.

总结:在音频编码时一般通用为mp3或者aac,而由于iphone中的播放器对.m4a文件的完全支持,故在iphone中大多数使用到了aac编码,而由于ffmpeg自带的aac编码效果不够理想.故需要使用fdk-aac进行编码.而fdk-aac包含AAC-LC和HE-AAC,但是HE-AAC又和硬件支持绑定严重,故HE-AAC存在缺陷.

libfdk_aac介绍相关推荐

  1. libfdk_aac编码AAC

    目录 前言 1.AAC介绍 2.AAC 格式 一.libfdk_aac介绍 二.libfdk_aac主要API介绍 1.AACENC_ERROR aacEncOpen(HANDLE_AACENCODE ...

  2. swr_get_out_samples和swr_convert,比特率重采样

    音频三元组:通道数(channels,比特率(sample_rate),位深(sample_fmt) 这三个元素转换一个或以上,就叫作重采样. 这里主要讨论48000->44100可能会犯得错误 ...

  3. 音视频篇 - FFmpeg 的介绍和使用

    本文章是阅读<音视频开发进阶指南基于android与ios平台的实践>一书的学习笔记. 目录: FFmpeg 的介绍 FFmpeg Android 编译库 FFmpeg 的结构 FFmpe ...

  4. libfdk_aac解码AAC

    目录 一.前言 二.libfdk_aac节解码API介绍 三.libfdk_aac节解码示例 四.libfdk_aac节解码框架 <libfdk-aac实现AAC解码代码实现>链接: ht ...

  5. 简单介绍互联网领域选择与营销方法

    在我看来,互联网领域的选择是"安家",而营销方法的不同则表现了"定家"的方式多种多样,只有选对了,"家"才得以"安定". ...

  6. 常用开源协议介绍以及开源软件规范列表

    1. 开源协议介绍 GPL: General Public License,开源项目最常用的许可证,衍生代码的分发需开源并且也要遵守此协议.该协议也有很多变种,不同变种要求会略微不同. MPL: MP ...

  7. python:Json模块dumps、loads、dump、load介绍

    20210831 https://www.cnblogs.com/bigtreei/p/10466518.html json dump dumps 区别 python:Json模块dumps.load ...

  8. pytorch学习笔记(九):PyTorch结构介绍

    PyTorch结构介绍 对PyTorch架构的粗浅理解,不能保证完全正确,但是希望可以从更高层次上对PyTorch上有个整体把握.水平有限,如有错误,欢迎指错,谢谢! 几个重要的类型 和数值相关的 T ...

  9. Python字节码介绍

    了解 Python 字节码是什么,Python 如何使用它来执行你的代码,以及知道它是如何帮到你的. 如果你曾经编写过 Python,或者只是使用过 Python,你或许经常会看到 Python 源代 ...

  10. Pytest - 使用介绍

    1. 概述 pytest是一个非常成熟的全功能的Python测试框架,主要特点有以下几点: 1.简单灵活,容易上手,文档丰富: 2.支持参数化,可以细粒度地控制要测试的测试用例: 3.能够支持简单的单 ...

最新文章

  1. html后缀的网页怎么复制,如何将HTML格式的文本从Chrome浏览器扩展复制到剪贴板上?...
  2. FFT [TPLY]
  3. 用python替换文件中内容的两种方法
  4. linux强行卸载qt,Linux下卸载QT SDK
  5. better-scroll 与 Vue 结合
  6. English trip -- VC(情景课)4 A Health
  7. TensorFlow可以“预装”数据集了,新功能Datasets出炉
  8. ubuntu装机并设置远程连接
  9. 深度学习2.0-19.随机梯度下降之可视化与实战
  10. 大咖说:Java的2017年小惊喜和2018年大展望
  11. html5 随机抽奖,jQuery+H5按空格键随机抽奖代码
  12. VMware安装和卸载时出现无法访问你试图使用的功能所在的网络位置该怎么办(Windows Installer CleanUp)
  13. NOI2015 小园丁与老司机
  14. 关于输入非负数求相加之和的程序:
  15. win10定时开机(Win10定时开机关机)
  16. 如果你想成功,就要用积极乐观的态度看一切。
  17. 图片怎么转换为jpg格式的?照片如何在线转格式?
  18. html5 css背景图片满,css background-size与背景图片填满div
  19. 【项目难点】实现微信小程序中点击头像更换头像
  20. 布朗大学计算机专业怎么样,恭喜P同学“跨专业”斩获布朗大学-计算机科学硕士!...

热门文章

  1. asus路由器无线桥接模式设置
  2. -O1 -O2 -O3 优化的原理是什么?
  3. 网站被黑该怎么处理和解决
  4. 【中英】【吴恩达课后编程作业】Course 4 -卷积神经网络 - 第四周作业
  5. 设计模式四:用一个生产手机的简单例子说清楚工厂模式
  6. linux系统怎样进入图形界面,Linux系统中如何切换图形界面与字符界面
  7. 小熊学Java第六天
  8. 北京大学计算机学院王锐,王锐-北京航空航天大学计算机学院
  9. 特征选择 | MATLAB实现NCA(近邻成分分析)特征选择
  10. java processing_1 Processing入门简介