Я ликую! В результате долгих ожиданий и исследований я смог получить работающую схему HDMI passthrough захвата видео без видимых задержек. Записи о результатах исследования, я разобью на две части:
1. Железо;
2. Софт.
Итак начнем...
Железо
Схема проста, не очень элегантна(я не верил что это будет стабильно работать, но риск себя оправдал):
HDMI splitter (1-in/2-out) -> HDMI2AV Converter (HDMI-in/RCA-out) -> USB DVR(RCA-in/USB-out).
После долгого исследования я понял, что это один из самых доступных вариантов под мои требования.
Итоговые устройства реализации:
1. One Input to Two Output HDMI 1.3 Splitter; заказал в DX
2. Playvision HDV-M610 HDMI to AV Video Audio Converter - White; заказал в DX
3. IconBit TV-Hunter Studio. Купил в москве за 1000р.
Если с первыми двумя девайсами я угадал сразу и получил ожидаемый функционал, то
с DVR я не угадал и взял: EasyCap USB Video Capture Adapter, мне попался на чипе usbtv007 - с дровами проблем нет, в винде они уже есть, однако:
1. Ужасное кол-во помех на выходе.
2. Лож про совместимость с DirectShow, openCV не может с ним работать, и не только с EasyCap на этом чипе, но и других.
3. При попытки диспоза капчура (читай как прекращение работы с ней), винда улетает в BSOD, тестил на Win7 x64 и Win8 x64
4. Криво принимает сигнал, режет картинку.
Полное говно короче, я поискал возможные аналоги уже в москве и нашел IconBit TV-Hunter Studio за 1000р. - попытка не пытка и данное устройство полностью оправдало мои надежды, и успешно я смог захватить картинку в openCV на выходе.
В качестве ленты я уже использовал 5м черную ленту с WS2812, по 30шт на метр, это позволило мне разместить 26x46 управляемых LED по периметру плазмы, около 4.5м, 136 светодиодов.
Ленту запитывать решил от 5V 2.5A БП, от какой-то зарядки, питать от Ардуино нельзя, в пиковом режиме лента жрет около 2A судя по спецификации WS2182, а максимальный ток, который может дать Ардуино около 850mA.
Если гуглить ардуино и WS2112 то первым делом попадаешь ан статью на хабре. Притом он там вроде как использует ленту с 138 LED, но он немного слукавил. Дело в том, что так какон описла работать не будет: 138 LED это 414 байт, размер буфера сериийного порта Arduino 64 байта, правильно, на выходе мы поулчиб говно из-за обрезки пакетов. Фиксится это изменением размера буфера в "arduino\hardware\arduino\avr\cores\arduino\HardwareSerial.cpp" я поставил 512. Но та статья была отличной точкой отсчета, и я создална её оснвое модифицированную версию прошивки с:
1. Автоотключением через 15 секунд, если не поступало пакетов.
2. Установка яркости на строне ПК.
Скетч доступен по ссылке.
Задержка получения картинки минимальна, и визуальна не заметна, видео как это работает я покажу в следующей записи. Влияний на сигнал выходящий на телек нет. Игнорируется защита контента через HDCP. Жуется все, проверил PS3, PS4, HTPC на Nvidia карте, Wii U и Xbox 360
По железу все. Теперь самое интересное - софт. Запись о нем будет позже, когда я закончу его разработку, что будет реализовано(уже частично протестированно):
1. Win сервис захвата и передачи пакетов по сериал порту;
2. Web UI с риалтайм изменением параметров обработки изображения сервисом через WCF;
3. Следующие параметры будут доступны для настройки:
- Насыщенность;
- Подстройка под цвет стен(аля баланс белого или цветовой баланс);
- Анти-мерцание (ага, аналоговый сигнал мерцает по интенсивности цвета - это заметно, и с этим можно бороться без жертв);
- Глубина захвата цвета по экрану;
- Радиус сглаживания вывода по ближайшим соседям.
to be continued...
P.S. Пытался за реверсить принцып работы амбилайта у Philips по видео в интернете:
- Почему-то на темных сценах они освещают стены светлым.
- Они понижают насыщенность цветов, и они фактически получаются "Пастельными".
Также закачал себе их патенты по амбилайту, попробовал вычитать от туда что-нибудь полезное из их многолетних нароботок в этой сфере, - нет, ничего полезного нет.
Комментариев нет:
Отправить комментарий