LINUX.ORG.RU

Качество видео при записи с Xvfb

 ,


0

1

Доброго времени суток коллеги. Пилю скрипт на node.js который берет html анимацию и рендерит из нее видео. При запуске на локальной машине выдает качественные 1080p 60fps https://www.youtube.com/watch?v=z2mcrlOE_ss

Но мне надо запускать это дело на сервере - попробовал обернуть это в docker контейнер, поставить в него Xvfb и запускать в нем. Тот же код выдает ужасное качество видео (fps далек от 60) https://www.youtube.com/watch?v=GEx0DGegpB0

Подскажите, возможно ли вообще на сервере эмулировать дисплей, который выдаст 60fps? Возможно стоит использовать другую утилиту, или какие-то варианты кастомизации Xvfb (документацию посмотрел, нашел там только разрешение экрана и dpi)


Скорее всего, проблема не в дисплее, а в кодировщике. 60 fps у тебя локально могли получаться из-за использования видеокарты через vaapi для кодирования видео. На сервере же у тебя выбора нет, кроме как использовать процессор, а всякие готовые пакеты, как правило, используют неоптимизированные настройки кодирования видео на процессоре и перегружают его.

Попробуй написать нужную утилиту сам. У тебя есть Chromium или Firefox, есть Selenium Webdriver, есть ffmpeg, у которого есть входное устройство x11grab. См. https://trac.ffmpeg.org/wiki/Capture/Desktop и https://trac.ffmpeg.org/wiki/Encode/H.264, главная настройка, которая тебе нужна, это -preset ultrafast, и поиграться с -crf на предмет качества. Т.е.:

ffmpeg -video_size 1920x1080 -framerate 60 -f x11grab -i :0.0 -preset ultrafast -tune animation -crf 22 -r 60 test.mp4

По поводу Xvfb и других. Выбор на самом деле есть:

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

Важно: использовать десктоп без композитинга. Т.е. XFCE или MATE + выключить композитинг в настройках.

AEP ★★★★★
()
Последнее исправление: AEP (всего исправлений: 3)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.