Как заставить FFmpeg / sox работать над приложением склянки с героем? - PullRequest
0 голосов
/ 06 марта 2019

Я пытаюсь преобразовать аудиофайл mp3 из формата .mp3 и многоканального звука в формат .flac и одноканальный звук в моем приложении на колбу Python. В настоящее время я использую оболочку Python для ffmpeg с именем ffmpy. Вот мой код.

from ffmpy import FFmpeg
ff = FFmpeg(
        #executable = '/ffmpeg-20190304-db33283-macos64-static/bin/ffmpeg',
        inputs = {<Input File.mp3>: None},
        outputs = {'<output file.flac>': ['-ac 1']}
   )
   ff.run()
С этим сегментом кода мы столкнулись с множеством ошибок при развертывании приложения фляги на heroku (кажется, что код работает локально). Ошибка, с которой я сталкиваюсь - это исключение ffmpy.FFExecutableNotFoundError: Executable 'ffmpeg' not found. Чтобы это исправить, я попытался загрузить ffmpeg build и установить его как свой исполняемый файл (см. Комментарий в моем коде выше). Я перетащил это в каталог моего проекта и добавил приведенный выше код, но выдает ту же ошибку, за исключением того, что сказано: ffmpy.FFExecutableNotFoundError: Executable 'ffmpeg-20190304-db33283-macos64-static/bin/ffmpeg not found. Имя файла было исполняемым файлом, не найденным в случае, если это было неясно. Затем мы попытались добавить пакеты сборки из следующих двух репозиториев github: https://github.com/HYPERHYPER/heroku-buildpack-ffmpeg и https://github.com/integricho/heroku-buildpack-python-ffmpeg, но ни один из пакетов сборки не решил проблему. Когда мы запустили heroku run bash и набрали ffmpeg, мы получили команду not found. Затем я попытался установить его с apt-get install ffmpeg на Heroku Bash, но это также не удалось. Это мой файл require.txt.

Flask==1.0.2
Flask-Cors==3.0.4
gcloud==0.18.3
google-api-core==1.7.0
google-auth==1.6.2
google-cloud-core==0.29.1
google-cloud-speech==0.36.3
google-cloud-storage==1.14.0
google-resumable-media==0.3.2
googleapis-common-protos==1.5.6
gunicorn==19.9.0
matplotlib==2.2.2
lib==3.0.0
grpcio==1.13.0rc3
SpeechRecognition==3.8.1
watson-developer-cloud==2.8.0
wordcloud==1.5.0
Werkzeug==0.14.1
python-docx==0.8.10
sox==1.3.7
redis==3.2.0
requests==2.21.0
rq==0.13.0
ffmpeg==1.4
ffmpeg-python==0.1.17
ffmpy==0.2.2
sox==1.3.7

`Мы также пытались запустить подпроцесс с помощью команды sox:

import subprocess

subprocess.call(['sox', <inputfile.mp3>, '-r', '44100', '<outputfile.flac', 'remix', '1,2'], shell=True)

Это продолжало говорить <inputfile.mp3> sox: not found, и поэтому я развернулся к ffmpeg. Если есть более эффективный способ сделать это преобразование, пожалуйста, дайте мне знать, так как я новичок и в python, и в heroku. Любая помощь приветствуется.

...