运行ffmpeg时隐藏系统消息

时间:2013-11-13 19:32:31

标签: php ffmpeg

我正在使用下面的代码从视频文件中抓取图像并且它运行良好。 但是,当我运行包含代码的php文件时,所有系统procceses出现,我的意思是关于转换,导出等的一些信息。

如何让它保持沉默?

$stderr = system("ffmpeg -i $videoPath -vframes 1 -an -s 306x173 -ss 03 $finalfilename 2>&1 >/dev/null", $exit_status);

if ($exit_status === 0) {
    print 'Done! :)';
} else {
    print 'Error... :/';
    // $stderr will help you figure out what happened...
}

3 个答案:

答案 0 :(得分:1)

您应该更改重定向的顺序。像这样:

>/dev/null 2>&1 

或者将所有内容直接指向/ dev / null:

>/dev/null 2>/dev/null

答案 1 :(得分:0)

首先:对不起!在另一个问题上,我错误地建议您使用system()函数,但显然需要exec()

此外,您可能希望使用ffmpeg禁止任何-v error详细输出,以便仅在$stderr上获取错误消息。您还需要通过-y以避免在$finalfilename已存在时卡住。全部修复:

exec("ffmpeg -v error -y -i $videoPath -vframes 1 -an -s 306x173 -ss 03 $finalfilename 2>&1 >/dev/null", $stderr, $exit_status);

if ($exit_status === 0) {
    print 'Done! :)';
} else {
    print 'Error... :/';
    // implode("\n", $stderr) will help you figure out what happened...
}

答案 2 :(得分:0)

您也可以将-loglevel quiet用作global option,但如果您遇到错误,这将无济于事。