在终端保证了原汁原味的输出,同时再代码里也能获取到返回值。总感觉还有更好的是实现方法,但是暂时不知道。
import subprocess
cmd = 'ffmpeg -i test.mp4 %d.png'
p = subprocess.Popen(cmd,shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, encoding='utf-8')
while p.poll() is None:
line = p.stdout.readline().rstrip()
end = '\r' if (('frame=' in line) and ('fps=' in line) and ('time=' in line)) else '\n'
print(line, end=end)