Как правильно рендерить видео с информацией рендера в процентах?
Приветствую. Расскажу у проекте в кратце:
Это некий сервис внутри локальной сети (PHP - бэк, JS - фронт). Пользователь загружает видео и видео должно отрендериться в несколько форматов (качества), а далее выдать пользователю в плеер или куда-то в другое место (не важно).
Поэтапные действия (как планирую сделать):
1. Пользователь загружает видео. Видео сохраняется в отдельной папке и в базу заносится информация рендеру с путём файла.
2. Далее эта информация отправляется в сервис очередей (какой-нибудь RebbitMq), где запускается очередь для рендера.
3. Видео отправляется на другой сервер, где рендерится в нужные форматы (битрейт, размер и качество).
4. Отрендеренные видео отправляются в отдельную папку и добавляется запись в БД, что рендер завершён.
Но у меня возникают следующие вопросы:
1. Как показывать пользователю процент выполнения рендера?
2. Правильно ли я составил этапы действий или что-то нужно добавить?
3. Что посоветует в качестве транскодирования? Планирую использовать кодировщик HEVC. Использовать стандартный php для этого дела думаю не стоит. Думаю JS или Python подойдут для этих дел.
Был бы более благодарен за развёрнутые ответы тех, кто этим уже занимался.
3. Транскодирование (а не "рендеринг"), насколько мне известно, часто делается с использованием ffmpeg, некий стандарт такой. Там уж точно найдется куча способов логгирования, например ffmpeg-progressbar-cli
Толь ко помечтать могу. Допустим видео нарезается на небольшие куски разного качества (hls подход). Тогда на конкретном инстансе, где видео физически нарезается на диск, нужен какой-то фоновый процесс, который бы мониторил с небольшой периодичностью тупо количество этих кусков, и слал в шину сообщений это число под конкретный job id. В таком случае надо знать количество финальных таких кусков, и теоретически оно должно быть известно. По кроайней мере в mpeg 2 транспорте все измеряется 188-байтными пакетами, можно примерно подсчитать метаданные какие-то
AHMED_RAPIRA, а обязательно нужно нарезать видео на части? И зачем это вообще нужно?
Если в качестве отдачи видео пользователю - то есть смысл. А во время транскодирования, как я думаю, это не нужно...но я могу ошибаться.
Дмитрий Кузнецов, да, только для пользователя ) нарезание по идее должно происходить после загрузки видео, а не по его запросу (запрашивается уже нарезанное), и вот как раз в это время и показывать статус