Предисловие автора: Нынче использую китайский видеоглазок, Chronos Video Shuttle 2, Virtual Dub 1.8 в качестве системы видеонаблюдения в одном "стратегическом" помещении. Как известно, дешёвые видеоглазки используют CMOS или другие пассивные и очень шумные матрицы. Захват идёт с разрешением 352x288 и частотой 5 кадров в секунду. Также, захватывается и один канал звука 16 бит 8 кГц. Видео на лету сжимается с помощью DivX-3 Low-motion 64kbps 100% качества и опорный кадр каждые 60 секунд. Звук - в MP3 1kbps. Каждый день пишется от 6 до 10 часов. И за первую неделю уже набралось почти 1Гб в 6-ти файлах! Конечно, это "видеосырьё" и многою вырежу/удалю. Но... Пролог: Уже на третий день достало то, что приходилось вручную расчитывать действие в кадре с реальным временем, так-как в кадре часов небыло и надо было дату создания файла калькулировать с позицией видео прямо мозгами. А это, понимаете, утомительно! Что-то не нашёл в сети я подобных фильтров, если даже они есть... Имеется Subtitler, но для работы в реальном времени он не годится и реальное время им не выведешь. Глава первая: Взял я SDK от Virtual Dub и за часа два отладил собственный фильтр, выводящий в углу кадра и дату, и время. Фонты - мои собственные 3x7, алгоритм - на ассемблере. В общем, работает довольно быстро и стабильно. Сутками гоняю, не повисло. В общем, собственным фильтром я доволен. Решил написать ещё версию. Глава вторая: Делал я одну утилиту. Работает в фоновом режиме. Следит за буфером обмена. Перехватывает текст на предмет наличия в нём первого слова "SEND". Т.е. работает как сервер. Почтовый. Так, пишешь в блокноте строку "SEND AC=75", наводишь указатель на нужное окно оставаясь в активном блокноте, жмёшь Ctrl+C и окно под указателем становится прозрачным на 75%. Если же скопировать строку "SEND WND", то в буфере утилита возвратит "RPLY HWND=идентификатор_окна". Т.е. функций много, полезных при отладке своих программ. Можно и дать команду отобразить HDC. Но, "опасная" штука почему-то, т.к. иногда система идёт на убийство... Глава третья: Решил я "скрестить" движок той утилиты с телом фильтра. Чтобы, когда это нужно, прямо из блокнота давать команды. Типо сменить позицию отображения времени/даты, цвет символов, вставить текстовую метку и т.д. Т.е. дотянуть фильтр до функций примитивного линейного монтажа. А то заходить в настройки фильтра и менять параметры - не очень весело... Эпилог: В операционной системе механизмы работы с буфером обмена реализованы не достаточно стабильно и оперативно. Сколько я занимаюсь этим, часто мой код или виснет, или вылетает. А иногда вызывает BSOD или просто вынуждает тупо жать Reset. Что в Windows'9x, что в NT... По-этому, идея "скрещивания" и заманчивая, и, в то же время, очень опасная, когда речь идёт о "стратегическом" видеонаблюдении. Комментарий автора: Хотел в свой фильтр добавить детектор движения. Но, в Virtual Dub не реализовано при захвате функции паузы. Как физически, со стороны пользователя, так и логически, средствами фильтров. Я вот не уверен. Но, подозреваю. Если я в фильтр и вживлю детектор движений, то как затем поступить? Ведь в лучшем случае, если фильтр не передаст кадр, Virtual Dub начнёт их дропать! А в худшем, всё может повиснуть. Как я уже сказал, видеоглазок очень "шумит". Хотя в видеопроцессоре я сделал насыщенность цвета очень малой, а яркость и контраст - предельными. Качество в моём случае не играет роли. Главное - зафиксировать сам факт происходящего. А тут нужен и детектор движения, и функция паузы.