Тема: AmoDVR
Показать сообщение отдельно
Старый 02.03.2013, 01:47   #1
AmoRaller
Пользователь
 
Регистрация: 28.02.2013
Возраст: 33
Город: Мск
Регион: 77, 97, 99, 177
Машина: Lancer IX Wagon 2.0
Сообщений: 36
AmoRaller is on a distinguished road
По умолчанию AmoDVR

Очередная программа для видеорегистрации. За основу взята программа CarDVR 1.9.
Немного о программе. Решение написать свою реплику знаменитой программы пришло с покупкой второй камеры. Программа написана в среде Visual Studio 2010 на языке C#.
UPD Для работы требуется Framework .NET 3.5.

Что же будет в программе?
1) Запись с нескольких web(?) камер
2) Запись звука (возможно в несколько потоков)
3) Наложение информации поверх кадров.
4) Запись в многопоточный AVI.
5) Работа с GPS.
6) Возможность отключения камеры в процессе записи.
7) Циклическая запись - перезапись "старых" видеофайлов
8) Резервная копия текущего(?) файла по нажатии на кнопку
9) Ориентированность под сенсорный экран.

Это основные задачи, которые ставятся перед будущей программой.

Что есть сейчас?
Программа с не очень внятным интерфейсом.
Более или менее работающая запись видео в несколько потоков.
Окошко с настройками.
Реализована циклическая перезапись.
Настройка потоков в видеофайле.
Механизм, позволяющий отключать камеру уже реализован, но не включен в текущую версию по причине отсутствия нормального интерфейса.
Настройки хранятся в обособленном XML файле settings.xml в папке с программой


Какие проблемы есть на данный момент?
1) Первая версия программы => стабильности не гарантирую.
Особых тестов не проводилось.
2) Отсутствие(а может и я плохо искал) проигрывателей, способных воспроизводить видеофайл с несколькими потоками. Для себя сделал простейший проигрыватель, работающий через раз, чтобы убедиться что всё же что-то, да пишется.
3) Хотелось бы предусмотреть возможность записывать в 1(один, а может и первый) поток, располагая изображения с разных камер рядом в одном видеопотоке в файле.
В этом пункте целая куча задач:
Хотелось бы как-то интерактивно менять положения кадров с камер если не в процессе записи, то хотя бы в режиме настроек.
Что делать с качеством изображений с каждой камеры и пропорциями сторон? ВОпрос скорее дизайнерский, нежели программерский.

На чем же проводились тесты?
Камеры Genius FaceCam100 и WideCam 1050 (взял ради широкого угла обзора)
Процессор Athlon 64 X2 6600+ 3.1 Ггц
2 Гб памяти
Windows 7 x32
Используемые кодеки - PICVideo M-JPEG 4 32bit VfW

Что хотелось бы еще?
В принципе захват можно производить и из других окон, например, можно записывать информацию из окна навигатора(зачем? не знаю. просто пример)

Чего хотелось бы от вас?
Хотелось бы получить от вас дельные и не очень советы по поводу дизайна и реализации программы.
Обоснованную критику.
Пожелания по увеличению функционала и стабильности программы.

О процессе написания и самой программе:
Я уже упомянул выше Visual Studio 2010 и .NET Ffamework 3.5
Программа реализована на языке C# с использованием технологии WPF, учитывайте это, когда будете ковырять её всякими шпионскими программами. Контролы(которые вовсе не контролы) не имеют Handle в привычном понимании.
Как и в случае с CarDVR, импользовалась библиотека AForge
Библиотека для работы с видео: AForge Framework
К сожалению код очень непричесанный, но я надеюсь, что когда-нибудь дойдет дело до комментирования.
В программе очень много потоков создается и взаимодействует, так что ошибки неизбежны. На текущем этапе реализована очередь кадров, чтобы не пропустить ничего важного. Я считаю (возможно ошибаюсь, поправьте) что такой показатель как нагрузка на процессор, которую можно посмотреть через диспетчер задач Windows, не является ключевым. Во-первых в Диспетчере задач не очень-то и точная информация; а во-вторых на не загруженной другими программами машине этот показатель будет достаточно высок, потому что программа будет стремиться использовать все свободные ресурсы. Конечно играет роль и размер изображения, и количество цветов, и степень сжатия. На моей машине сейчас при записи с 2х камер загруженность составляет 40%.

Хотелось бы так же поблагодарить dues, автора CarDVR за хорошую программу, пищу для ума, и немало кода, который я использовал в своей реализации.

PS Для меня эта дебютная тема, потому что раньше не приходилось создавать новые обсуждения, а тем более представлять программы на всеобщее обозрение в интернете. Так что поправляйте меня, если вдруг накосячу. Жду комментариев, спасибо.





Прилагаю саму программу и исходный код

UPD Небольшой апдейт программы. Появилась буферизация, плюс исправил пропадание кадров между записями. В настройках можно задать размер буфера в процентах от общей памяти(этот показатель ДЛЯ КАЖДОГО потока, а не для всех. Если 2 камеры и размер 50% то программа ляжет от нехватки памяти).
Файл с настройками можно оставить.

Далее в папке с программой появляется файл debug.txt. Его прикрепляем к сообщениям, чтобы я понимал, что исправлять. Видимых изменений больше нет.
Вложения
Тип файла: zip AmoDVR.zip (939.6 Кб, 1369 просмотров)
Тип файла: zip CarDVR by Amo Source (2).zip (1.88 Мб, 1240 просмотров)

Последний раз редактировалось AmoRaller; 05.03.2013 в 01:30.
AmoRaller вне форума   Ответить с цитированием