"AAC编码器是实验性的,但实验性编解码器未启用。"

80

使用 FFMPEGflv 转换成 mp4 时,出现以下错误:

[aac @ 0x2b4b640] 编码器 'aac' 是实验性的,但未启用实验性编解码器。如果要使用它,请添加 '-strict -2'。


1
如果您看到“实验性”消息,则表示您的ffmpeg已过时。FFmpeg AAC编码器不再是实验性的,因此您不需要再使用-strict experimental / -strict -2。请参见FFmpeg下载页面,获取Linux、macOS和Windows版本的链接。 - llogan
2
截至本评论,Ubuntu 16.04 LTS 提供的版本为7:2.8.15-0ubuntu0.16.04.1,仍会触发“实验性”错误。假设您只是使用了apt包。 - Sebastian Iorga
5个回答

186

实际上,仅仅在命令行中添加-strict -2是不够的。非常重要的是,-strict -2添加的位置,但遗憾的是错误信息没有说明这一点。应该将其放在最后一个参数之前,如下所示:

ffmpeg -i infile -strict -2 outfile

10
非常感谢你,这些零字节文件(由于错误的标志顺序)曾让我困惑不解。 - Brian FitzGerald
我正在将MP4视频编码为HLS格式,但一直收到AAC/strict 2错误消息。Freeseek的答案是唯一有效的。 - Kalob Taulien
3
很奇怪他们在日志中没有指出这一点。谢谢@freeseek,真的帮了我大忙。 - Mitya
“它应该在最后一个参数之前”是不正确的。你可以像这样做 ffmpeg -i infile -c:a aac -strict 2 -ab 192k outfile,而不会出现任何问题。 - YTZ
@brillout ffmpeg 以其疯狂/古怪的语法而闻名。这在2022年仍未得到修复,我怀疑它永远不会被修复。 - Navin

10

正如消息所说,本地的FFmpeg AAC音频编码器是实验性的,你需要在命令中添加-strict -2-strict experimental 来使用它。然而,这个编码器已经不再标记为实验性的,所以最近的FFmpeg构建版本不需要使用此选项。

为了获得最佳结果,请改用libfdk_aac。您需要使用此库来编译FFmpeg,请参见编译指南

要设置音频编码器,请使用-c:a libfdk_aac


1
@SandeepNambiar “你需要使用该库编译ffmpeg,请参考编译指南。” 另外,你应该接受其中一个答案;“Unknown encoder 'libfdk_aac'”是一个与你问题不同的问题。 - llogan
在提出这样的建议时,好的做法是提到codec不是GPL(基本上这意味着您不能在不付费的情况下使用它)。请参阅 https://trac.ffmpeg.org/wiki/Encode/AAC。 - Mike Versteeg
2
@Mike Versteeg 在这种情况下,问题中没有任何表明提问者想要分发代码的内容,并且分发AAC内容也没有许可费用。此外,这不是一条建议。请参见:http://www.vialicensing.com/licensing/aac-faq.aspx - aergistal

5
尝试执行以下命令:
ffmpeg -i Inputfile.flv -vcodec h264 -acodec aac -strict -2 Filename.mp4

您可以使用此命令将任何类型的视频文件转换为x264 mp4格式,并保持相同的质量。
我尝试了很多种方法,但这个方法非常好用。 ;)

2

在打开编解码器之前,通过将编解码器上下文的 strict_std_complaince 变量设置为 -2,可以在您的C++代码中添加 -strict experimental

AVCodecContext *c;
c->strict_std_compliance = -2;

/* open it */
ret = avcodec_open2(c, codec, NULL);

请查看原作者的解释

这篇文章介绍了如何在自己的代码中启用FFmpeg实验性编解码器。

-8

你的问题已经自己回答了。 在其中添加-strict -2。那应该就足够了。


3
如@freeseek所说,这还不够-非常重要的是您放置-strict -2标志的确切位置。 - coderMe
我觉得这应该是显而易见的,就像freeseek提到的那样,在输出文件名之前。 - Akhil Gupta
2
如果这么显而易见,为什么还要问原始问题呢? - coderMe

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接