我正在使用python的subprocess.popen来获取视频文件的信息。
output = Popen('ffmpeg -i "'+avifile+'" -dframes 0 -vframes 0',
executable="/bin/bash", stdout=PIPE, stderr=STDOUT,
shell=True).communicate()[0]
当我运行它时,输出变量是一个空字符串,当我知道应该有什么东西时。我可以手动运行ffmpeg。
我想也许这是管道问题和重定向。想知道是否有人可以解决这个问题。
答案 0 :(得分:0)
cmd = ['ffmpeg','-i',avifile,'-dframes','0','-vframes', '0']
output = Popen(cmd,
#executable="/bin/bash", ive never seen this used ... you may not need it
stdout=PIPE, stderr=PIPE,
shell=True).communicate()
尝试相反,也许......
答案 1 :(得分:0)
将组合的stdout / stderr作为字符串读取并在非零返回状态下获取异常:
from subprocess import STDOUT, check_output as qx
output = qx(['ffmpeg', '-i', avifile] + '-dframes 0 -vframes 0'.split(),
stderr=STDOUT)
除非您需要,否则请勿使用shell=True
。
答案 2 :(得分:0)
我将变量输出更改为video_output,但由于某种原因,它工作正常。我完全没有原因。