На сайте есть анимационный блок, анимация которого производится с применением html5, css, и js. Можно ли как то записать эту анимацию в gif? Использую selenium и метод getScreenshotAs.
Изначально задумка была такая: наделать кучу скриншотов, а потом слепить их в gif файл, но проблема в том, что через метод getScreenshotAs скриншот делается очень долго(350-400мс), поэтому нет никакой плавности(получается 3-4 кадра в секунду, а то и меньше).
Вопрос в следующем, можно ли решить как то эту проблему, если нельзя, то может есть какой то другой способ? Варианты с записью экрана не подойдут, потому что это все будет делаться на сервере, без gui.
Можно отрисовывать Selenium на виртуальный фреймбуфер Xvfb и записывать видео, например, через ffmpeg.
xvfb-run --listen-tcp --server-num=123 --auth-file /tmp/xvfb.auth -e /dev/stdout -s "-ac -screen 0 1024x768x24" firefox ru.stackoverflow.com
123
- номер дисплея xserver на ваш выбор
/tmp/xvfb.auth
- путь, по которому будет сохранены авторизационные данные
1024x768x24
- желаемая геометрия фреймбуфера
firefox ru.stackoverflow.com
- открывает этот сайт в Firefox; замените на вашу строку запуска Selenium
ffmpeg -f x11grab -i :123 -video_size 1024x768 -codec:v libx264 -r 12 video.mp4
-f x11grab -i :123
- источник видеопотока: xserver, 123й дисплей
-video_size 1024x768
- разрешение видеофайла
libx264
- желаемый видеокодек
-r 12
- частота кадров
Для gif-файла кодек указыать не нужно:
ffmpeg -f x11grab -video_size 1024x768 -i :123 -r 12 1.gif
xwd -display :123 -root | convert xwd:/dev/stdin png:1.png
-display :123
- все тот же 123й дисплей
-root
- не имеет отношения к пользователю root; указывает, что нужен скриншот всего рабочего стола, а не конкретного окна
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Сейчас для того чтобы опубликовать обновление приложения в PlayМаркет, требуется API не ниже 26Иначе выдает ошибку: