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....все что выше вылетает.

Liber 02.03.2013 23:21

очень интересно, с удовольствием попробую

AmoRaller 03.03.2013 18:11

Цитата:

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

А с программой CarDVR есть проблемы в таких же условиях? Что такое эффект "чаплинизации"?
У меня нет возможности тестить не большом разрешении. Плюс у меня половина кодеков не хочет работать с разрешением более 800 на 600. В CarDVR так же.
Я еще раз повторю, что то что я делаю - это некоторое расширение программы CarDVR, поэтому желательно в сравнении с ней делать какие-то выводы, так мне будет легче фиксить ошибки.
Спасибо за комментарий. Прошу еще высказаться по поводу графического интерфейса, потому что я ума не приложу, как его грамотно сделать.

PS ты проверял работу программы с несколькими камерами? Если да, то каким образом проверял результат? Я имею ввиду плеером может каким воспроизводил?

Что думаешь в принципе по поводу записи в несколько потоков? Может лучше записывать в один поток, просто кадры с камер рядом? Качество же будет ниже, и, наверняка, размер файла больше. А что делать с пропорциями? Мне главное - что делать, а как - я надеюсь что сам решу. Спасибо

wladkom1953 03.03.2013 19:15

Цитата:

Сообщение от AmoRaller (Сообщение 249015)
Прошу еще высказаться по поводу графического интерфейса, потому что я ума не приложу, как его грамотно сделать.

Все хорошее это забытое старое. Посмотри программу Video3CarPC (на три камеры) с соседнего форума . Автор по непонятным причинам ее не развивает, а интерфейс у нее супер.

AmoRaller 03.03.2013 20:22

Цитата:

Сообщение от wladkom1953 (Сообщение 249020)
Все хорошее это забытое старое. Посмотри программу Video3CarPC (на три камеры) с соседнего форума . Автор по непонятным причинам ее не развивает, а интерфейс у нее супер.

Хотел бы спросить, а действительно ли нужен пальцеориентированный интерфейс для настроек? Настройки же вроде как один раз выставляешь, и всё - счастье. Нужно? окей, будет)))

Чуть позже еще прокомментирую программу Video3CarPC. К сожалению мне не очень понравился интерфейс.

wladkom1953 03.03.2013 20:43

Записывать изображение с двух камер в один файл может и съэкономит ресурсы системы , но вкрячивать две картинки на один манюсенький 7" монитор тоже не гоже.

AmoRaller 03.03.2013 21:07

Цитата:

Сообщение от wladkom1953 (Сообщение 249034)
Записывать изображение с двух камер в один файл может и съэкономит ресурсы системы , но вкрячивать две картинки на один манюсенький 7" монитор тоже не гоже.

Вооот! Я согласен. В своей программе я хотел по клику(тапу) в левой панели(кстати, можно менять её ширину) показывать изображение с определенной камеры в правой, большой части. Для предпросмотра вроде ничего, подходит. Если камера, например, смотрит назад, то как и парковочная камера сойдет.

Далее, вкорячивать изображение с 2х камер в один видеопоток? ну да, просматривать неудобно. НО! Можно же писать в большом разрешении, а потом просматривать на большом мониторе? (мне не нравится этот метод, именно потому что в машине не просмотришь). Далее, несколько видеопотоков в одном файле. Это то же что и несколько видеофайлов, но только 1 видеофайл (ваш КЭП). Вопрос, как воспроизводить? Писать плеер? Ну окей, будет и плеер к этому всему.

А вообще у меня основная проблема именно в этом. НИХАЧУ несколько файлов. Конечно, если ничего не придумаем, то придется как раз несколько файлов делать.

sirota 03.03.2013 22:44

Цитата:

А с программой CarDVR есть проблемы в таких же условиях?
Таких проблем нет CarDVR, пишет без вылета на самом высоком разрешении.

Цитата:

Что такое эффект "чаплинизации"?
Это когда при при просмотре записанного файла, скорость воспроизведения увеличивается(почему то), и люди, машины начинают быстро бегать, как на старых кадрах времен Чарли Чаплина.(это случается, при съемки вечером(ночью), при плохой освещенности), и при наличаи процесора i7 (почему то).

По графическому оформлению:
1. Нужен большой экран вывода изображения, на имеющемся маленьком экране невозможно настроить камеру.
2. Не нашел настроек в самих кодаках.

Цитата:

проверял работу программы с несколькими камерами?
Проверял еще на ноутбучной...результат тот же, (остановка приложения)

Цитата:

Я имею ввиду плеером может каким воспроизводил?
Плеером крутил стандартным Media Player Classic - Home Cinema.

Цитата:

Что думаешь в принципе по поводу записи в несколько потоков?
Чуть не допонимаю как это?

P.S На малых разрешения тоже валетает.
http://s018.radikal.ru/i519/1303/51/e7a906f15ea9.jpg

AmoRaller 03.03.2013 23:11

Сейчас сильно изменяю код, поэтому может вылетов и не будет.
На счет нескольких потоков, например в фильме может быть несколько аудиодорожек, и ты переключаешь их - русская, английская, немецкая. Абсолютно так же обстоят дела и с видео. в принципе в одном файле будет несколько видео. Я так понял что народ не принимает эту идею. Тогда откажусь от нее.

PS Пожелания понял, в ближайшее время пока не буду заниматься интерфейсом.

wladkom1953 03.03.2013 23:43

Наоборот принимаем такой новаторский подход, но чуток не вьезжаю как этот поток потом разлелить и чем.

AmoRaller 03.03.2013 23:58

Цитата:

Сообщение от wladkom1953 (Сообщение 249062)
Наоборот принимаем такой новаторский подход, но чуток не вьезжаю как этот поток потом разлелить и чем.

Я сам не знаю. Я могу написать простой плеер, который будет воспроизводить. Изначально хотел плеер сделать интегрированным в регистратор, или похожим по интерфейсу, типо как из одной коробки. Я не нашёл плеера, который умеет воспроизводить несколько потоков. Я так же не понял, почему это не используется так активно, как несколько аудиодорожек. Я знаю, что и субтитры можно тоже в несколько потоков писать. Есть еще возможности писать произвольные данные, я пока не вникал в это.

Что еще хочу сказать. Можно не в реальном времени обрабатывать видео. Например пишем в 2 потока, а для ютьюба или еще чего вытаскиваем только 1 видеопоток.

Вопрос на будущее, по поводу аудио. Надо ли делать 100500 аудиоканалов, потому что с одной стороны это универсально, а с другой - зачем, какафония будет.

sirota 04.03.2013 00:01

AmoRaller

Цитата:

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

Hamster 04.03.2013 00:03

Оно повлияет на то, что если файлик будет битый, то потеряется больше видеоинфы :)
Вообщем смысла нету.

AmoRaller 04.03.2013 00:05

Цитата:

Сообщение от sirota (Сообщение 249067)
AmoRaller



Если это новшество не повлияет на качестве воспроизводимого видео, то почему бы и нет, а если повлияет на разрешение, fps, то это нафик не нужно.

Качество видео = разрешение + цветность + fps. Разрешение определяется камерой, цветность тоже. fps мы сами задаем. Проблем нет... я так думаю. в общем вот что я решил - делаю с потоками, пишу ооооочень простой плеер. Мы смотрим на всё это дело, и, если канает - продолжаем, если нет - классические варианты реализуем.

AmoRaller 04.03.2013 00:07

Цитата:

Сообщение от Hamster (Сообщение 249068)
Оно повлияет на то, что если файлик будет битый, то потеряется больше видеоинфы :)
Вообщем смысла нету.

Ну да. Не без этого.

Hamster 04.03.2013 00:08

Цитата:

Сообщение от AmoRaller (Сообщение 249069)
в общем вот что я решил - делаю с потоками, пишу ооооочень простой плеер.

Я правильно понимаю, что в таком случае можно несколько потоков с нескольких камер паковать в один файл и в плеере все потоки проигрывать одновременно? Вот такая фишка интерестна наверное :)

wladkom1953 04.03.2013 00:14

Насчет аудиоканалов, то для авто и одного хватит за глаза

AmoRaller 04.03.2013 00:16

Цитата:

Сообщение от Hamster (Сообщение 249072)
Я правильно понимаю, что в таком случае можно несколько потоков с нескольких камер паковать в один файл и в плеере все потоки проигрывать одновременно? Вот такая фишка интерестна наверное :)

Ну это уже от плеера зависит)
А если без приколов, то в этом и есть вся задумка.

sirota 04.03.2013 00:20

Цитата:

несколько потоков с нескольких камер паковать в один файл и в плеере все потоки проигрывать одновременно?
Тоесть при таком раскладе....если две камеры снимали, то при воспроизведение экран будет делится на две равные части(левую и правую) так?

AmoRaller 04.03.2013 00:26

Цитата:

Сообщение от sirota (Сообщение 249077)
Тоесть при таком раскладе....если две камеры снимали, то при воспроизведение экран будет делится на две части(левую и правую) так?

Один из вариантов. А можно, например, нажать на нужный поток, и он будет воспроизводиться. Mожно сделать воспроизведение в нескольких окнах, а дальше уже как расположишь их. Почему я сказал про то, что хотел бы сделать плеер и dvr в одном стиле? да потому что разницы между проигрывателем и "записывателем" с точки зрения интерфейса особой нет. Вместо Запись/стоп будет Воспроизвести/стоп.

Ребят, для этого мне и нужна ваша фантазия, чтобы понять как лучше)

sirota 04.03.2013 00:55

Извиняюсь...я перепутал прогу CarDVR c MyDVR, так вот первую не тестировал.

Еще одно пожелание: прога для удобсва использования, должна встраивоваться в наши популярные оболочки...Ц.Ф, ИКАР....

wladkom1953 04.03.2013 01:02

Я свой вариант выдвинул. Считаю что более трех камер в машине - это перебор или извращение! Главная камера - фронтальная . Задняя и салонная это допы. И отображение их в оболочке нужно разделить согласно статуса.

AmoRaller 04.03.2013 01:06

Цитата:

Сообщение от sirota (Сообщение 249080)
Извиняюсь...я перепутал прогу CarDVR c MyDVR, так вот первую не тестировал.

Еще одно пожелание: прога для удобсва использования, должна встраивоваться в наши популярные оболочки...Ц.Ф, ИКАР....

Я не писал никогда плагины для оболочек, но, вроде как, в ЦФ просто окно можно "вписать" внутрь оболочки. В моей любимой СarDVR можно менять цвет фона и цвет шрифта, чего вполне достаточно для нормального использования. А вообще спасибо, буду учитывать это пожелание.

AmoRaller 04.03.2013 01:17

Цитата:

Сообщение от wladkom1953 (Сообщение 249082)
Я свой вариант выдвинул. Считаю что более трех камер в машине - это перебор или извращение! Главная камера - фронтальная . Задняя и салонная это допы. И отображение их в оболочке нужно разделить согласно статуса.

Я согласен, 3 камеры это норм. Я думаю что при таком раскладе у Video3CarPC действительно достаточно удачный интерфейс.

А что если, например, можно будет
1) Писать в один файл(несколько потоков) и в несоклько файлов с каждого МИКШЕРА.

2) Сделать гибкие настройки микшеров, чтобы можно было в один микшер писать изображения с 2х камер, задней и салонной.

То есть сначала в настройких у нас есть 3 камеры, и мы им назначаем микшеры, а потом в настройках микшера определяем расположение изображений(слева-справа, сверху-снизу), определяем текст, который будет накладываться(дата-время, жопиэс координаты, еще что-нибудь).
Потом говорим куда писать результат нашей работы, потоки или файлы.
Сложно получается для понимания. Печально будет, если люди забьют на прогу, из-за сложных настроек.

wladkom1953 04.03.2013 01:23

Добро. Согласен быть тестером. Не забьют - здесь люди у которых любопытство в крови.

wladkom1953 04.03.2013 13:37

Цитата:

Сообщение от AmoRaller (Сообщение 248837)

Поясни что обозначает на рисунке "7,00 fps" . При изменении (увеличении) разрешения экрана этот показатель падает до двойки. Или он показывает оптимальное количество кадров, которое при данном разрешении способно выдать железо, но тогда это не подходит для авто, где запись должна производиться на скорости не менее 20-30 кадров.

wladkom1953 04.03.2013 14:02

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

AmoRaller 04.03.2013 14:02

Цитата:

Сообщение от wladkom1953 (Сообщение 249111)
Поясни что обозначает на рисунке "7,00 fps" . При изменении (увеличении) разрешения экрана этот показатель падает до двойки. Или он показывает оптимальное количество кадров, которое при данном разрешении способно выдать железо, но тогда это не подходит для авто, где запись должна производиться на скорости не менее 20-30 кадров.

У меня это реальный показатель - сколько кадров снимается с камеры. Когда в настройках ставим 30 кадров, не факт что твоя камера/драйвер потянут эти 30 кадров. Это число позволяет оценить, какое кол-во кадров должно быть в файле, чтобы оптимально использовать ресурсы. Скажу по себе - 7 кадров у меня - обычное явление и этого вполне хватает. Кстати, возможно драйвер проводит какую-то оптимизацию, потому что когда я начинаю активно плясать перед камерой, fps подскакивает почти в 2 раза.

В CarDVR внизу программы писалось кол-во кадров, кол-во уникальных и так далее. Так вот это показывает частоту УНИКАЛЬНЫХ кадров. Возможно плохо пояснил, поставаюсь описать этот показатель в программе.

А еще, это число в основном не от программы зависит. Это только камера + драйвер.

AmoRaller 04.03.2013 14:04

Цитата:

Сообщение от wladkom1953 (Сообщение 249116)
С другой стороны если это так, то фича очень полезная, позволяющая трезво оценить возможности вашего оборудования и не пытаться прыгнуть выше головы.

Во-во. Ты меня понимаешь) Показатель очень примерный. Погрешность где-то 20%

wladkom1953 04.03.2013 14:40

7 кадров для прыгающго вокруг камеры человека - запишет нормально, а при двух двигающихся навстречу авто на скорости 50км - это пропажа четырех метров пути.

AmoRaller 04.03.2013 15:02

Цитата:

Сообщение от wladkom1953 (Сообщение 249120)
7 кадров для прыгающго вокруг камеры человека - запишет нормально, а при двух двигающихся навстречу авто на скорости 50км - это пропажа четырех метров пути.

Видео из CarDVR. Тут fps камеры около 7ми.
Оффтоп
Камера оказалась далеко не самой лучшей для авторегистратора, это широкоформатной, и это чувствуется. На счет камер - другая тема, но может как-то оптику от этой камеры пихнуть на "скоропишущую" камеру.



PS Не загрузилось то ли. Вот ссылка, кому интересно https://dl.dropbox.com/u/50971087/Test%202.720.mp4. Мне вполне хватает.


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

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