Як отримати майже ідеальну якість запису на екрані?


27

Хтось запропонував мені направити копію немодифікованого X-дисплея у файл і потім перетворити цей файл у відеофайл загального призначення. Які команди я використовую для цього в системі Kubuntu? (Редагувати. Він сказав щось про приєднання до файлу порту дисплея.) Якщо це неможливо, який найкращий варіант для запису на екрані чудової якості, який не залежить від швидкого обладнання?

Передумови: я спробував використовувати avconv з -f x11grab та деякими програмами GUI. Однак, що б я не намагався, отримане відео або має артефакти / розмитість, або є задимленими (відсутні кадри). Можливо, це пов'язано з обмеженнями процесора / пам'яті.

Цілі:

  • Якість відео не повинно помітно відрізнятися від того, щоб побачити сеанс безпосередньо на екрані, оскільки мета - демонструвати анімаційну програму.
  • Заключне відео має бути у загальному форматі, який можна надсилати користувачам Windows та використовувати в Інтернеті. Я думаю, що H.264 MP4 повинен працювати.
  • Рішення не повинно передбачати багато попередніх знань. Я знайомий з командним рядком та основними командами Linux, але я все ще вивчаю Linux і не знаю багато про відеокодеки.

Що я вже спробував:

  • Найкраща команда поки:, ffmpeg -f x11grab -s xga -r 30 -i :0.0 -qscale 0.1 -vcodec huffyuv grab.aviа потім перетворити на mp4 за допомогою ffmpeg -i grab.avi -sameq -vcodec mpeg4 grab.mp4.
    • Якість зображення чудова, але в моїй тестовій системі вона відстає від комп'ютера. У більш швидкій цільовій системі вона не відстає, але кадри явно пропускаються, що робить відео не дуже гладким .
    • Я все ще намагаюся розібратися, як зберегти файл grab.avi в SHM, щоб побачити, чи це допомагає.
  • Використання GUI-рекордерів у Стамбулі та RecordMyDesktop
  • Проста команда: avconv -f x11grab -s xga -r 25 -i :0.0 simple.mpgвикористання avconv версії 0.8.3-4: 0.8.3-0ubuntu0.12.04.1
  • Додавання -codec:copy(зазнає невдачі з: Requested output format 'x11grab' is not a suitable output format)
  • Додавання -same_quant(дає чудову якість, але дуже хитра / відсутні багато кадрів)
  • Додавання -vpre lossless_ultrafast(зазнає невдачі з: Unrecognized option 'vpre', Failed to set value 'lossless_ultrafast' for option 'vpre')
  • Додавання різних значень -qscale
  • Додавання різних значень -b
  • Додавання -vcodec h264(виходи багаторазово: Error while decoding stream #0:0, [h264 @ 0x8300980] no frame!)
    • Примітка: h264 вказаний у avconv -formatsвиході якDE h264 raw H.264 video format

Відповіді:


24

Якщо ваш жорсткий диск дозволяє, ви можете спробувати це зробити так:

Спочатку напишіть нестиснений файл:

ffmpeg -f x11grab -s SZ -r 30 -i :0.0 -qscale 0 -vcodec huffyuv grab.avi

ось SZваш розмір дисплея (наприклад, 1920x1080).

Після цього ви можете стиснути його в будь-який час:

ffmpeg -i grab.avi grab.mkv

Звичайно, ви можете змінити компресію, вибрати кодек тощо.



6

Я мав успіх у:

ffmpeg -f x11grab -video_size 1920x1080 -framerate 30 -i :1 \
       -vcodec libx264 -preset ultrafast -qp 0 -pix_fmt yuv444p \
       video.mkv

Ключові моменти:

  • -qp 0: x264 режим без втрат
  • -встановити ультрашвидкий: найменше використання процесора, великий розмір
  • -pix_fmt yuv444p: за замовчуванням, але ffmpeg пропонує yuv420p, що втрачає

Підказка: накриття екрана та веб-камери:

ffmpeg -f x11grab -thread_queue_size 64 -video_size 1920x1080 -framerate 30 -i :1 \
       -f v4l2 -thread_queue_size 64 -video_size 320x180 -framerate 30 -i /dev/video0 \
       -filter_complex 'overlay=main_w-overlay_w:main_h-overlay_h:format=yuv444' \
       -vcodec libx264 -preset ultrafast -qp 0 -pix_fmt yuv444p \
       video.mkv

https://trac.ffmpeg.org/wiki/Capture/Desktop

[редагувати 20180418] Оновлення для Gnome Shell та Wayland:

#!/usr/bin/env python3
from dbus import SessionBus, Interface
from os import getcwd, path
from sys import argv

BUS_NAME = 'org.gnome.Shell.Screencast'
PATH_NAME = '/org/gnome/Shell/Screencast'
INTERFACE_NAME = BUS_NAME
PIPELINE='x264enc pass=qual quantizer=0 speed-preset=ultrafast ! queue ! matroskamux'

if path.isabs(argv[1]):
    name = argv[1]
else:
    name = path.join(getcwd(), argv[1])

bus = SessionBus()
screen_cast = bus.get_object(BUS_NAME, PATH_NAME)
screen_cast = Interface(screen_cast, INTERFACE_NAME)

ret, name = screen_cast.Screencast(name, {'pipeline': PIPELINE})

if not ret:
    print('Error starting screencast.')
    raise SystemExit(1)

try:
    i = input()
except (EOFError, KeyboardInterrupt):
    pass
finally:
    screen_cast.StopScreencast()

1

Ви пробували rfbroxy ?

Я використовую його для запису сеансів на екрані X11.

Ви можете використовувати його в режимі, коли він записує лише зображення, якщо є ЗМІНА.


1

Це вирішення, і, ймовірно, не «майже досконале», оскільки це може залежати від швидкості мережі або інших факторів, які можуть перешкоджати потоку відео.

Використовуйте VNC або Teamviewer і підключіться зі свого ноутбука чи робочого столу до іншої машини. Якщо у вас є ноутбук для Windows або OSX, у вас, ймовірно, є інструменти, які можуть записувати це, і я вважаю, що команда перегляду може записати сеанс самостійно. Спробувати це легко, і ви потім можете вирішити, чи достатньо якість.

Teamviewer має тенденцію до масштабу, але я не знаю, чи це станеться із записаними сеансами.

VNC не стискає та не збільшує масштаб, і ваш монітор ноутбука / настільного ПК потребує більш високої роздільної здатності, ніж у інших машин. Якість хороша. Можливо, переглядач VNC, який ви використовуєте, може записувати. Зараз я перебуваю на Ubuntu, і стандартний переглядач не може цього зробити.

Запис на екрані для показу аудиторії або в Інтернеті - для цього є спеціальні інструменти, які дозволяють залучати кліки, слідкувати за ними та збільшувати їх, а також інші можливості зробити більш зрозумілим, що ви робите. Я пропоную вам поглянути і на них. Google для "програмного забезпечення для запису екрана".


0

Я використовую Camtasia для запису свого геймплейного та онлайн-відео. Також раніше я використовував відеореєстратор Fraps, але під час відтворення кадрів у кадрі падіння. Camtasia дає більш високий FPS , але тільки клопітно проблема в тому , що кожен раз , коли я повинен перетворити вихідний .CAMREC в AVI , як ви можете бачити , введіть опис посилання тут додати описання посилання тут . .Camrec є фірмовим форматом camtasia і не може бути відтворений на будь-яких сторонніх програвачах, таких як Windows Media Player та vlc.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.