我想知道如何在执行 ffmpeg 命令时获取成功或失败消息


I wonder how to get the success or failure message upon execution of a ffmpeg command

我正在使用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,因为ffmpegsderr输出信息,因为stdout可能用于实际数据输出。

如果要获取返回代码,即使不使用它们,也必须指定前面的所有可选参数:

$s = exec($mark, $output, $var)

如果您需要实际输出,您可以将stderr重定向到stdout,因为您没有使用它,方法是在命令末尾放置一个2>&1或使用 PHP 的 proc_open(( 来执行它。