#python #docker #error-handling #ffmpeg #subprocess
Вопрос:
У меня есть приложение, работающее на Dokku droplet в DigitalOcean.
Он получает аудио в формате ogg от messenger и преобразует частоту дискретизации в герцах для ответа. Я установил с sudo apt-get install ffmpeg
помощью своего сервера ubuntu на DigitalOcean, и он находится в /usr/bin/ffmpeg
.
Приведенный ниже код принимает аудио и преобразует его частоту в 48000 Гц.
import subprocess
import tempfile
import os
def convert_to_ogg(in_bytes):
with tempfile.TemporaryFile() as temp_out_file:
temp_in_file = None
if in_bytes:
temp_in_file = tempfile.NamedTemporaryFile(delete=False)
temp_in_file.write(in_bytes)
in_filename = temp_in_file.name
temp_in_file.close()
command = [
r'/usr/bin/ffmpeg', # path to ffmpeg
'-i', in_filename,
'-f', 'ogg',
'-acodec', 'libopus',
'-ar', '48000',
'-'
]
proc = subprocess.Popen(command, stdout=temp_out_file)
proc.wait()
if temp_in_file:
os.remove(in_filename)
Однако, подпроцесс.Popen вызывает следующую ошибку:
FileNotFoundError: [Errno 2] No such file or directory: '/usr/bin/ffmpeg'
Весь код находится на git и был запущен в приложении Dokku.
Мои вопросы таковы: Почему подпроцесс не может найти FFMPEG? Должен ли я загрузить пакет ffmpeg для работы с Dokku/Docker?