FFmpeg: не завершать скрипт используя цикл - PullRequest
0 голосов
/ 04 ноября 2019

У меня есть коллекция из нескольких URL-адресов видео, и я пытаюсь добавить водяные знаки для всех видео с помощью цикла for, в laravel

внутри цикла, это мой FFmpegcode.

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.

Моя проблема в том, что если вышеприведенная команда выходит из строя и не может добавить водяной знак

он не перемещает следующее видео, чтобы начать добавление водяного знака, вместо этого завершает процесс и пытается снова добавить водяной знак для того же видео.

То, что я хочу, это цикл должен продолжаться дляследующее видео вместо завершения сценария.

Есть решение?

1 Ответ

0 голосов
/ 04 ноября 2019

Вывод выполненной команды или 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
}
...