Я пытаюсь перенаправить как stderr, так и stdout команды ffmpeg в файл и подавить их при выполнении скрипта Python. Это мой код:
import subprocess, shlex
cmd = 'ffmpeg -hide_banner -i input.mp4 -c:v libx264 -b:v 2M -c:a copy enc_out.mp4'
with open("ffmpeg_out.txt", 'w') as log:
ffmpeg_cmd = subprocess.Popen(shlex.split(cmd), stdout=subprocess.PIPE)
ffmpeg_stdout = ffmpeg_cmd.communicate()
for i in range(len(ffmpeg_stdout) - 1):
log.write(str(ffmpeg_stdout[i]) + "\n")
В общем, я хочу сделать что-то похожее на ffmpeg -hide_banner -i input.mp4 -c:v libx264 -b:v 2M -c:a copy enc_out.mp4 &> ffmpeg_out.txt
. Так что в настоящее время в ffmpeg_stdout у меня есть только (b'', None)
, и stdout и stderr оба печатаются при выполнении скрипта.