我正在尝试使用ffmpeg重新编码视频,我收到此错误:
[aac @ 0x3752e40] The encoder 'aac' is experimental but experimental codecs are not enabled, add '-strict -2' if you want to use it.
命令和完整输出::
/root$ /usr/bin/ffmpeg -i http://website.com/uploads/usr_videos/MVI_05571.mp4 -b:v 500k -threads 4 -vf scale=-1:144 -b:a 128k http://website.com/uploads/usr_videos/144p_output.mp4
ffmpeg version 2.5.4 Copyright (c) 2000-2015 the FFmpeg developers
built on Feb 18 2015 01:39:38 with gcc 4.4.7 (GCC) 20120313 (Red Hat 4.4.7-11)
configuration:
libavutil 54. 15.100 / 54. 15.100
libavcodec 56. 13.100 / 56. 13.100
libavformat 56. 15.102 / 56. 15.102
libavdevice 56. 3.100 / 56. 3.100
libavfilter 5. 2.103 / 5. 2.103
libswscale 3. 1.101 / 3. 1.101
libswresample 1. 1.100 / 1. 1.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'http://website.com/uploads/usr_videos/MVI_05571.mp4':
Metadata:
major_brand : isom
minor_version : 512
compatible_brands: isomiso2mp41
encoder : Lavf54.63.104
Duration: 00:01:48.26, start: 0.023220, bitrate: 7122 kb/s
Stream #0:0(eng): Video: mpeg4 (Simple Profile) (mp4v / 0x7634706D), yuv420p, 640x360 [SAR 1:1 DAR 16:9], 6990 kb/s, 29 fps, 29 tbr, 14848 tbn, 29 tbc (default)
Metadata:
handler_name : VideoHandler
Stream #0:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 126 kb/s (default)
Metadata:
handler_name : SoundHandler
[aac @ 0x3752e40] The encoder 'aac' is experimental but experimental codecs are not enabled, add '-strict -2' if you want to use it.
所以任何人都可以告诉我这个错误意味着什么,我该如何解决呢? 我在centOS服务器上使用ffmpeg 2.5版。
答案 0 :(得分:21)
快速解决方法是在最后一个参数(输出名称)之前添加选项-strict -2
。
FFmpeg可以使用几种不同的AAC编码器。为获得最佳质量,请使用libfdk_aac
编码器。遗憾的是,libfdk_aac的许可证与GPL不兼容,这意味着GPL不允许分发从libx264(GPL)(用于H.264视频编码)和libfdk_aac(用于AAC音频编码)的可执行文件。然而,如果您自己构建FFmpeg,这可能是一个很好的选择。如果您的FFmpeg是使用libfdk_aac构建的,那么您可以在输出文件名之前使用选项-c:a libfdk_aac
。
FFmpeg还有一个实验性的内置AAC编码器,它在给定比特率下具有较低的质量,但具有兼容的许可证。由于它是实验性的,因此默认情况下不会使用它,但如果您在输出文件名之前包含选项-strict experimental
或-strict -2
,则可以使用它,以启用实验性编解码器。
有关详细信息,请参阅FFmpeg AAC Encoding Guide。
答案 1 :(得分:0)
如果您使用cmake
以编程方式对流进行编码,则可以在aac
中启用实验性功能,如下所示。
AVCodecContext
答案 2 :(得分:0)
自2015-12-05起,原生FFmpeg AAC编码器(-codec:a aac
)不再具有实验性。使用当前git master分支的最新版本,您不必使用-strict
选项。