Четыре года назад начал с потолка списывать собственную пародию на подобие домашней виртуальной студии.
Дело двигалось крайне медленно, так как всё писал с нуля, включая mmx/sse оптимизацию. В математике я слаб и многие куски приходилось неделями гонять в отладке.
На такой подвиг меня толкнула крайне "шустрая" работа
ManyCam: Тупо захотел на собственном опыте убедиться, что выделить chroma-key в кадре - чудовищно сложно.
Короче, сам разработал и проработал процедуры фильтрации. Если первые варианты практически еле соперничали с ManyCam, то через месяца 3 фильтрация стала умнее.
Она не только выделяет объекты на общем фоне, но и сортирует их в порядке занимаемой площади в кадре. Можно просто указать, чтобы объекты, меньше чем 0,1%-9,9% кадра нужно безжалостно удалять. Тем самым, не только ёлочные гирлянды можно стереть на фоне обоев, но и кошку. Даже ребёнка, блуждающего по дивану. Нужно лишь верно указать нужный порог.
Хотя, программа использовала VFW и часто гнала...
На год, пока "учился" в колледже, всё забросил.
Потом взялся вновь. DirectShow не одолел и тупо взял VirtualDub и в SDK написал свой фильтр. Первые версии злостно крашили систему. Потом решил "скостыльничать": Создавать bmp-файл общего доступа мэппингом. И весь захватываемый поток выбрасывается тупо как bmp, который в VLC можно просматривать в любой момент или менять в Hex-редакторе.
Суть проста: Прошлый кадр из bmp выбрасывается в поток, а свежий кадр - в bmp. Тем самым, всё видео опаздывает ровно на 1 кадр.
Далее написал другую программу, которая дожидается нового кадра в том bmp и с помощью Squirrel-скрипта пытается успеть его обработать и перерисовать, пока он не попал в выходной поток. В общем, целый шпионский механизм.
Целый год ушёл на отладку. Удобно то, что в случае краха, VirtualDub не обрушается. Закрывается лишь левая оболочка скрипта.
Показал племяннице ряд фокусов, в духе "Детей шпионов" и прогноза погоды.
Думал, что программа - бесполезна совсем.
За это время нас обворовали. Купил камеру и DVR. Комп дежурить стал сутками. Пока не развернули ремонт на кухне и он не наглотался пыли южником, приказав долго жить!
На новом компе и Windows 7 не ставится, лишь Windows 8. На которой DVR-карточка с дравами не пашет.
В итоге, переписал скрипт своей "виртуальной студии" и всё остановилось...
Но, мой труд пригодился таки.
Сам VirtualDub сутками пишет с качеством сжатия 4.0 в XviD, а для экономии памяти - тупо опускается штора, когда в кадре никого нет.
Если фирменая DVR оболочка просто писала видео. То теперь мой скрипт пищит на всю квартиру, если кто-то попал в кадр.
Причём, звуки разные и зависят от того, пришёл ли или уходит кто-то.
Ведёт лог посещений и статистику.
Заметил одну вещь: Фирменая прога DVR за пару суток истребляла ресурсы системы и требовался ребут.
Мой скрипт в последний раз проработал без перерыва 35 суток, пока не выключили свет.
Я думал, что написал надёжно, раз так долго работать может. Но, вчера, переработав скрипт почти с нуля, нажал на кнопочку теста звуковой сигнализации - рухнул VirtualDub. Переключил DirectDraw режим - рухнул.
Выходит, написал не так надёжно. Пашет месяцами, без утечек и протечек памяти, только если не трогать.
Итог: Писать нужно с нуля!
С одной стороны, круглосуточное DVR-дежурство совсем затормозило доработку фильтра и скрипта. Нужно писать не только с нуля, но и учитывая совместимость. Что крайне сложно.
В сети похожих программ я не встречал.
Сами возможности фильтра можно видеть в видео:
Смена декораций
Огромный телек
Сразу три фильма
Что хотел сказать. Да, тупо, как-то обидно. Годами пишешь, пишешь. А потом всё под формат...
Железо хоть на стенку приколотить можно, чтобы гости пялились.
А программа, крошечная ли, огромная - фантом...