我在本地Rails应用程序中使用ffmpeg版本1.2.4转换视频文件。当我在本地运行应用程序时,一切正常。当我部署到heroku时,我为ffmpeg添加了一个buildpack:
https://github.com/shunjikonishi/heroku-buildpack-ffmpeg
这将安装ffmpeg版本git-2013-06-02-5711e4f。当我尝试将视频转码为mp4时,出现以下错误:
无法识别的选项“预设”。拆分参数列表时出错:找不到选项
这是完整的日志:
2013-11-17T19:45:05.255059+00:00 app[web.1]: Running transcoding...
2013-11-17T19:45:05.255059+00:00 app[web.1]: ffmpeg -y -i /app/public/uploads/tmp/1384717504-2-9158/Untitled.mov -vcodec libx264 -acodec libfaac -s 640x360 -qscale 0 -preset slow -g 30 -aspect 1.7777777777777777 /app/public/uploads/tmp/1384717504-2-9158/tmpfile.mp4
2013-11-17T19:45:05.255059+00:00 app[web.1]:
2013-11-17T19:45:05.317895+00:00 app[web.1]: Failed encoding...
2013-11-17T19:45:05.317895+00:00 app[web.1]: ffmpeg -y -i /app/public/uploads/tmp/1384717504-2-9158/Untitled.mov -vcodec libx264 -acodec libfaac -s 640x360 -qscale 0 -preset slow -g 30 -aspect 1.7777777777777777 /app/public/uploads/tmp/1384717504-2-9158/tmpfile.mp4
2013-11-17T19:45:05.317895+00:00 app[web.1]:
2013-11-17T19:45:05.317895+00:00 app[web.1]: ffmpeg version git-2013-06-02-5711e4f Copyright (c) 2000-2013 the FFmpeg developers
2013-11-17T19:45:05.317895+00:00 app[web.1]: built on Jun 2 2013 07:38:40 with gcc 4.4.3 (Ubuntu 4.4.3-4ubuntu5.1)
2013-11-17T19:45:05.317895+00:00 app[web.1]: configuration: --enable-shared --disable-asm --prefix=/app/vendor/ffmpeg
2013-11-17T19:45:05.317895+00:00 app[web.1]: libavutil 52. 34.100 / 52. 34.100
2013-11-17T19:45:05.317895+00:00 app[web.1]: libavcodec 55. 13.100 / 55. 13.100
2013-11-17T19:45:05.317895+00:00 app[web.1]: libavformat 55. 8.102 / 55. 8.102
2013-11-17T19:45:05.317895+00:00 app[web.1]: libavdevice 55. 2.100 / 55. 2.100
2013-11-17T19:45:05.318137+00:00 app[web.1]: libavfilter 3. 74.101 / 3. 74.101
2013-11-17T19:45:05.318137+00:00 app[web.1]: libswscale 2. 3.100 / 2. 3.100
2013-11-17T19:45:05.318137+00:00 app[web.1]: libswresample 0. 17.102 / 0. 17.102
2013-11-17T19:45:05.318137+00:00 app[web.1]: Unrecognized option 'preset'.
2013-11-17T19:45:05.318137+00:00 app[web.1]: Error splitting the argument list: Option not found
2013-11-17T19:45:05.318137+00:00 app[web.1]:
2013-11-17T19:45:05.318137+00:00 app[web.1]: Errors: no output file created.
我认为该错误可能是由于我在本地和Heroku上使用的ffmpeg版本不同而导致的。有人对如何解决此问题有建议吗?
您正在尝试使用编码器libfaac和libx264,但是您的ffmpeg尚未编译为支持这些编码器。libfaac需要ffmpeg配置选项,--enable-nonfree --enable-libfaac
而libx264需要--enable-gpl --enable-libx264
。--disable-asm
不建议使用,因为它会严重影响编码时间。
如果需要编译方面的帮助,请参阅如何在Ubuntu上编译FFmpeg。建议进行编译,因为存储库中的所谓“ ffmpeg”程序包是来自fork的伪造,旧,错误和过时的版本,并且不能提供良好的AAC编码器。
至于ffmpeg命令选项:
-qscale
是模棱两可的。你应该告诉ffmpeg的,如果它应适用于音频(-qscale:a
或-q:a
)或视频(-qscale:v
或-q:v
),但需要注意的是libx264忽略-qscale
,你应该使用默认设置,或-crf
如图所示的FFmpeg和X264编码指南。
无需添加-g 30 -aspect 1.7777777777777777
。默认设置-g
应足够,我不明白为什么要强制使用看似任意的宽高比。
考虑使用-vf scale=640:-1
而不是显式强制使用硬尺寸,因为这可能会更改长宽比并导致挤压或拉伸外观。所述-1
告诉FFmpeg同时保留宽高比自动计算的值。
如果编译ffmpeg,请使用-codec:a libfdk_aac
代替libfaac
。它将提供每个比特率更好的质量。有关更多信息,请参见FFmpeg和AAC编码指南。
我猜您正在制作要在网络上显示的视频。如果是,则将其添加-movflags +faststart
为输出选项,以允许客户端在文件完全下载之前开始播放。仅适用于真正的ffmpeg,不适用于假垃圾。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句