Программист мобильных приложений
0,1
рейтинг
24 февраля 2014 в 22:19

Дизайн → Записываем видео с VGA-выхода видеокарты — железные методы

Записать видео с VGA-выхода – что может быть проще… Казалось бы. Но увы, на деле всё немного сложнее. В этом посте я расскажу, как для себя решил проблему записи видео с VGA-выхода видеокарты очень старого компьютера, какие были промежуточные решения и на чем остановился. Фанатам старых игр железа, а так же новых технологий и захвата видео посвящается.



Зачем


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

  1. Компьютеры старые и слабые, водрузить на них некий “аналог fraps’а” не представляется возможным. Да и какой софт для записи вы поставите на машинку, где и Win 3.1 пойдёт со скрипом? Да для первого пентиума или для DOS-режима вы тоже вряд ли что найдёте.
  2. Вариант “воткни видеокарту с ТВ-выходом” тоже не вариант. А если я хочу записать картинку с первой Voodoo или какой-то ещё бОльшей экзотики? И опять же, упираемся в софт. Нужна же универсальность.
  3. Вариант “запуска на эмуляторе” – не подходит. Игры “позднего DOS’а” умудряются тормозить или идти не плавно даже на современном i7, если эмулировать их DosBox’ом. Если же нам понадобится запустить игру, которая даже на WinXP глючит, и нормально работает на ОС не старше Win98 или Win95, но при этом требует трёхмерного ускорения – тут эмуляторы не шибко помогут, ускорение игровой графики там печальное.
  4. Снимать экран камерой? Нет, существуют любители “экранок”, но этот способ попахивает извращением и “последним шансом”.

Железо для захвата


В качестве машинки для захвата видео был использован такой вот компьютер:

Процессор: 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-устройств. Позитивно. Удобно.

Отдельный приятный момент – в режиме “превью” на компьютере картинка показывается без отставаний, в реальном времени, если конечно мощностей компьютера хватает (об этом – ниже).

А теперь – недостатки, проблемы и клизма дёгтя


  1. Софт. Комплектный софт идёт только под Windows Vista и выше. Хотите вариант под Windows XP? Качайте с сайта производителя. Учитывая, что на CD с драйверами и софтом свободно порядка 70% места (занято в районе 180 МБ) – я не знаю, как это назвать. У меня на том компьютере Windows XP лицензионная, мне обидно.

  2. Захват разрешения ниже 640x480. Официально не поддерживается. При попытке получаем или сообщение об неподдерживаемом разрешении, или мусор вместо сигнала. Но, слава опенсорсу, если воспользоваться программой VirtualDub – можно стабильно записать картинку и в разрешениях ниже 640x480. Выглядеть правда будет как-то так:





    Т.е., картинка реально пишется в 640x480, но с мусором на полях. Впрочем, никто не мешает нам лишнее отрезать, причем на лету (ещё раз спасибо авторам VirtualDub)

  3. Запись видео с Voodoo и Voodoo 2.
    Родная утилита – пишет пару секунд, теряет сигнал, пару секунд показывается надпись “No Signal”, находит сигнал, пишет пару секунд, теряет сигнал… И так по кругу.

    VirtualDub пишет без проблем и возражений. Вот так-то вот. Опять опенсорс на коне. ;)

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



    А перетыкать кабель от монитора между обычной картой и Voodoo’вской при запуске/выключении игры под voodoo. Жить так можно, но разве что жизнь?!

  4. Запись звука придётся вести отдельным шнурком, т.е. например, из линейного выхода звуковой карточки первого компьютера в линейный вход компьютера для записи. Ну да это-то нормально. Зато звук по HDMI пишет нормально.

  5. Мощность компьютера для записи и кодирования видео.
    Указанного в начале статьи компьютера хватает, что бы в реальном времени писать и кодировать видео в h264 – но только до разрешения 800x600. Попробовав писать 1280x720 я получил пропуск кадров на финальной записи. А вот в MPEG2 в реальном времени в этом и большем разрешении пишет легко, но качество картинки выходит визуально немного похуже.

  6. Разрешения.
    При подключении по VGA разрешение 800x600 родной утилитой у меня один раз записалось в 720x576, без каких либо объяснений и объявления войны.

    По HDMI картинку с мобильной android-консоли (разрешение экрана 800x480) записало в 720x480 (хана пропорциям).

    С VirtualDub таких неожиданностей не возникает. Короче, хотелось бы родную утилиту в утиль отправить, но нет в мире совершенства. При попытке писать входящий сигнал в 1280x720 (хоть VGA, хоть HDMI) – VirtualDub выводил на экран какую-то лажу вместо изображения, ну и пишет в файл соответственно тоже бред. Зато если на вход подать 1280x720, а VirtualDub сказать, что на входе на самом деле 1920x1080 – будет писать как миленький, но растянув разрешение до 1920x1080. Родная утилита пишет всё как надо.

Выводы делайте сами. Если знаете лучший способ писать видео по VGA – добро пожаловать в комментарии!

P.S. Видео-примеры не выкладываю по следующей причине: если бы я выложил его на ютуб на свой канал, то топик пришлось бы перенести в раздел “я пиарюсь”. Если есть интерес – пишите в личку, дам ссылки на видео того и другого варианта.

Спасибо за внимание! Для самых терпеливых читателей – бонусная кошка, как и обещал. :)



Update от 18.02.2015


  • Родной софт под Vista и выше заметно лучше XP'шного, глюков практически нет
  • Звук по HDMI таки пишет, был не прав
  • Если при подачи картинки с разрешением ниже 640x480 плата сообщит, что мол сигнал выше за границы допустимого — то на той же машине запускаем нечто в 640x480, даёт плате обнаружить привычный сигнал, а потом уже переходим в более низкое разрешение — плата продолжит захватывать картинку и работать как надо. Сработает и с родной софтиной.

Update от 02.03.2016


Свежая версия софта работает лучше, но там тоже нашлась проблема: при попытке записать видео в 640x480 получаю искажение пропорций. Если выбрать в настройках разрешение «800x600» при источнике сигнала в 640x480 — будет писать 640x480 без искажений.
Дмитрий @Newbilius
карма
92,5
рейтинг 0,1
Программист мобильных приложений
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Реклама

Самое читаемое Дизайн

Комментарии (50)

  • +1
    Опять же, HDMI-вход, а значит – возможность писать видео с современных консолей или, например, android-устройств.

    Только вот с тех-же PS3, PS4 и, возможно я ошибаюсь, Xbox One записать не получится, ибо из-за того что там BD-плеер, то по HDMI идет HDCP сигнал (если кратко, то это очередная «мега защита», которая обходится на раз два).
    • 0
      Ммм, вроде в рекламе платы писалось, что не проблема. Сам врать не буду, у меня нет ни единой консоли (не считая всяких китайских Dingoo, Android'ов и клона Famicom) :(
    • 0
      Плюс ещё в комплекте с платой есть переходник «компонентный RGB -> VGA» (кажется так зовётся). Вроде у тех же X-BOX'ов есть такой выход?
      • +1
        Насчет Xbox не знаю, а вот на PS3 есть компонентный выход, если докупить редкий фирменный кабель. На PS4 уже нет. И при использовании такого решения прощай, высокое разрешение, конечно же.
        • +1
          На PS4 некрbтитчно — там свой видеозахват есть + обещали что игры будут работать и без HDCP.
          • 0
            HDCP обходится hdmi-сплиттером за небольшую сумму, вроде так эта штука называется. Но все равно обидно, что нельзя обойтись без костылей и хаков…
            • 0
              Не знаю, не знаю.
              Есть у меня сплиттер (1 поток на монитор, второй в плату видеозахвата), но что-то HDCP не пропадает.
    • +1
      Как раз под AverMedia есть «патч» от наших соотечественников, который игнорирует HDCP, ибо хардварно HDCP-декодер на плате есть, вся проблема в софте.
      • 0
        mark_ablov, Оууу, с этого места по-подробнее, пожалуйста!
      • +1
        Ну тут какая история, в железе есть возможность захвата HDCP сигнала, но эта возможность отключена. И насколько я понял, данный патч меняет только специальную программу к этой железке, а не драйвер, что означает невозможности захвата сторонними программами.
        Но опять-же, так было когда я хотел себе такую плату купить.
  • +1
    Дело в том, что какое-бы не было разрешение на входе – на выходе будет телевизионное.

    По-моему, странно было ожидать другого. Вы думали, что через антенну сможете получить разрешение, выше телевизионного, т.е. не соответствующего стандарту?
    А вообще, насколько мне известно, есть комбинированные TV-тюнеры с VGA-входом.
    И да, попробуйте вот этот dosbox.
    • 0
      Ну я не то что бы ждал идеального результата, но было в любом случае интересно попробовать.

      А вообще, насколько мне известно, есть комбинированные TV-тюнеры с VGA-входом.


      Но я не нашел. Скините ссылку — буду признателен!

      Да-да, знаю эту версию DosBox, нативная версия уже даааавным давно не обновляется и отстаёт по фичам и скорости. Но игры вроде Chasm — The Rift или Pyl (отличный польский шутер под Dos и Glide) местами проседают по скорости, та же Pyl вообще идёт со скоростью 15-20 FPS. Играть можно, но я привык уже к хорошему.
  • +3
    Кошка великолепная!
    • 0
      Оу йе, девушка завела 3 года назад. :)
  • +1
    На работе пользуюсь epiphan vga2usb, дорого, но очень удобно и универсально, работает с любым по.
    • 0
      450$ (плюс доставка, в наших магазинах не нашел, может просто плохо искал)… Ох. А тутошний вариант стоит порядка 150$. Разница на лицо! :)
  • 0
    Я и так знаю, какой канал на ютюбе представляет автор :) Спасибо за обзоры. Но не кажется вас, что версия софта под windows Vista, 7 и выше может давать лучшие результаты. Все же в новой произошли большие изменения в данном направлении. По крайней мере хотелось бы проверить.
    • 0
      Если мне кто пожертвует Windows 7 лицензионную — готов попробовать) На той машине лицензионная XP. Тащить на работу плату, древний системник, копаться в этом… ну в общем, не самый лучший вариант.
  • +1
    Спасибо, интересный материал. VirtualDub рулит — всегда старался им пользоваться вместо дубовых «родных» утилит.

    Кстати, при записи звука и изображения через разные устройства (независимые карты аудио- и видеозахвата) появляется проблема ползучей рассинхронизации звука и видео. VirtualDub имеет специальный режим борьбы с этим явлением — «Resample Audio». Очень рекомендую. Альтернативный способ — «Drop/Insert Frames» ощутимо портит качество видео.
    • 0
      Хм, интересно, надо глянуть, какие опции использовал я. Просто не столкнулся с проблемой, хех. :-[ Спасибо за подсказку!
      • 0
        С этой проблемой сталкиваются все, кто имеет дело с записью нескольких потоков разными устройствами. Это принципиальная проблема, так как, даже если оба устройства будут идентичными, кварцевые резонаторы, на основе которых построены часы в этих устройствах, имеют технологический разброс и соответственно разную частоту. Только если оба устройства работают от одного кварца — тогда можно избежать накопления рассинхронизации.

        Также рассинхронизация не возникает, если в захватываемых потоках присутствуют синхросигналы. В видеопотоке они есть, а вот в аналоговом аудио — нет.
        • 0
          Нет, я всё понимаю. Может у меня режим «Resample Audio» был просто врублен по умолчанию. Дома посмотрю.
    • 0
      А кто-нибудь пробовал граббить через VLC? Я сколько не настраивал всегда получал черный экран.
      • 0
        Я пробовал с тюнером (не с платой VGA захвата), основная проблема — отставание картинки. Т.е., разница между тем, что видишь на экране и реальным событием — 100-300 мс. Играть нереально. У меня не получилось получить реальное время.
        • 0
          Не, я имел в виду «двухкомпьютерный» метод. Только вместо виртуалдаба VLC.
  • +1
    Для теста взял себе Avermedia Game Capture HD II (http://gamerzone.avermedia.com/ru/game_capture/game_capture_hd_2)

    О юзабилити не думал вообще никто.
    Варианта использования два — либо вставить 2.5" диск в устройство, писать видео на него и потом выключать устройство, вытаскивать диск и подключать к чему-то; либо подключать диск сразу по USB во внешней коробке(благо для этих целей есть USB порт в девайсе). Вариант с автоматической заливкой снятого видео на ютуб не рассматриваю, картинка получается не лучшего качества.

    При этом устройство задумывалось как прослойка между монитором и видеокартой/консолью, но на выходе на монитор картинка портится просто до жуткого качества, на порядок хуже той, что записывает само устройство. Единственный вариант использования — подключить к одному выходу видеокарты монитор, ко второму это устройство и включить дублирование картинки на выходах.
    • 0
      Зато у этого варианта есть преимущество — не нужен второй компьютер, железяка сама всё пишет и конвертирует. Вроде как по мне это главное и единственное преимущество…
  • +1
    Мы эту задачу очень долго решали. Причём нам нужен был автономный рекордер.
    Вариантов вроде два.
    -epiphan очень дорого. Там нормальная железяка с нужеым битрейтом и разрешением около 70 тр
    -либо конвертить в hdmi а дальше уже захватывать. Конвертеры работают не всегда хорошо.
    • 0
      И на чем остановились?
      • +1
        Придумали как дублировать сигнал на hdmi (там идёт запись) и vga (там подключён проектор). Программно.
  • +7
    А я-то думал сначала что тут будет хардварно-хардкорный вариант с пайкой проводов-переходников, с подключением этого добра к самодельным цапам и прочая подобная жестища.

    Но, в целом тоже ничего, спасибо за информацию.
    • +1
      Я, увы, не настолько хардкорен… Скажем так, если бы я сел нечто подобное паять, то по трудозатратам выходит раза в 3 дороже покупки такой железяки. :(
  • 0
    Вариант “запуска на эмуляторе” – не подходит. Игры “позднего DOS’а” умудряются тормозить или идти не плавно даже на современном i7, если эмулировать их DosBox’ом. Если же нам понадобится запустить игру, которая даже на WinXP глючит, и нормально работает на ОС не старше Win98 или Win95, но при этом требует трёхмерного ускорения – тут эмуляторы не шибко помогут, ускорение игровой графики там печальное.

    А если поставить DOS в какую-нибудь полноценную виртуальную машину типа qemu?
    • 0
      Результат по скорости (проверял месяцев 6-8 назад) выходит ещё хуже. И опять же, трёхмерное ускорение отдыхает.
      • +1
        Странно. На VmWare я совершенно спокойно мог играть в Blood в невиданном на то время разрешении 1600*1200, в то время как в DosBox даже в 320*240 было совершенно неиграбельно.
  • 0
    > Софт. Комплектный софт идёт только под Windows Vista и выше. Хотите вариант под Windows XP? Качайте с сайта производителя.

    Прямо такой минус в 2014 году.
    • 0
      А вот какой-нибудь D-Link не ленится в 2014 году (!) с некоторыми PCI-сетевыми картами за 100-200 рублей класть драйвера для Windows XP, 98,95, 3.1, пакетный драйвера для DOS'а и OS/2! И это с сетевой картой за 5$.

      А тут желеязка за ~150$, софт существует, но его не доложили на диск, хотя места для этого хватало. Непонятно.
  • 0
    Спасибо, интересный пост! Жаль, что нет ultimate решения для записи всего и сразу за разумные деньги. Хотя, казалось бы, в чем проблема…
    • 0
      Жаль. Ну, описанный в статье вариант от AVerMedia — приемлем. Не идеален, зато не шибко дорог. Видимо ниша не очень большая, поэтому варианты типа epiphan стоят дорого, а AVerMedia — требуют некоторой пляски. Но результатом я доволен — жить с этим можно! :)
      • 0
        Ниша специфическая, да. Еще лет 5 назад никто особо и не заморачивался снимать свой игровой процесс и выкладывать в сеть. Сейчас какой-то бум обзоров и let's play, значит есть спрос. Может и предложение появится.
  • 0
    Ох, как-то пытался записать видео с эмулятора PS1 поставил «камстудию» провозился три дня с её шизофреническмими настройками, кодеками, глюками, тормозным фпс (который почему-то помечен как 1000 fps) пробовал еще пару других программ — поймал кучу вирусов, все снес, восстановил из бэкапа и решил писать железками. Спасибо, пригодилась статья.
    • 0
      Я могу посоветовать Bandicam, меня он порадовал. Минимум настроек (я пишу в MPEG1 с максимальным качеством). Работает хорошо почти со всем (но старые игры, заточенные под DirectX 7 или 6.1 могут глючить). Утилита платная, но своих денег стоила)
      • 0
        Еще рекомендуют русскую GameClaw, всего 300 р. стоит. Попробую.
        • 0
          Пробовал тестовую версию, заработала у меня откровенно фигово. Но может с того момента они улучшили ситуацию. :)
          • 0
            Ага, вот как. Я все же склоняюсь к железному решению, скажите какую плату будет оптимальным приобретать, кто-то Avermedia хвалит, другие ругают. Разброс у них по ценам тоже очень значительный. VGA для меня не принципиален, планирую «хватать» видео из игр запущенных на эмуляторе, вывод по HDMI. У меня два компьютера рядом стоят, так что ваш вариант будет, как мне кажется оптимальным. Какую карту выбрать в моем случае?
            • +1
              Тут я к сожалению вам не подскажу, т.к. не пробовал других плат кроме той, что описана в статье, все известные плюсы и минусы там же, так что выбирать всё-таки вам. Картинку из эмулятора я бы всё-таки захватывал программно.
  • 0
    Epiphan vga2usb, dvi2usb (у меня их уже почти десяток). Скупать надо на ebay. Обычный vga2usb ловил даже за $75.
    • 0
      Ну цена «с рук» — это цена с рук, не надёжно, увы… На сайте производителя это чудо стоит 450$.
  • 0
    Update от 18.02.2015

    • родной софт под Vista и выше заметно лучше XP'шного, глюков практически нет
    • звук по HDMI таки пишет, был не прав
    • ели при подачи картинки с разрешением ниже 640x480 плата сообщит, что мол сигнал выше за границы допустимого — то на той же машине запускаем нечто в 640x480, даёт плате обнаружить привычный сигнал, а потом уже переходим в более низкое разрешение — плата продолжит захватывать картинку и работать как надо.

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.