У меня есть рабочий код для преобразования изображения в 5-секундное видео с использованием FFMPEG.
Проблема в том, что код работает только для загруженных изображений, FFMPEG не преобразует изображение в видео, когда изображение генерируется программным путем ТОЛЬКО В LINUX.
PHP код
<?php
$downloadedF="folder/d.jpg";
$downloadedV="folder/d.mp4";
$renderedF="folder/r.jpg";
$renderedV="folder/r.mp4";
$op_d=shell_exec("ffmpeg -r 1/5 -i ".$downloadedF." -c:v libx264 -vf fps=25 -pix_fmt yuv420p ".$downloadedV);
$op_r=shell_exec("ffmpeg -r 1/5 -i ".$renderedF." -c:v libx264 -vf fps=25 -pix_fmt yuv420p ".$renderedV);
echo "Errors:<br>".$op_d."<br><br>".$op_r;
?>
d.mp4 (или вывод для загруженного изображения) генерируется для обоих Windows и Linux
r.mp4 (или вывод для визуализированного изображения) генерируется только в Windows, а в Linux
System: * 1014 создается пустой файл. *
XAMPP на Windows 10 (Разработка)
Хостинг плана Godaddy Starter - Linux (Возможно, redhat) (Производство)
Структура файла
root folder
|-index.php
|-ffmpeg (will be ffmpeg.exe in Windows)
|-folder
|-d.jpg (random downloaded image from google)
|-d.mp4 (Will be created - video converted from downloaded image)
|-r.jpg (rendered image using php imagejpg)
|-r.mp4 (Will be created - video converted from rendered image)
Код отрендеренного изображения:
$imgFF = imagecreatetruecolor($videoWidth, $videoHeight);
//---adding many text using imagettftext();
imagejpeg($imgFF, $path."-000.jpg"); //for this example, I copied output to folder as r.jpg
Редактировать 1:
Возвращаемое значение shell_exec
не имеет ошибка / вывод даже после добавления
error_reporting(E_ALL);
ini_set('display_errors', 1);
Редактировать 2:
Журнал для успешного преобразования можно найти в Здесь * 10 44 * Журнал неудачного преобразования отрендеренного изображения можно найти по адресу Здесь
Примечание:
• Сценарий здесь свернут и код отделен от длинного кода.
• В команде Linux я добавляю ./
для FFMPEG