【问题标题】:python ffmpeg subprocess not working on herokupython ffmpeg子进程在heroku上不起作用
【发布时间】:2019-02-20 15:57:18
【问题描述】:

我制作了一个处理 gif 文件的机器人,并尝试将其上传到 heroku。

所以我已经安装了这个 buildpack https://elements.heroku.com/buildpacks/jonathanong/heroku-buildpack-ffmpeg-latest

我将此代码作为子进程运行:

id_name = "je4d" (is actually randomized bc it downloads different gifs)
path = "./media/%s.gif" % (id_name)
subprocess.run('ffmpeg -y -ignore_loop 0 -i %s -movflags faststart -pix_fmt yuv420p -vf "scale=trunc(iw/2)*2:trunc(ih/2)*2" -t 15 %s' % (path, path.replace(".gif", ".mp4")), shell=True)

所以如果我在我的电脑上运行它,它会将 je4d.gif 转换为 .mp4 并且可以正常工作

如果我尝试通过 heroku run bash 在 heroku 上测试 ffmpeg 然后输入命令ffmpeg -y -ignore_loop 0 -i ./media/je4d.gif -movflags faststart -pix_fmt yuv420p -vf "scale=trunc(iw/2)*2:trunc(ih/2)*2" -t 15 ./media/je4d.mp4 它也可以正常工作并制作 .mp4

但是,如果我从 python 在 heroku 上运行代码,它会这样做: [Errno 2] No such file or directory: 'ffmpeg -y -i ./media/3s1m8cw09sl11.gif -movflags faststart -pix_fmt yuv420p -vf "scale=trunc(iw/2)*2:trunc(ih/2)*2" ./media/3s1m8cw09sl11.mp4': 'ffmpeg -y -i ./media/3s1m8cw09sl11.gif -movflags faststart -pix_fmt yuv420p -vf "scale=trunc(iw/2)*2:trunc(ih/2)*2" ./media/3s1m8cw09sl11.mp4'

所以我认为下载可能有错误,所以我将路径更改为服务器上的静态文件,它仍然给我同样的错误。 有什么建议吗?

【问题讨论】:

  • 如果您将 subprocess.run() 参数从单个字符串更改为列表,例如subprocess.run(['ffmpeg', '-y', '-ignore_loop', '0', '-i', path, '-movflags', 'faststart', '-pix_fmt', 'yuv420p', '-vf', '"scale=trunc(iw/2)*2:trunc(ih/2)*2"', '-t', '15', path.replace(".gif", ".mp4")'], shell=True) 之类的东西有用吗?
  • 嘿@Chris 我刚试过这个(我以前试过这样做,但我从来不明白如何正确地做),它似乎是一个 path.mp4 但它是 borken (0kb),我尝试在我的 cmd 上运行相同的 ffmpeg 代码,它生成了一个 85kb 的 .mp4,所以出了点问题
  • 我不知道为什么会这样,但另一个因素是 Heroku 的文件系统仅被设计用作短期暂存器。如果你得到这个工作,请确保你不依赖那些长期存储的文件。
  • 是的,它从不同的来源下载文件,ffmpeg 上传它们,然后自动删除它们

标签: python python-3.x heroku video ffmpeg


【解决方案1】:

我认为在 Heroku 上进行转换的最佳方式是使用 FFmpeg 的纯 python 包装器。 喜欢ffmpy。 这是一个例子:

第一:

pip install ffmpy

那么你可以像这样使用它:

from ffmpy import FFmpeg
ff = FFmpeg(
    inputs={'je4d.gif': None},
    outputs={'je4d.mp4': None}
    )
ff.run()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-10-15
    • 1970-01-01
    • 2018-11-27
    • 2014-10-14
    • 2017-12-08
    • 2018-12-06
    • 1970-01-01
    • 2020-05-19
    相关资源
    最近更新 更多