Одной из проблем является то, что os.popen()
возвращает дескриптор на выходе процесса и возвращает его вызывающей стороне, оставляя программу работающей в фоновом режиме.
Итак, когда вы вызываете вашу постобработку аудио, ffmpeg
еще не закончил запуск / может даже не начал создавать аудио файл (состояние гонки между вашим процессом и подпроцессом ffmpeg
)
Вы должны ждать , чтобы команда завершилась. Я бы использовал subprocess.check_call
для этого и список аргументов вместо того, чтобы составлять команду как строку (которая должна быть разбита, возможно, с ошибками в кавычках / пробелах):
cmd = ["ffmpeg","-i",inFile,"-vn","-ac","2","-ar","44100","-ab","320k","-f","wav",outFile]
subprocess.check_call(cmd)
когда возвращается check_call
(без исключения), это означает, что ffmpeg
завершил создание выходного файла. Вы можете смело пытаться открыть его для чтения прямо сейчас.