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

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

  • Удивительно, что в 2017 еще кому-то надо объяснять, что в любых видео IT-докладов, после звука, самым важным является экран. Если можно обойтись звуком — это значит, либо технологий там совсем не было (менеджеризмы), либо это мастера техноподкастов, и рассчитывают именно то, что экрана нет, «все говорим словам».
  • Но никакие слова не спасут, если идет лайвкодинг.
  • Тем более удивляет, что в 2017 еще кто-то вот так снимает видео хардкорных лайвкодингов.

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

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

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


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

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

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

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

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


Да, существуют самостоятельные HDMI-рекордеры, даже с личными экранчиками, или слепые фреймграбберы-трансляторы, которые гонят закодированный поток куда-то в интернет.

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

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

Минусы:

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

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

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


Ибо мир цифровой видеопередачи еще не пришел. Куча залов до сих пор оборудована VGA-проекторами и т.п. Вот неделю назад снимал SECR-2017 → три из четырех залов → VGA. Причем в одном из залов, максимальное разрешение — XGA (1024×768). Шах и мат Elgato. Даже если пригнать конвертер, скейлер… нет, можно конечно… Сначала скейлер и конвертер HDMI в VGA, потом Kramer-скейлер на 1024×768… но это не очень бюджетно, с потерей качества… и если честно — я так пытался, и внезапно, что-то пошло не так с этими двумя крамерами → картинка стала как-то урезанной и не чинилось.

Так что сразу расскажу о еще одних фреймграбберах. Epiphan DVI2USB, VGA2USB и т.п. Тут у меня тоже долгий опыт более чем десятком этих девайсов. Кратко:

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


Минусы:

  • Да, опять не работает под Linux — причем тут производитель вроде как поддерживает, но в реале, там нет грамотной DKMS реализации драйверов, а какие-то захардкоженные блобы под фиксированные федоровские ядра... в общем, ад какой-то. Я помню, честно долго пытался, но плюнул.
  • Блин! Инженерный факап. Нет сплиттинга или продолжения видеосигнала, как в Elgato. Т.е. ты сначала должен рассплитить, VGA или DVI видеосигнал, и пригнать ответвление в девайс. И тут начинается адок согласований разрешений между ноутом, проектом-плазмой, и этим девайсом. Killmepls. Причем отдельно под VGA, отдельно под DVI (там еще хуже, если кто знает слова Edid, наверно понимает мою боль). В результате, если не прибегать к профессиональным скейлерам, и пытаться и цифру этим захватывать, сетап получается страшный, переплетение проводов, разные сплиттеры, какие-то прокладки типа Gefen DVI Detective… и что-то где-то все равно не работает, или вдруг все ломается, если переподключают другой ноут.


Тут надо упомянуть о еще одной проблеме. Которая, даже если вы не организатор, но занимаетесь видеозаписью и копаетесь с сетапом фреймграбберов вокруг кафедры докладчика → падает на вас.