подпроцесс python ffmpeg не работает на heroku - PullRequest
0 голосов
/ 16 сентября 2018

Я создал бота, который работает с 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 и будет работать нормально

Если я попытаюсь проверить ffmpeg на heroku, выполнив heroku run bash а затем введите команду 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

Однако, если я запускаю код на heroku из python, он делает это: [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 Ответ

0 голосов
/ 21 сентября 2018

Я думаю, что лучший способ для конвертации в Heroku - использовать чистую оболочку Python из FFmpeg. Как ffmpy . Вот пример:

первый:

pip install ffmpy

тогда вы можете использовать его как:

from ffmpy import FFmpeg
ff = FFmpeg(
    inputs={'je4d.gif': None},
    outputs={'je4d.mp4': None}
    )
ff.run()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...