我有几个视频URL的集合,我正在尝试做的是使用一个for循环在laravel中为所有的视频添加一个水印
在循环中,这是我的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中的队列/作业完成的。
我的问题是,如果上面的命令失败,并且无法添加水印
它不会移动下一个视频来开始添加水印,而是终止该过程,并尝试为同一视频再次添加水印。
我想要的是循环应该继续下一个视频,而不是终止脚本。
有什么解决方案吗?
发布于 2019-11-04 18:46:34
已执行命令的输出,如果发生错误或命令不产生任何输出,则返回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://stackoverflow.com/questions/58691627
复制相似问题