Я хорош в php, но очень новичок в ffmpeg и exec stuffs.Now, я успешно установил ffmpeg через ssh.I здесь рассказал о каком-то stackoverflow и нашел ниже код для создания видео с использованием нескольких изображений.
<?php echo exec('ffmpeg -f image2 -i image%d.jpg video.mpg'); ?>
У меня есть image1.jpg и image2.jpg в той же папке. Я запускаю этот php-код, но ничего не произошло … где сохраняется видео.mpg? и как проверить, успешно ли выполнялась функция exec или как ее отладить? Любая помощь приветствуется.
Если он успешно работал, video.mpg был сохранен в вашем текущем рабочем каталоге. При необходимости вы можете изменить имена файлов на абсолютные пути.
Чтобы проверить, успешно ли выполнялась функция exec()
вы можете передать третий аргумент, чтобы получить статус выхода:
exec('ffmpeg -f image2 -i image%d.jpg video.mpg', $output, $exit_status);
В случае успеха $exit_status
получит 0
значение, поэтому:
if ($exit_status === 0) { // ran fine } else { // failed... }
Если это ошибка, вы можете захотеть получить ошибки в $output
. Вы можете переместить STDERR
в STDOUT
игнорируя исходный STDOUT
таким образом:
exec('ffmpeg -f image2 -i image%d.jpg video.mpg 2>&1 >/dev/null', $output, $exit_status);
Затем вы можете $output
чтобы узнать, что вы получили на STDERR
:
if ($exit_status !== 0) { print implode("\n", $output); }
Если файл video.mpg уже существует, команда застрянет, вы можете передать флаг -y
в ffmpeg
для перезаписывания любого существующего файла:
exec('ffmpeg -y -f image2 -i image%d.jpg video.mpg 2>&1 >/dev/null', $output, $exit_status);