#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 для мониторинга статуса задания.