python ffmpeg子进程在heroku上不起作用

标签 python python-3.x heroku video ffmpeg

我制作了一个处理 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'
所以我认为下载可能有错误,所以我将路径更改为服务器上的静态文件,它仍然给我同样的错误。
有小费吗?

最佳答案

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

第一:

pip install ffmpy

那么你可以像这样使用它:
from ffmpy import FFmpeg
ff = FFmpeg(
    inputs={'je4d.gif': None},
    outputs={'je4d.mp4': None}
    )
ff.run()

关于python ffmpeg子进程在heroku上不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52355653/

相关文章:

python - 用Python逆向映射字典

python - 将圆切成相等的部分,Python

python if-elif-else 总是转到 else

python - 从 heroku 上的 rails 应用程序安装 pip 模块

Python Pandas : Operation on a column - Error: must be str not int

python - 从图像中检测水平白线并使用 OpenCV Python 获取它们的坐标

python-3.x - 如何使用 python 获取 Instagram 帖子的正确视频 url

python - Pygame 事件不起作用

heroku - 尝试了几个修复: Heroku/Rails 4 Assets Precompile Error

security - apt 找不到公钥 6DB5542C356545CF