我试图从python运行ffmpeg并获得一些合理的输出。无论设置什么ffmpeg的日志级别,我从Popen.communicate()获得的唯一输出是错误的。但内容不是错误。我尝试了相同的代码来运行其他命令(ls),并且对于out和err输出,它似乎都正常。运行ffmpeg时Popen.communicate()只返回err
我在这里检查过,Google很遗憾地没有发现任何东西。大多数示例使用os或命令模块,而不是子进程。
这是我的测试代码:
command = [
'ffmpeg',
'-v', 'debug',
'-i', '1.mov',
'-vcodec', 'libx264',
'-profile:v', 'high',
'-preset', 'slower',
'-b:v', '1000k',
'-vf', 'scale=-1:720',
'-threads', '0',
'-acodec', 'libfdk_aac',
'-b:a', '192k',
'-y',
'2.mp4',
]
p = subprocess.Popen(command, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
out, err = p.communicate()
f = open('out.log', 'w')
f.write(out)
f.close()
f = open('error.log', 'w')
f.write(err)
f.close()
你有没有看到这样的事情?我是否犯了错误或者在ffmpeg中有错误?
尝试在终端运行完全相同的命令参数,看看会发生什么。要将实际参数作为字符串获取,您可以在Python脚本中用'echo'代替'ffmpeg'。 – sashoalm 2013-02-14 20:54:48
在终端中运行命令是可以的。我做我想做的事,控制台输出不是错误。因此,我期望communican()的返回值相同的输出。这是错误的一部分。我试图与其他命令一起运行,那里是可以的。 – 2013-02-16 12:50:19