FFmpeg:不要使用循环终止脚本

我有一些视频URL的集合,我想做的是使用laravel中的for循环在所有视频中添加水印

在循环内部,这是我的FFmpeg代码。

shell_exec('ffmpeg -y -i MY_VIDEO_PATH_HERE -i WATER_MARK_IMAGE_URL -filter_complex "overlay=18:H-h-30" -strict -2 -codec:a copy "MY_PATH_TO_STORE_VIDEO"');

所有这些代码都是使用laravel中的队列/作业完成的。

我的问题是,如果以上命令失败并且无法添加水印

它不会移动下一个视频来开始添加水印,而是终止该过程并尝试为同一视频再次添加水印。

我想要的是循环播放下一个视频,而不是终止脚本。

有解决方案吗?

panda__2001 回答:FFmpeg:不要使用循环终止脚本

  

已执行命令的输出,如果发生错误则为NULL或   该命令不产生任何输出。

https://www.php.net/manual/en/function.shell-exec.php

因此,理论上,您可以在循环中尝试以下操作:

$result = shell_exec('ffmpeg -y -i MY_VIDEO_PATH_HERE -i WATER_MARK_IMAGE_URL -filter_complex "overlay=18:H-h-30" -strict -2 -codec:a copy "MY_PATH_TO_STORE_VIDEO"');

if (null === $result) {
    // possibly also mark video as processed here if need be?

    continue; // skip current loop iteration
}
本文链接:https://www.f2er.com/3167504.html

大家都在问