ruby不会读取ffmpeg的输出

Ami*_*mit 2 ruby ffmpeg

赛跑

a = `ffmpeg -i video.mp4`
Run Code Online (Sandbox Code Playgroud)

似乎没有给出命令的输出a...为什么?怎么覆盖它?

sar*_*old 5

快速回答:

a = `ffmpeg -i video.mp4 2>&1`
Run Code Online (Sandbox Code Playgroud)

详细解答:

当我ffmpeg -i blah.avi在一个方便的文件上运行时,我注意到它在输出标准时没有输出; 相反,所有输出到标准错误.您可以通过运行来检查自己的shell:

ffmpeg -i video.mp4 > /tmp/standard_out 2> /tmp/standard_error
Run Code Online (Sandbox Code Playgroud)

然后看看两者/tmp/standard_out/tmp/standard_error.你会很快看到哪一个是哪一个.您可以ffmpeg -i video.mp4 2>&1在脚本中快速"修复"此操作,这将要求shell将stderr与stdout一起重定向.你将无法区分stderr和stdout之间的区别,但是你可以很容易地得到你看到的输出.

如果你想将stdout和stderr分开,你将不得不使用popen3.