Записать видео с VGA-выхода – что может быть проще… Казалось бы. Но увы, на деле всё немного сложнее. В этом посте я расскажу, как для себя решил проблему записи видео с VGA-выхода видеокарты очень старого компьютера, какие были промежуточные решения и на чем остановился. Фанатам старых игр железа, а так же новых технологий и захвата видео посвящается.
Зачем
У вас конечно могут быть иные цели, у меня же появилась следующая потребность: записывать со старых компьютеров видео, которое выводится на монитор. При этом:
- Компьютеры старые и слабые, водрузить на них некий “аналог fraps’а” не представляется возможным. Да и какой софт для записи вы поставите на машинку, где и Win 3.1 пойдёт со скрипом? Да для первого пентиума или для DOS-режима вы тоже вряд ли что найдёте.
- Вариант “воткни видеокарту с ТВ-выходом” тоже не вариант. А если я хочу записать картинку с первой Voodoo или какой-то ещё бОльшей экзотики? И опять же, упираемся в софт. Нужна же универсальность.
- Вариант “запуска на эмуляторе” – не подходит. Игры “позднего DOS’а” умудряются тормозить или идти не плавно даже на современном i7, если эмулировать их DosBox’ом. Если же нам понадобится запустить игру, которая даже на WinXP глючит, и нормально работает на ОС не старше Win98 или Win95, но при этом требует трёхмерного ускорения – тут эмуляторы не шибко помогут, ускорение игровой графики там печальное.
- Снимать экран камерой? Нет, существуют любители “экранок”, но этот способ попахивает извращением и “последним шансом”.
Железо для захвата
В качестве машинки для захвата видео был использован такой вот компьютер:
Процессор: Intel Core 2 Duo E4500, 2.2 ГГц
Видеокарта: NVidia 8800 GS
Оперативная память: 2 ГБ DDR2
Жесткий диск: WDC WD1600, подключен по SATA
Специально я его не подбирал – он просто оказался под рукой.
Попытка номер раз — китайская
Первой попыткой была следующая идея: а что если подобрать VGA-to-TV адаптер? Дёшево и сердито. А писать полученную картинку будем ТВ-тюнером, у меня как раз был такой от фирмы Beholder (моделька с номером 503, вариант под шину PCI). Сказано – сделано. Был за 20$ куплен вот такой вот китайский адаптер под названием VGA to TV RCA Composite S-video Converter Box for PC Laptop TTH-123462:
Интересные моменты этой железяки:
- Питается по USB-кабелю (в устройство идёт круглый штекер, наружу – обычный USB)
- Имеется переключатель NTSC/PAL
- Кроме VGA-входа есть и VGA-выход! Можно одновременно подключить монитор и тв-тюнер или телевизор. Падения качества картинки на параллельно воткнутом мониторе не заметил.
- Судя по описанию (не проверял!) можно отправлять сигнал и в обратном направлении, т.е. TV -> VGA.
Идея выглядела здравой, но… Вот несколько скриншотов из получившегося видео.
Дело в том, что какое-бы не было разрешение на входе – на выходе будет телевизионное. И тут нет артефактов сжатия, нет, это именно выходная картинка. Результат получается тёплым, ламповым и мутноватым. С другой стороны, для 20$ + цена тюнера (на который мне не пришлось тратиться) – результат приемлемый. Но хотелось то большего…
Попытка номер два — полноценная
После попытки с тюнером стало ясно, что дешевыми решениями не отделаться. Порывшись по магазинам, я обнаружил, что единственным доступным вариантом является плата AVerMedia Game Broadcaster HD, уже под PCI-E. Это НЕ последняя модель в линейке, но есть нюанс: она похоже последняя, имеющая VGA-вход для захвата. Более поздние имеют только HDMI и стоят в 2 раза дороже. А нам нужен VGA!
Цена вопроса: 4-5 тыс. рублей.
Для начала – позитив, скриншоты из видео:
Как, надеюсь, видно, результат заметно лучше. Опять же, HDMI-вход, а значит – возможность писать видео с современных консолей или, например, android-устройств. Позитивно. Удобно.
Отдельный приятный момент – в режиме “превью” на компьютере картинка показывается без отставаний, в реальном времени, если конечно мощностей компьютера хватает (об этом – ниже).
А теперь – недостатки, проблемы и клизма дёгтя
- Софт. Комплектный софт идёт только под Windows Vista и выше. Хотите вариант под Windows XP? Качайте с сайта производителя. Учитывая, что на CD с драйверами и софтом свободно порядка 70% места (занято районе 180 МБ) – я не знаю, как это назвать. У меня на том компьютере Windows XP лицензионная, мне обидно.
- Захват разрешения ниже 640x480. Официально не поддерживается. При попытке получаем или сообщение об неподдерживаемом разрешении, или мусор вместо сигнала. Но, слава опенсорсу, если воспользоваться программой VirtualDub – можно стабильно записать картинку и в разрешениях ниже 640x480. Выглядеть правда будет как-то так:
Т.е., картинка реально пишется в 640x480, но мусором на полях. Впрочем, никто не мешает нам лишнее отрезать, причем на лету (ещё раз спасибо авторам VirtualDub)
- Запись видео с Voodoo и Voodoo 2.
Родная утилита – пишет пару секунд, теряет сигнал, пару секунд показывается надпись “No Signal”, находит сигнал, пишет пару секунд, теряет сигнал… И так по кругу.
VirtualDub пишет без проблем и возражений. Вот так-то вот. Опять опенсорс на коне. ;)В принципе, можно писать и на родном софте картинку с Voodoo. Для этого нужно подключать voodoo к базовой карточке не классическим образом, через отдельный кабель:
А перетыкать кабель от монитора между обычной картой и Voodoo’вской при запуске/выключении игры под voodoo. Жить так можно, но разве что жизнь?!
- Запись звука придётся вести отдельным шнурком, т.е. например, из линейного выхода звуковой карточки первого компьютера в линейный вход компьютера для записи. Ну да это-то нормально. А вот звук по HDMI не пишет, придётся кидать точно так же через отдельный кабель. Сие уже не очень радостно, но для кого-то может быть важным.
- Мощность компьютера для записи и кодирования видео.
Указанного в начале статьи компьютера хватает, что бы в реальном времени писать и кодировать видео в h264 – но только до разрешения 800x600. Попробовав писать 1280x720 я получил пропуск кадров на финальной записи. А вот в MPEG2 в реальном времени в этом и большем разрешении пишет легко, но качество картинки выходит визуально немного похуже. - Разрешения.
При подключении по VGA разрешение 800x600 родной утилитой у меня один раз записалось в 720x576, без каких либо объяснений и объявления войны.По HDMI картинку с мобильной android-консоли (разрешение экрана 800x480) записало в 720x480 (хана пропорциям).
С VirtualDub таких неожиданностей не возникает. Короче, хотелось бы родную утилиту в утиль отправить, но нет в мире совершенства. При попытке писать входящий сигнал в 1280x720 (хоть VGA, хоть HDMI) – VirtualDub выводил на экран какую-то лажу вместо изображения, ну и пишет в файл соответственно тоже бред. Зато если на вход подать 1280x720, а VirtualDub сказать, что на входе на самом деле 1920x1080 – будет писать как миленький, но растянув разрешение до 1920x1080. Родная утилита пишет всё как надо.
Выводы делайте сами. Если знаете лучший способ писать видео по VGA – добро пожаловать в комментарии!
P.S. Видео-примеры не выкладываю по следующей причине: если бы я выложил его на ютуб на свой канал, то топик пришлось бы перенести в раздел “я пиарюсь”. Другие видео-хостинги или неудобны, или имеют ограничение на игровое видео. Если есть интерес – пишите в личку, дам ссылки на видео того и другого варианта.
Спасибо за внимание! Для самых терпеливых читателей – бонусная кошка, как и обещал. :)
Автор: Newbilius