gpt4 book ai didi

ruby-on-rails - Heroku 上的 ffmpeg : unrecognized option 'preset'

转载 作者:行者123 更新时间:2023-11-28 21:41:09 32 4
gpt4 key购买 nike

我在本地 Rails 应用程序中使用 ffmpeg 版本 1.2.4 来转换视频文件。当我在本地运行应用程序时,一切都按预期工作。当我部署到 heroku 时,我为 ffmpeg 添加了一个构建包:

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,它会显着影响编码时间。

如果您需要编译方面的帮助,请参阅 How to Compile FFmpeg on Ubuntu 。推荐编译,因为存储库中所谓的“ffmpeg”包是虚假的、旧的、有缺陷的和过时的 version from a fork,它不提供良好的 AAC 编码器。

关于 ffmpeg 命令选项:

  • -qscale 不明确。你应该告诉 ffmpeg 它是否应该应用于音频(-qscale:a-q:a)或视频(-qscale:v > 或 -q:v) 但请注意,libx264 会忽略 -qscale,您应该使用默认设置或 -crf,如 FFmpeg and x264 Encoding Guide 中所示.

  • 无需添加 -g 30 -aspect 1.7777777777777777-g 的默认设置应该足够了,我不明白你为什么要强制使用看似任意的纵横比。

  • 考虑使用 -vf scale=640:-1 而不是明确强制使用硬尺寸,因为这会改变纵横比并导致外观被压扁或拉伸(stretch)。 -1 告诉 ffmpeg 在保持宽高比的同时自动计算值。

  • 如果编译 ffmpeg,则使用 -codec:a libfdk_aac 而不是 libfaac。它将提供更好的每个比特率质量。有关详细信息,请参阅 FFmpeg and AAC Encoding Guide

  • 我猜您正在制作要在网络上显示的视频。如果是,则添加 -movflags +faststart 作为输出选项,以允许客户端在文件完全下载之前开始播放。这仅适用于真正的 ffmpeg 而不是假垃圾。

关于ruby-on-rails - Heroku 上的 ffmpeg : unrecognized option 'preset' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20035338/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com