LINUX.ORG.RU

screencasting, формат кодирования видео

 ,


0

4

В качестве ликбеза, хотел спросить, есть ли специальные форматы видео для передачи действий пользователя на экране? Недавно отсылали отчёт об ошибкам разработчикам программы. Они попросили записать скринкаст. Записали, получилось 22 мб, в формате mpeg4, что логично, ведь подобные видеоформаты создавались для кодирования видео, где каждый кадр кодируется по алгоритму подобному jpeg, если проводить аналогии со статичной картинкой, в то время как для схем лучше подходит gif, png. Логично предположить что для передачи манипуляций пользователя с GUI можно транслировать статичное положение экрана, показав только перемещение мыши. Есть ли какие либо специфичные форматы для этого? Как я понимаю это называется скринкастингом.

★★★

h265, только он проприетарный и вообще фу. поэтому av1.

anonymous
()

скринкастингом называется запись экрана любым способом. Конкретно такой формат

Логично предположить что для передачи манипуляций пользователя с GUI можно транслировать статичное положение экрана, показав только перемещение мыши

есть для Weston, называется wcap. См. здесь: https://github.com/wayland-project/weston/tree/master/wcap. Не знаю, есть ли такое для иксов.

anonymous
()

где каждый кадр кодируется по алгоритму подобному jpeg, если проводить аналогии со статичной картинкой

Не только каждый кадр, но есть и межкадровое сжатие.

в то время как для схем лучше подходит gif, png

jpeg просто плохо кодит контрастные линии, типа схем. h264 вполне хорош для всего. Качество может пострадать на другом уровне - при даунскейле RGB>I420 (из-за прореживания в 4:2:0). Пиши в 4:4:4, h264 умеет.

anonymous
()

Строго говоря для записи манипуляций с gui видеоформаты подходят плохо. Зато ещё в win3.* был внедрён какой то формат записи этих самых действий, достаточно быстрый и компактный для компов того времени, но насколько я знаю импорт и передача этих сценариев не предусматривалась. Есть vnc и прочие способы удалённого управления, они великолепно передают взаимодействие с gui на удалённые клиенты, но не умеют ничего сохранять. А вот чтобы прям совсем взять и подготовить исчерпывающую и красивую запись (со всем клавиатурным вводом. кликами, движениями мыши, состоянием устройств и т.д.), да ещё без тонны лишних битмапов, никогда не слышал.

А если вернуться с небес на землю, к простенькой задаче создания скринкаста, вам всего то надо выбрать программу для записи по удобству использования и настроить ей видеокодек исходя из задачи и возможностей железа. Больше или меньше кадров в секунду. Более чёткая картинка или меньше файл, высокоэффективный кодек или низкая нагрузка на процессор (видокарту), и т.д.

kirill_rrr ★★★★★
()
Ответ на: комментарий от kirill_rrr

формат записи этих самых действий

Ага, если будут сбои - веселье обеспечено. Эмулятор Nintendo так пишет. Писал игру в Марио. Потом запустил воспроизведение, что-то глюкануло и Марио начал бесцельно прыгать туда сюда, ох и уржались все.

Deniskx
()

Основная проблема, которая возникает при скринкастинге, это то, что процессор не успевает с нужной скоростью кодировать видео. Поэтому нужно делать, как написано здесь: сначала писать, потом кодировать. Вот, пробую на своем:

ffmpeg -f x11grab -s 1920x1080 -r 30 -i :0.0+0,1080 -qscale 0 -vcodec huffyuv grab.avi
ffmpeg -i grab.avi grab.mkv
В итоге 8 секунд видео — 0.5ГБ файл. После сжатия получается около 2.5МБ. Зато честные 30 кадров в секунду. Напрямую так не получается.

Понятно, что нужен шустрый винт, SSD или большой объем оперативы (я баловался в /tmp, но у меня оперативы всего лишь 6ГБ, и /tmp занимает половину — по умолчанию).

anonymous
()
Ответ на: комментарий от Deniskx

Ну, в марио может и не работало, а в каждой второй стратежке есть такая функция и всё работает. И в некоторых шутерах. А как оно в 3.11 работал я не видел, слишком маленьким был.

kirill_rrr ★★★★★
()
Ответ на: комментарий от anonymous

Зато честные 30 кадров в секунду

попробуй lossless libx264rgb или qtrle — и файлы меньше получаются и скорость больше, чем у huffyuv.

anonymous
()
Ответ на: комментарий от anonymous

Эта проблема уже давно решена сразу 3-мя способами:
1) Кодирование видеокартой, например -vcodec h264_omx -b:v 10M. Разумеется не все видеокарты поддерживают, не все программы умеют, и ещё можно заткнуться в чём то другом. Например у меня на малине Х не успевает отдавать кадры.
2) Специальный быстрый кодек или raw-видео, что вообще тоже кодек. Например я нашёл кодек qtrle. Не знаю как он правильно называется, но он быстрый и всё таки в пару раз уменьшает размер.
3) x11grab -s 1920x1080 -r 30 -vcodec libx264 -preset ultrafast. Не знаю насколько это будет работать для fullHD 30fps, но для 800х600 20fps на бородатом двухядерном мобильном пеньтиуме укладывается в полядра. Вообще думаю хорошо будет работать, потому что там где fullHD, там обычно и процессоры пошустрее и хотя бы 4-х поточные, а энкодер libx264 очень хорошо распаралеливается.

kirill_rrr ★★★★★
()
Последнее исправление: kirill_rrr (всего исправлений: 1)
Ответ на: комментарий от Deniskx

Да, согласен. Но если железо позволяет то можно.
Вот примеры (Здесь):
1) VP9 + Opus + WebM
2) x264 + AAC + Mp4

rEnSbit
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.