ffmpeg:重新编码视频时出错

Ash*_*fny 6 ffmpeg

我试图用ffmpeg重新编码视频,我收到此错误:

[aac @ 0x3752e40] The encoder 'aac' is experimental but experimental codecs are not enabled, add '-strict -2' if you want to use it.
Run Code Online (Sandbox Code Playgroud)

命令和完整输出::

/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.
Run Code Online (Sandbox Code Playgroud)

所以任何人都可以告诉我这个错误意味着什么,我该如何解决?
我在centOS服务器上使用ffmpeg 2.5版.

mar*_*k4o 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编码指南.

  • 从FFmpeg 3.0(2016年2月)开始,FFmpeg内置的本地AAC编码器不再处于实验阶段,因此不再需要使用-strict -2。 (2认同)