ffmpeg
интерпретирует все, что предоставлено -af
, как один аргумент, который затем будет внутренне проанализирован на отдельные, поэтому разделение их перед передачей через Popen
не приведет к достижению того же самого.
Первоначальный пример с использованием терминала должен быть создан с использованием Popen
как
subprocess.Popen([
'ffmpeg', '-i', 'test.mp3', '-af', 'asetrate=44100*0.5,aresample=44100,atempo=2',
'output.mp3',
])
Так что для вашего реального примера с pipe попробуйте вместо этого следующее:
song = subprocess.Popen(
["ffmpeg.exe", "-i", sys.argv[1], "-f", "asetrate=22050,wav", "pipe:1"],
stdout=subprocess.PIPE
)
Затем вам понадобится вызвать song.communicate()
, чтобы получить вывод, произведенный ffmpeg.exe
.