PCCar.ru - Ваш автомобильный компьютер

PCCar.ru - Ваш автомобильный компьютер (http://pccar.ru/index.php)
-   Софт для видеозахвата (http://pccar.ru/forumdisplay.php?f=102)
-   -   AmoDVR (http://pccar.ru/showthread.php?t=18760)

AmoRaller 02.03.2013 01:47

AmoDVR
 
Вложений: 2
Очередная программа для видеорегистрации. За основу взята программа 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 Для меня эта дебютная тема, потому что раньше не приходилось создавать новые обсуждения, а тем более представлять программы на всеобщее обозрение в интернете. Так что поправляйте меня, если вдруг накосячу. Жду комментариев, спасибо.
https://dl.dropbox.com/u/50971087/%D...%20%285%29.bmp

https://dl.dropbox.com/u/50971087/%D...%20%286%29.bmp


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

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

Далее в папке с программой появляется файл debug.txt. Его прикрепляем к сообщениям, чтобы я понимал, что исправлять. Видимых изменений больше нет.

Hamster 02.03.2013 01:54

Может прогу как-нибудь по другому назвать?
А то если ссылаться на нее кто будет - будут непонятки о какой из двух идет речь :)

awtoap 02.03.2013 02:51

Автор а без этого мелкософтовского дерьмища FrameWork писать софтину что никак нельзя?

AmoRaller 02.03.2013 02:53

Цитата:

Сообщение от awtoap (Сообщение 248848)
Автор а без этого мелкософтовского дерьмища FrameWork писать софтину что никак нельзя?

Если не вдаваться в подробности, то на C# нельзя. У вас какая-то неприязнь к микрософту?

awtoap 02.03.2013 03:04

Именно...предпочитаю минимализм...вот для пробы распаковал под XP и она орет давай фрейм 4...ставить принципиально не хочу.

Судя по названиям либ это все делается как два пальца без всяких фреймов да и либ собственно...нужно лишь желание поискать в нэте реализацию всего этого в исходниках.

AmoRaller 02.03.2013 03:17

Цитата:

Сообщение от awtoap (Сообщение 248853)
Именно...предпочитаю минимализм...вот для пробы распаковал под XP и она орет давай фрейм 4...ставить принципиально не хочу.

Судя по названиям либ это все делается как два пальца без всяких фреймов да и либ собственно...нужно лишь желание поискать в нэте реализацию всего этого в исходниках.

Ну да, как вариант тащить с собой либы с нужными функциями. Точно будет меньше, чем целый фреймворк. Если же мы хотим реализацию всех функций, я боюсь что это мне не по силам. На смом деле половину можно было сделать на nativ dll, например на C++ написать. Я такой вариант не исключаю, и наверняка всё это работать будет быстрее. Хотелось бы получить для начала работающую программу, которую можно было использовать без проблем, а потом уже заняться оптимизацией.

UPD Спасибо за замечание на счет фреймворка. В понедельник будут версия для 3,5. Сейчас попытался переложить на 3-й. Всё работает, но интерфейс заметно грузит систему. Вся логика прекрасно работает и на 2-м. Если учесть что графический интерфейс сейчас - одна из слабых сторон программы, то проблем в будущем быть не должно.

sirota 02.03.2013 10:19

Спасибо автору....пробуем.

avic 02.03.2013 18:21

Спасибо автору. Успехов в начинаниях. Давно уже напрашивается многокамерная регистрация. Толковых программ под это нет.

oops1 02.03.2013 20:06

Цитата:

Сообщение от awtoap (Сообщение 248848)
Автор а без этого мелкософтовского дерьмища FrameWork писать софтину что никак нельзя?

Можно конечно, берешь Visual Studio с++... а точно , это же тоже мелкософт.
Тогда берешь Pascal (можешь дельфи) от борланда. и пишешь, пишешь.
А потом выкладываешь и не квакаешь
--------------------
Имейте уважение к чужому труду....

sirota 02.03.2013 23:21

Сегодня тестил камерой С920, Win7/64
Понравилось то, что на некоторых кодаках при плохой освещенности пропал эффект "чаплинизации"(странно почему?, но это факт)
Из траблов: при высоком разрешении 1920х1080 происходит остановка приложения, с выходом в синий экран(после перезагрузки), последнее рабочее разрешение у меня 1280х720....все что выше вылетает.


Часовой пояс GMT +4, время: 03:22.

Работает на vBulletin® версия 3.8.4.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot