Создать видео файл с помощью PHP - PullRequest
8 голосов
/ 05 мая 2011

У меня есть сценарий для создания видео файлов с использованием diff.активы, такие как изображения, аудиофайлы.

Что я хочу сделать, так это найти аудиофайлы из определенной папки и установить его в качестве фоновой музыки, а также извлечь изображения из определенной папки и показать эти изображения одно за другим.

Итак, в основном у меня есть изображения и аудиофайлы, и я хочу создать видеофайл с использованием этих ресурсов с использованием PHP.

Может ли кто-нибудь предложить начальную точку для этого?Я сделал захват изображения из видео и конвертировал видео с помощью Ffmpeg, поэтому я подумал о Ffmpeg, но, думаю, он не позволит создать видео.

Ответы [ 4 ]

17 голосов
/ 05 мая 2011

ffmpeg позволит создавать видео из фотографий.

Например, для создания видео с частотой кадров 10 кадров в секунду из изображений 001.jpg .... 999.jpg:

ffmpeg -r 10 -b 1800 -i %03d.jpg test1800.mp4

Вы можете мультиплексировать потоки (аудио и видео), например (добавить соответствующие параметры кодека для битрейта и т. Д.)

ffmpeg -i video.mp4 -i audio.wav -map 1.1 -map 2.1 output.mp4

Я не буду вдаваться в подробности, так как ffmpeg - это боль (аргументы меняются несовместимыми способами между версиями и в зависимости от того, как он был скомпилирован), а также найти настройку скорости / сжатия / разрешения, которая подходит для вы методом проб и ошибок.

5 голосов
/ 07 декабря 2012

В Ubuntu вам нужны PHP5, ffmpeg и доступ к бинарному файлу ffmpeg, это может быть легко достигнуто с помощью:

apt-get install php5 ffmpeg

Я использую эту функцию php для создания видео в формате mp4 из одного изображения в формате gif и одного файла mp3, исходное и выходное видеоизображения имеют размер 720x576 пикселей:

function mix_video($audio_file, $img_file, $video_file) {
    $mix = "ffmpeg -loop_input -i " . $img_file . " -i " . $audio_file . " -vcodec mpeg4 -s 720x576 -b 10k -r 1 -acodec copy -shortest " . $video_file;
    exec($mix);
}

пример использования:

$audio_file = "/path/to/mp3-file";
$img_file = "/path/to/img-file";
$video_file = "/path/to/video-file";

mix_video($audio_file, $img_file, $video_file);
4 голосов
/ 10 мая 2011

Решение Фила - правильный подход.Выясните, что нужно сделать, документируя себя на ffmpeg (это грязно, и я не могу винить его за то, что он не хотел делать домашнее задание), а затем вызывать его изнутри php.

Беглый поиск в Google показывает phpобертки (например, http://ffmpeg -php.sourceforge.net / ).Если ни один из них не является недавним / завершенным, придерживайтесь необходимых команд оболочки из php.

3 голосов
/ 15 мая 2011
ImageMagick convert -delay 100 -quality 75 photo1.jpg photo2.jpg movie.mpg

Или

http://dvd-slideshow.sourceforge.net/wiki/Main_Page
...