我正在使用ffmpeg命令为视频加水印。它可以完成工作,但我需要检测它是否成功执行。我的命令:
$mark = "ffmpeg -i ".$inputvideo." -i logo.png -filter_complex ". '"overlay=x=(main_w-overlay_w):y=(main_h-overlay_h)"'." ".uniqid()."html56.mp4";
对于输出,我使用了类似的东西:
$x = exec($mark);
print_r($x);
但是我没有打印任何东西来代替$x
.经过一番搜索,我找到了exec
命令的语句
string exec ( string $command [, array &$output [, int &$return_var ]] )
$s=exec($mark,$var);
$var是我的回归变数。
现在,当我打印$var
时,我得到一个空数组。请告诉我在哪里失踪。
字符串可执行文件 ( 字符串 $command [, 数组 &$output [, int &$return_var ]] (
当您这样做$s = exec($mark, $var);
您的$var
对应于空$output
,因为ffmpeg
向sderr
输出信息,因为stdout
可能用于实际数据输出。
如果要获取返回代码,即使不使用它们,也必须指定前面的所有可选参数:
$s = exec($mark, $output, $var)
如果您需要实际输出,您可以将stderr
重定向到stdout
,因为您没有使用它,方法是在命令末尾放置一个2>&1
或使用 PHP 的 proc_open(( 来执行它。