问题描述
我已经制作了一个处理gif文件的机器人,并尝试将其上传到heroku。
所以我已经安装了这个buildpack
然后,我将此代码作为子进程运行:
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'
因此,我认为下载可能存在错误,因此我将服务器上的静态文件的路径更改为,但仍然出现相同的错误。 有小费吗?
1楼
我认为在Heroku上进行转换的最佳方法是使用FFmpeg的纯Python包装器。 像一样。 这是一个例子:
第一:
pip install ffmpy
那么您可以像这样使用它:
from ffmpy import FFmpeg
ff = FFmpeg(
inputs={'je4d.gif': None},
outputs={'je4d.mp4': None}
)
ff.run()