Как разделить и конвертировать видео с помощью PHP и FFMPEG

#php #ffmpeg #flv #mp4 #video-conversion

#php #ffmpeg #flv #МР4 #видео-конвертация

Вопрос:

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

Есть ли какой-либо способ, которым я могу это сделать?

Ответ №1:

Я не думаю, что есть какой-либо способ сделать это непосредственно в PHP. Даже если бы это было так, это было бы не самым разумным решением.

Лучше всего подключить ваше веб-приложение к программе командной строки, такой как ffmpeg, и вызывать системные команды из PHP-скрипта.

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

Это означает, что вашим пользователям не придется ждать перекодирования видео в режиме реального времени.

Ответ №2:

У меня нет способа разделить видео на сегменты. Для конвертации видео смотрите примеры здесь — http://www.ffmpeg.org/ffmpeg-doc.html#SEC18.

Ответ №3:

На самом деле, вы могли бы использовать FFMPEG-PHP для захвата неподвижных кадров из видео в определенное время, используя $movie->getFrame() метод для ffmpeg_movie объекта, вплоть до того, что пользователь может регулировать время.

Как только вы определитесь с ключевыми кадрами, на которые хотите разделить видео, вы можете выполнить команду ffmpeg из своего PHP-приложения.

Я бы предложил интегрировать PHP Resque (основанный на Ruby Resque, который я часто использую) для постановки в очередь фактического выполнения команд ffmpeg, поскольку в противном случае это остановило бы ваше приложение. Просто настройте класс с perform() методом для выполнения ffmpeg , и вы можете использовать PHP Resque для мониторинга статуса задания.