Как правильно рендерить видео с информацией рендера в процентах?

Приветствую. Расскажу у проекте в кратце:
Это некий сервис внутри локальной сети (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, а обязательно нужно нарезать видео на части? И зачем это вообще нужно?
    Если в качестве отдачи видео пользователю - то есть смысл. А во время транскодирования, как я думаю, это не нужно...но я могу ошибаться.
  • Дмитрий Кузнецов, да, только для пользователя ) нарезание по идее должно происходить после загрузки видео, а не по его запросу (запрашивается уже нарезанное), и вот как раз в это время и показывать статус
  • AHMED_RAPIRA, Понятно. Большое спасибо за ответ. Чуть более понятней стала эта тема.

 

Для решения данной проблемы вы можете воспользоваться услугами фрилансеров. Мы выполним необходимую работу быстро и качественно.

 

    • Как правильно рендерить видео с информацией рендера в процентах?Есть ответ
    • 09.04.2024
    Ответить

    Для правильного рендеринга видео с информацией о проценте завершения можно воспользоваться HTML5 тегом . Этот тег позволяет создать полосу прогресса, которая отображает текущий прогресс выполнения задачи.

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

    Здесь атрибут value устанавливает текущее значение прогресса, а max - максимальное значение, которое в данном случае равно 100%.

    Для обновления значения прогресса видео в процентах можно воспользоваться JavaScript. Например, если у вас есть переменная videoProgress, которая содержит текущий прогресс видео в процентах, то код может выглядеть следующим образом:

    Этот код обновит значение прогресса в элементе на 50%. Вы можете динамически обновлять значение переменной videoProgress в зависимости от прогресса видео.

    Таким образом, используя HTML5 тег и JavaScript, вы можете создать полосу прогресса, отображающую процент завершения рендеринга видео.

    • Как правильно рендерить видео с информацией рендера в процентах?Есть ответ
    • 07.04.2024
    Ответить

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

    1. Использование JavaScript API плеера: если у вас есть доступ к JavaScript API вашего видео-плеера, вы можете использовать методы, которые позволяют отслеживать процесс рендера видео. Например, для плеера YouTube API вы можете использовать методы onStateChange или onPlaybackQualityChange для отслеживания изменений состояния проигрывания видео и качества воспроизведения.

    php

    2. Использование HTML5 видео элемента: если вы используете HTML5 видео элемент, вы можете отслеживать события, такие как loadedmetadata, timeupdate или progress для отображения информации о проценте рендера видео.

    php

    3. Использование сторонних библиотек: существуют сторонние библиотеки, такие как Video.js или Plyr, которые предоставляют API для отслеживания процента рендера видео и позволяют кастомизировать отображение информации о процессе воспроизведения.

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

Оставить комментарий