FFmpeg官方文档之————先进音频编码(AAC)
先进音频编码(AAC)的后继格式到MP3,和以MPEG-4部分3(ISO / IEC 14496-3)被定义。它通常用于MP4容器格式; 对于音乐,通常使用.m4a扩展名。第二最常见的用途是在MKV(Matroska)文件内,因为它比MP4更好地支持嵌入式基于文本的软字幕。本指南中的示例将使用扩展MP4和M4A。
FFmpeg的可支持两个AAC-LC编码器(AAC&libfdk_aac)和一个HE-AAC(V1 / 2)编码器(libfdk_aac)。的许可证libfdk_aac不与GPL兼容,因此GPL不允许含有不兼容的代码的二进制文件的分发时也被包含GPL许可的代码。因此,此编码器已被指定为“非自由”,您不能下载支持它的预构建的ffmpeg。这可以通过解决编译FFmpeg的自己。
libfdk_aac
Fraunhofer FDK AAC编解码器库。这是目前使用ffmpeg的最高质量的AAC编码器。ffmpeg的要求要与配置--enable-libfdk-AAC(另外--enable-nonfree的,如果您还使用--enable-GPL)。但要注意,它默认为约14kHz的(低通滤波器的细节)。如果您想保留更高的频率,使用-cutoff 18000。只有在需要时才将数字调整到频率上限; 记住,更高的限制可能可听见地降低总体质量。
恒定比特率(CBR)模式
这些设置针对特定的比特率,样本之间的变化较小。它可以更好地控制文件大小,并且与HE-AAC配置文件兼容。作为经验法则,对于可听的透明度,对于每个通道使用64kb / s(因此对于立体声为128kb / s,对于5.1环绕声为384kb / s)。设置与比特率-b:一个选项。
在M4A(MP4)容器中将音频文件转换为AAC:
ffmpeg -i input.wav -c:a libfdk_aac -b:a 128k output.m4a
转换视频的5.1环绕声音频,只留下视频:
ffmpeg -i input.mp4 -c:v copy -c:a libfdk_aac -b:a 384k output.mp4
转换的视频与libx264,对一个700MB(= 5734400kb)CD-ROM安装一个90分钟的电影,缩混音频两个通道(Windows用户应该使用的目标NUL而不是的/ dev / null的):
ffmpeg -y -i input.mp4 -c:v libx264 -b:v 933k -preset:v veryfast -pass -an / dev / null && \
ffmpeg -i input.mp4 -c:v libx264 -b:v 933k -preset:v veryfast -pass \
-ac -c:a libfdk_aac -b:128k output.mp4
可变比特率(VBR)模式
靶向质量,而不是一个特定的比特率。1是最低质量,5是最高质量。设置与该VBR水平-vbr标志。
VBR模式大致给出了每通道(以下比特率的详细信息):
| VBR | kbps /信道 | AOT |
| 1 | 20-32 | LC,HE,HEv2 |
| 2 | 32-40 | LC,HE,HEv2 |
| 3 | 48-56 | LC,HE,HEv2 |
| 4 | 64-72 | LC |
| 5 | 96-112 | LC |
HE比特率将低得多。
在M4A(MP4)容器中将音频文件转换为AAC:
ffmpeg -i input.wav -c:a libfdk_aac -vbr output.m4a
仅转换视频的音频:
ffmpeg -i input.mp4 -c:v copy -c:a libfdk_aac -vbr output.mp4
转换与视频libx264和音频缩混到两个渠道:
ffmpeg -i input.mp4 -c:v libx264 -crf -preset:v veryfast \
-ac -c:a libfdk_aac -vbr output.mp4
高效率AAC
这是针对低比特率(版本1和版本2)定制的一对AAC配置文件。HE-AAC版本1适合低于64kb / s(立体声音频)下降到约48kb / s的比特率,而HE-AAC版本2适用于低至32kb / s的比特率(同样,对于立体声)。
注意: HE-AAC版本2只处理立体声。如果您有单声道,或想要下混音为单声道,请使用HE-AAC版本1。
不幸的是,可以播放AAC-LC(默认配置文件的许多设备libfdk_aac)根本无法起到HE-AAC的任一版本,所以这是不推荐的环绕声音频,通常需要与这样的硬件播放器兼容。如果你只是打算在电脑上播放,或者你确定你的硬件播放器支持HE-AAC,你可以针对版本1的比特率为160kb / s,对于版本2的比特率为128kb / s。 ,实验看看什么对你的耳朵有用。
HE-AAC版本1
ffmpeg -i input.wav -c:a libfdk_aac -profile:aac_he -b:64k output.m4a
HE-AAC版本2
ffmpeg -i input.wav -c:a libfdk_aac -profile:aac_he_v2 -b:a 32k output.m4a
本地FFmpeg的AAC编码
原生FFmpeg AAC编码器。这是目前第二高质量的AAC编码器可用于FFmpeg,不需要像这里描述的其他AAC编码器的外部库。这是默认的AAC编码器。
注意: -strict实验(或-strict -2)以前需要这种编码器中,但它是不再试验和这些选项是不必要的,因为2015年12月5日。
例如使用-b:a
ffmpeg -i input.wav -c:a aac -b:a 160k output.m4a
例如使用-q:a
ffmpeg -i input.wav -c:a aac -q:a 2 output.m4a
有效范围为-q:一个是0.1-2左右。这个VBR是实验性的,并且可能获得比CBR更差的结果。
不推荐使用/取出编码器
libfaac
免费软件高级音频编码器,该库的支持已被删除。
libvo_aacenc
视龙AAC编码库。该库的支持已被删除。使用原生FFmpeg编码器:它提供更好的质量和支持超过2个通道。
libaacplus
AAC +编码库,支持该库已被删除。使用 libfdk_aac不是为HE-AAC:它在所有码率一贯更好。
元数据
您可以向本指南的任何示例添加元数据:
ffmpeg -i input ... -metadata author =“FFmpeg Bayou Jug Band”-metadata title =“Decode my Heart(Let's Mux)”output.mp4
渐进式下载
默认情况下,MP4 muxer在音频流('mdat'atom)之后的文件末尾写入'moov'原子。这导致用户需要在可以进行播放之前完全下载文件。将此moov原子重定位到文件的开头可以方便在客户端完全下载文件之前回放。
你可以用做-movflags +的fastStart选项:
ffmpeg -i input.wav -c:a libfdk_aac -movflags + faststart output.m4a
您也可以在现有MP4 / M4A文件上使用此选项。由于音频的仅仅是数据流复制有重新编码没有发生,只是重新混流,等于是没有质量损失:
ffmpeg -i input.m4a -c:a copy -movflags + faststart output.m4a
常见问题
哪个编码器提供最好的质量?
对于AAC-LC:libfdk_aac > Native FFmpeg AAC encoder (aac).
对于HE-AAC你有一个选择:libfdk_aac。
我应该使用AAC-LC还是HE-AAC?
如果您需要低音频比特率,例如≤32kbs /通道,那么HE-AAC将值得考虑,如果您的播放器或设备可以支持HE-AAC解码。由于较少的处理,任何较高的可能从AAC-LC获益更多。如果有疑问,使用AAC-LC。所有支持HE-AAC的玩家也支持AAC-LC。
FFmpeg官方文档之————先进音频编码(AAC)的更多相关文章
- 流媒体技术学习笔记之(六)FFmpeg官方文档先进音频编码(AAC)
先进音频编码(AAC)的后继格式到MP3,和以MPEG-4部分3(ISO / IEC 14496-3)被定义.它通常用于MP4容器格式; 对于音乐,通常使用.m4a扩展名.第二最常见的用途是在MKV( ...
- Spring 4 官方文档学习(十一)Web MVC 框架之编码式Servlet容器初始化
在Servlet 3.0+ 环境中,你可以编码式配置Servlet容器,用来代替或者结合 web.xml文件.下面是注册DispatcherServlet : import org.springfra ...
- Django 2.0官方文档中文 渣翻 总索引(个人学习,欢迎指正)
Django 2.0官方文档中文 渣翻 总索引(个人学习,欢迎指正) 置顶 2017年12月08日 11:19:11 阅读数:20277 官方原文: https://docs.djangoprojec ...
- Django 2.0官方文档中文 总索引
Django 2.0官方文档中文 渣翻 总索引 翻译 2017年12月08日 11:19:1 官方原文: https://docs.djangoproject.com/en/2.0/ 当前翻译版本: ...
- Kotlin开发语言文档(官方文档)-- 目录
开始阅读Kotlin官方文档.先上文档目录.有些内容还未阅读,有些目录标目翻译还需琢磨琢磨.后续再将具体内容的链接逐步加上. 文档链接:https://kotlinlang.org/docs/kotl ...
- Spring 4 官方文档学习(十四)WebSocket支持
个人提示:如果需要用到页面推送,高频且要低延迟,WebSocket无疑是最佳选择.否则还是轮询和long polling吧. 做了一个小demo放在码云上,有兴趣的可以看一下,简单易懂:websock ...
- 人工智能系统Google开源的TensorFlow官方文档中文版
人工智能系统Google开源的TensorFlow官方文档中文版 2015年11月9日,Google发布人工智能系统TensorFlow并宣布开源,机器学习作为人工智能的一种类型,可以让软件根据大量的 ...
- Spring 4 官方文档学习(十一)Web MVC 框架之异常处理
1.HandlerExceptionResolver Spring HandlerExceptionResolver的实现们会处理controller执行过程中发送的unexpected except ...
- Protocol Buffers(Protobuf) 官方文档--Protobuf语言指南
Protocol Buffers(Protobuf) 官方文档--Protobuf语言指南 约定:为方便书写,ProtocolBuffers在下文中将已Protobuf代替. 本指南将向您描述如何使用 ...
随机推荐
- 关于baseflight cleanflight naze32不能解锁的办法
需要修改源代码,重新编译.. mcfg.mincheck = 1150; mcfg.maxcheck = 1850; 当然,这是笨方法.还有个办法设置解锁检查的最大最小油门 在控制台,也就是 CLI那 ...
- JAVA-JNI java程序调用c/c++程序
目的:写c/c++函数,让java调用 java代码 1.创建HelloJNI.java文件->编写代码如下->cmd中javac HelloJNI.java获取HelloJNI.clas ...
- iptables 设置肯限制流量
1.查看本机关于IPTABLES的设置情况 [root@tp ~]# iptables -L -n Chain INPUT (policy ACCEPT) target prot opt source ...
- DarkStone - 跨平台移动应用开发之 Flex 的崛起
我的好友Ds 发布一个flex的消息.我帮忙转发 DarkStone - 跨平台移动应用开发之 Flex 的崛起 (2013-08-20 22:28:32) 此文章由 周戈 (DarkSton ...
- Objective-C基础2
16.继承 1)不能和父类定义一样的变量 2)单一继承,不支持继承多个类 3)支持多层继承子类也可以被继承 17.实例变量修饰符 public:公开的,在其他类中也可以访问 protected:受保护 ...
- EF 数据初始化
数据库不存在时重新创建数据库: Database.SetInitializer<testContext>(new DropCreateDatabaseAlways<testConte ...
- JBOSS服务器的安装及配置
1 安装jdk(jdk-1_5_0_05-windows-i586-p.exe)2 配置jdk环境 安装完成后还需要配置运行时环境:右键点击"我的电脑"->"属性& ...
- wx getlocation
http://www.cnblogs.com/txw1958/p/weixin-web-location.html http://blog.csdn.net/myfmyfmyfmyf/article/ ...
- HTML如何让文本两端对齐
<p style="text-align:justify; text-justify:inter-ideograph;>日本驻华大使丹羽宇一郎:日中关系比夫妻还紧密日本驻华大使丹 ...
- dataGridViewX和数据库的链接之dataGridViewX1.DataSource = ds.Tables[0];
dataGridViewX1.DataSource = ds.Tables[0]; 1, dataGridViewX和数据库链接,如果我们用 dataGridViewX1.DataSource = d ...