Захват экрана — за ценой не постоим

Материал из 0x1.tv

  • Удивительно, что в 2017 еще кому-то надо объяснять, что в видео любых IT-докладов, после звука, самым важным является экран. Если можно обойтись звуком — это значит, либо технологий там совсем не было («менеджеризмы-гуманитарщина»), либо это мастера техноподкастов, и рассчитывают именно то, что экрана нет, «все говорим словами и яркими метафорами, для тех, кто хорошо понимает».
  • Но никакие слова не спасут, если идет лайвкодинг.
  • Тем более удивляет, что еще в 2019 кто-то вот так снимает видео ([4] + [5]+…) хардкорных лайвкодингов, или в 2021 году умудряется выносить мозг дрожащщим экраном.
  • Конечно, «перебор» в духе сьемок ITшных конф ([6]), когда экран большой, на докладчика осталось пара пикселей в углу, даже когда на слайдах пара слов — не очень хорошо, но для IT и прочих технологий и наук, лучше, чем наоборот, «докладчик без читаемого экрана»

Экран должен быть,

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

Как же этого добиться?


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


И если вы, читатель, как раз этот самый режиссер или где-то рядом — умоляю, при трансляции программистких докладов всегда показывать экран, особенно если там идет лайв кодинг. Нет, показа на 5 секунд слайдов при их смене недостаточно[1] — так теряется возможность перематывать запись, искать пропущенное, восстанавливать контекст. Ну а если прервалось живое демо, то это вовсе фейл. И это не извиняет то, что вам захотелось показать киношную картинку пота на лице ботана-спикера, ни красивую девушку в зале, ни прикольного бородача в смешной футболке… Ибо в таком случае, как запись обычно всегда публикуется то, что пошло в эфир, часто даже оставляя ненарезанным лежать на каком-нибудь ютубе, т.е. фарш обратно не проворачивается, никто перемонтировать из исходников уже не будет, если произошла ошибка.


Что же делать остальным конференциям, не могущим раскошелится профессиональных видеотрансляторов — пара грузовиков оборудования, взвод профессионалов — дешево быть не может?

Скринкастинг, фреймграббинг, и запись экрана камерами (SECR-2017, зал 3).png

Понятное дело, в любом случае, экран надо записывать.

Самый простой, дешевый, и очевидный подход — запись скринкаста на ноутбуке докладчика. Организаторы обычно предоставляют ноутбуки и иногда десктопы для выступающих, понятное дело, могут поставить любой скринкастер, множество их.

Но есть нюансы. Проблемы скринкастинга следующие:

  • Торможение. Упаковка видео неслабо ест CPU, и соответственно, часто мешает докладчикам. Мало того, что начинают тормозить модные анимации и переходы в могучем поинте, так ведь при лайв демо начинается эффект «уже сейчас видно, что все будет глючить и тормозить» — поэтому «профессиональные евангелисты» как только это заметят, сразу потребуют убрать все это (запись им неважна, они с одной темой, как шарманщики, выступают тыщи раз, а вот фейла позволить себе нельзя).
    • Самое простые воркараунды:
      • понизить FPS: обычно 12FPS достаточно для лайв демо, часто даже хватает 6FPS, не говоря уже о «тупо слайдах».
      • запускать скринкастер с самым низким приоритетом. «start /IDLE» или «start /LOW» под Windows, «nice» под Linux и т.п.
  • Рассинхрон с «истинным временем». Особенно, если скринкастер запустили с низким приоритетом, но даже самый высокий приоритет ни от чего не спасает. Разумеется, если просто тупые слайды, а ноутбук достаточно мощный — это маловероятно. Но вот если лайвдемо, показ видео... начинается временной дрейф и ад для видеомонтажера.
    • Для решения этой проблемы, я давным-давно сделал Screen2Log, скринкастер, мало грузит, только один тред, с низким приоритетом, пишет блоками фиксированного времени, и даже при перегрузке, будут локальные дропы фреймов, но глобальное время «не поползет». Так себе конечно поделка, однако активно использовалась мной, и до сих пор используется организаторами известных IT-конференций на пространстве СНГ.
  • При скринкастинге есть проблема «режима докладчика». Есть докладчики, которым пофиг, можно включать режим «зеркала», то, что запишет скринкастер — то и было на экране. Но есть те, кому нужен режим докладчика — с подсказками что говорить, какой слайд будет следующим, а реальная демонстрация идет на внешнем мониторе, не попадающем в область записи скринкастера. Иногда это не проблема — если слайды тупы, мелких деталей нет, то тогда да, только надо попыхтеть видеомонтажеру, вырезая «центральный слайд» из общего режима докладчика. Да, теряется разрешение, качество, но жить можно. Можно даже поиздеваться, и отдельно «спалить» зрителям подсказки докладчика. Было дело, баловался я и таким [7]. Но часто — когда переходы, или не дай бог, видео, вот там, на записываемом экране режима докладчика их нет.
    • Воркараунд — делать сразу режим докладчика и писать «весь экран» (или только второй). Но тут проблема, что могут подключаться докладчики со своими ноутбуками, 100500 причин, почему сбросят настройку внешнего монитора обратно на зеркало, и запишется пустота. В Screen2Log я вроде делал адаптивное слежение за разрешение в режиме «--fullscreen», и это давало возможность как-то не потерять контент (хотя видеомонтаж тоже был уже не совсем тривиальным).

… Но все это не спасает от докладчика со своим ноутбуком. Иногда это сверхоправдано — лайвдемо хитрой системы, лайвкодинг в хитром сетапе, иногда докладчик просто беспокоится что не будет правильных шрифтов или будут проблемы совместимости версий поверпоинта.

Что делать, если пришел понтовый доклачик, с виндовым ноутом, но за три минуты до доклада выяснилось, что выступать он будет только с него, «проблемы негров видеомонтажера шерифа не волнует», поставить себе на комп, понятное дело, ничего не даст? Тут я рекомендую скачать мой виндовс-краш-комплект, с портамбл-VLC, запускаемым с низким приоритетом, и записывающим видео автоматически, туда же, откуда он запущен, с автоматическим именованием по астрономическому времени. Заведите не очень тормозные флешки с этим комплектом, просто тупо втыкайте и запускайте у докладчика, без инсталляции, потом забирайте флешку. Если не очень-очень-очень слабый нетбук, тормозить не должно. Да, возможно придется помучаться потом, при монтаже — получающихся FLV нужно будет наверняка перекодировать, прежде чем его смогут съесть видеоредакторы, возможнен рассинхрон… но в любом случае, это сильно лучше, чем ничего, или запись экрана камерой.

  • Но а если у докладчика Мак …  — срочно запускайте QuickTime, он умеет записывать…
  • А если Linux ? …  — что может быть проще, чем набить по памяти
nice -n 19 ffmpeg  -f x11grab -r 8 -s $(xwininfo -root | grep 'geometry' | awk '{print $2;}') -i :0.0 -an -vcodec flashsv -vb 1000 -vsync 1 -y $(date "+%F-%H-%M-%S").flv

… ну и поставить ffmpeg если вдруг его нет …

Примерно тут, разумный читатель, как лебедь из анекдота про уточку и лебедя, хочет сказать «Так. Н***й.».

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

Level Up! Следующий уровень игры — фреймграбберы.


Куча Atomosов.jpg

Да, существуют самостоятельные HDMI-рекордеры, даже с личными экранчиками (у меня есть несколько и таких) — но это не панацея.

Atomosы требуют кучу Kramerов.jpg

Увы, там в них захардкожен (как восприятием, так и возможностями странных кодеков) очень узкий спектр входных расширений в основном 1080p, и 720p, которых они не всегда даже хватают — в общем, на каждую такую коробочку у меня пара крамеров — причем не только VGA→HDMI, но и дополнительно HDMI→HDMI Kramer VP-424, т.е. приходится специально ублажать такую коробочку, чтобы она снизошла до вашего видеосигнала.

Есть и слепые фреймграбберы-трансляторы (таких нет, но видел вживую), которые гонят закодированный поток куда-то в интернет. Если вы религиозный любитель Open Source и Open Hardware, есть Numato Opsis, который таскает с собой Debian Video Team.

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

Elgato Game Capture HD60.png

Для HDMI — массовый фреймграббер, ориентированный на игроманов Elgato Game Capture HD/HD60. Неплохая штука, плюсы:

  • даже нет смысла гнаться за 60FPS на записи конференций, даже 30FPS достаточно для всего, включая видео и динамичные демонстрации (ну разве что это конференция геймеров, и надо показать именно достижение 60FPS и выше) можно брать более старую модель, что достаточно дешево на ебее,
  • грамотно реализованы входы-выходы — есть HDMI-вход, есть HDMI-выход, т.е. не обязателен сплиттер, можно вставать «в разрыв» и записывать;
  • компактный, у меня их околодесятка … и не очень дорогой — я недолго плачу, если вдруг теряю его на конференции.

Минусы:

  • Родной софт только под винды.
    • Мелочь, но иногда на линукс-конференциях докапываются красноглазые линуксоиды «чо не опенсорс, пачему винда в зале». На самом деле, под классический «Game Capture» есть экспериментальный реверсинг драйверов, хотя и там вас ждет квест — ибо где начинается железо, кончается опенсорс, начинаются проприетарные прошивки и т.п. Я честно говоря не игрался, ибо принял за основу что фреймграббинг идет из под виндов (дополнительные причины дальше). Если у кого нормально заработает — пинганите меня, буду рад.
    • Поддерживает не все разрешения. 1280x720 & 1920x1080.
  • Захватывать стандартным софтом, ориентированным на VfW-устройства (тем же ffmpegом) нельзя.
    • Весьма странный родной софт, ориентированный под геймеров. Для записи конференций, надо обязательно пройтись в настройках, отключить таймшифтинг, принудительную конвертацию входа в 640x480, обязательную конвертацию стримов в MP4 (не дай бог, остановите запись, и комп будет загружен насмерть конвертацией, вместо записи следующих частей). Иногда софт глючит — не запускается (делает вид что пишет, а на самом деле нет). Есть нюансы. Нужно точно заранее проверить, что сетап, конкретная версия софта работает, запустить запись задолго до начала конфы, ну и проверять иногда.
    • При сильной загрузке кодирующего ноута на динамичных сценах может «ползти время» (как в случае с скринкастером).
    • Самое обидное — если софтина внезапно дохнет (разрядился ноут, перегрев), все записанные файлы могут сдохнуть. Так, что не найдешь photorecом-testdiskoм. Не понимаю, как они этого добились. Если внезапно выключить принимающий компьютер — я думал, стриминг контейнер «.TS» невозможно повредить... но тут вообще может пропасть последний файл (буферизуют в памяти? в секретных временных каталогах? — выяснить не удалось).
    • Может начать «рваться» принимаемый сигнал. Вообще непонятно с чем связано, возможно с загрузкой ноутбука… но это неточно. Просто надо знать что такое может быть.
    • Славабогу, хотя бы его стал видеть (не как VfW, а отдельно), Open Broadcaster Software. Т.е. можно и транслировать

Лет через 5-10, тут наверно можно было бы прекратить читать, наверно больше ничего не пригодится. А если не закроют границы, все это железо должно стоить копейки.

Но. Пока надо продолжать дальше.


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

Вот неделю назад снимал SECR-2017 → три из четырех залов → VGA. Причем в одном из залов, максимальное разрешение — XGA (1024×768).

Шах и мат Elgato. Даже если пригнать конвертер, скейлер… нет, можно конечно cначала скейлер и конвертер HDMI в VGA, потом Kramer-скейлер на 1024×768… но это не очень бюджетно, с потерей качества… и если честно — я так и пытался, и внезапно, что-то пошло не так с этими двумя крамерами → картинка стала как-то урезанной и не чинилось.


Epiphan VGA2USB LR.jpg

Так что сразу расскажу о еще одних фреймграбберах. Epiphan DVI2USB, VGA2USB и т.п. Тут у меня тоже долгий опыт более чем десятком этих девайсов. Как ясно из названия, они захватывают VGA и DVI. Тот, которые DVI2USB, VGA тоже может, если это только не «DVI2USB Solo» (был у меня и такой).

Кратко:

  • Неплохое качество оцифровки и картинки.
  • Старается адаптироваться под разрешение.
  • Видна как нормальный Video4Windows девайс, т.е. можно плюнуть на уродский стандартный софт, захватывать старым добрым ffmpegом, для чего я написал несложный скрипт, который поднимает, если что упало, перезапускает, если сменилось разрешение и т.п.
    • Нормально видна из Open Broadcaster Software.
Epiphan DVI2USB.png

Минусы:

  • Да, опять не работает под Linux — причем тут производитель вроде как заявил поддержку, но в реале, там нет грамотной DKMS реализации драйверов, а какие-то захардкоженные блобы под фиксированные федоровские ядра... в общем, ад какой-то. Я помню, честно долго пытался, но плюнул.
  • Блин! Инженерный факап. Нет сплиттинга или продолжения видеосигнала, как в Elgato. Т.е. ты сначала должен рассплитить, VGA или DVI видеосигнал, и пригнать ответвление в девайс. И тут начинается адок согласований разрешений между ноутом, проектом-плазмой, и этим девайсом. Killmepls. Причем отдельно под VGA, отдельно под DVI (там еще хуже, если кто знает слова Edid, наверно понимает мою боль). В результате, если не прибегать к профессиональным скейлерам, и пытаться и цифру этим захватывать, сетап получается страшный, переплетение проводов, разные сплиттеры, какие-то прокладки типа Gefen DVI Detective… и что-то где-то все равно не работает, или вдруг все ломается, если переподключают другой ноут. Сколько крови и жизни это у меня выпило.
  • FPS в общем зависит и от разрешения и от мощности пакующего ноута, ибо отдается сырое видео (в Elgato сжатый канал), но в общем, 25fps мне удавалось выжимать только на XGA, обычно меньше. Это обычно проблема только для видео-вставок.
  • Иногда таки не может подхватить какие-то разрешения, определенных ноутов. Например, старый добрый бизнес-ноут HP 2540p дает 1280x800, которых не берет второе поколение DVI2USB, но берет VGA2USB HR/LR/… , и первое поколение DVI2USB.


Kramer VP-728 01.jpg

И как раз сразу, надо упомянуть о еще одной проблеме. Которая, даже если вы не организатор, но занимаетесь видеозаписью и копаетесь с сетапом фреймграбберов вокруг кафедры докладчика → падает на вас. А именно, как подключить ноут хрен знает какого нового безумного мака или еще более безумного айпада-планшета к VGA… или наоборот, VGA к HDMI… или вроде и там и там HDMI — но не контачит... (не договорился по разрешению, по HDCP, еще что...) В общем, если нужна какая-то надежность, лучше вместо ящика сплиттеров, переходников, конвертеров… тащить проверенные универсальные модели сплиттер-конвертер-скейлер всего-во-все. Kramer 728, Kramer 737, или хотя бы Kramer 426 или 461… чтобы во входах был HDMI и VGA, и на выходе HDMI и VGA. Тогда можно например, захватывать по HDMI при VGA-проекторе, или наоборот, по VGA при HDMI-проекторе, + HDMI-сквозной записи, если разрешение 720p или 1080p… Но иногда одним скейлером не обойтись, приходится брать еще долнительный HDMI-чинитель, типа Kramer-424… Да и использование скейлеров часто приводит к проблемам с цветами (задирается контрастность, теряются мягкие полутона, и т.п.).

Тогда приходится перезаписывать скринкаст, или потрошить презентацию и прибивать слайды вручную:

Захват экрана — за ценой не постоим 2018-10-16 11-17-31 image0.png

… Мда, счастливого конца не получилось. «Мир приключений и факапов форевер». Ну а я, для то надежности, тащу и Elgato и Epiphan-фреймграбберы чтобы писать параллельно с обоих, и кучу Kramerовских скейлеров, и кучу ноутов для записи — про них вообще говорить сейчас не хочу (а раньше еще ноуты для докладчиков таскал), плюс врубаю по возможности скринкастинг... и все это для того, чтобы докладчики гарантированно подключились к хрен знает чему, и экран был более-менее гарантированно записан, и видео качественно смонтировано.

Если же у вас есть позитивный опыт, как сделать вот это все, надежней и качественней, и при этом компактно — плиз, расскажите в комментариях.

  1. ну вот — «ссылка даже на мнение посторонних», если мне не верите.