“编码器‘aac’是实验性的,但实验性编解码器未启用”

Posted

技术标签:

【中文标题】“编码器‘aac’是实验性的,但实验性编解码器未启用”【英文标题】:"The encoder 'aac' is experimental but experimental codecs are not enabled" 【发布时间】:2016-01-01 02:40:01 【问题描述】:

使用FFMPEGflv 转换为mp4 转换时显示以下错误

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

【问题讨论】:

如果您看到“实验性”消息,那么您的 ffmpeg 已旧。 FFmpeg AAC 编码器不再是实验性的,因此您不再需要使用-strict experimental/-strict -2。请参阅FFmpeg Download 页面以获取 Linux、macOS 和 Windows 的构建链接。 在此评论中,Ubuntu 16.04 LTS 提供的版本 7:2.8.15-0ubuntu0.16.04.1 仍然会触发“实验性”错误。假设您只是使用 apt 包。 【参考方案1】:

您可以通过在打开编解码器之前将 codec-context strict_std_complaince 变量设置为 -2,在 C++ 代码中添加 -strict 实验性代码。

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

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

请参阅original author's explanation here。

【讨论】:

【参考方案2】:

尝试以下命令:

ffmpeg -i Inputfile.flv -vcodec h264 -acodec aac -strict -2 Filename.mp4

您可以使用此命令将任何类型的视频文件转换为 x264 且质量相同的 mp4。

我尝试了很多方法,但这对我来说就像一种魅力。 ;)

【讨论】:

【参考方案3】:

实际上在命令行中添加-strict -2 是不够的。添加-strict -2 的位置非常重要,不幸的是,错误消息中没有对此进行解释。应该就在最后一个参数之前,即如下:

ffmpeg -i infile -strict -2 outfile

【讨论】:

非常感谢,这些零字节文件(因为标志顺序不正确)让我感到困惑。 我正在将视频从 mp4 编码到 hls 并不断收到 aac/strict 2 错误消息。 freeseek 的答案是唯一有效的。 你救了我的文件/生命。该死的 ffmpeg 应该修复他们的参数 疯了,他们没有在日志中指出这一点。谢谢@freeseek,真的帮了我大忙。 “应该在最后一个参数之前”不正确。你可以毫无问题地做这样的事情ffmpeg -i infile -c:a aac -strict 2 -ab 192k outfile【参考方案4】:

就像消息说的那样,原生 ffmpeg AAC 音频编码器是实验性的,您需要在命令中添加 -strict -2-strict experimental 使用它。但是,此编码器不再标记为实验性,因此最近的 ffmpeg 构建不需要使用此选项。

为了获得最佳效果,请改用libfdk_aac。你需要用这个lib编译ffmpeg,见compilation guide。

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

【讨论】:

@SandeepNambiar "你需要用这个库编译 ffmpeg,见compilation guide。"此外,您应该接受这些答案之一; Unknown encoder 'libfdk_aac' 与您的问题所问的问题不同。 在提出这样的建议时,最好提一下编解码器不是 GPL(基本上这意味着不付费就不能使用它)。见trac.ffmpeg.org/wiki/Encode/AAC @Mike Versteeg 在这种情况下,问题中没有任何内容表明提问者想要分发代码并且分发 AAC 内容没有许可费用。另外,这不是建议。见:vialicensing.com/licensing/aac-faq.aspx【参考方案5】:

您的问题会自行回答。 将-strict -2 添加到它。应该够了

【讨论】:

正如@freeseek 提到的那样,这还不够 - 将-strict -2 标志放在哪里非常重要。 我觉得这很明显,就像 freeseek 提到的,在输出文件名之前 如果这么明显,为什么要问原来的问题?

以上是关于“编码器‘aac’是实验性的,但实验性编解码器未启用”的主要内容,如果未能解决你的问题,请参考以下文章