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

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

Likn 15.11.2011 11:00

CamWorker - многокамерная регистрация
 
Вложений: 4
После установки карпутера озадачился программой видеорегистрации.
Основные цели - сделать программу-аналог CarDVR с лучшей производительностью и удобством.
Я лично не люблю кота в мешке, поэтому выкладываю программу вместе с исходниками.
На чем делалось: C#, VS2008
Что программа умеет:
1. Использовать любые камеры, поддерживающие хоть как-нибудь UVC, любого разрешения.
2. Делать видеомикшер из нескольких камер, располагая источники в любом месте. Сверху слева накладывается плашка для вывода информации.
3. Писать картинку с микшера в avi-файл. Кодек можно выбрать.
4. Выводить на экран любой источник, не отрываясь от записи микшера.
6. Автоматическое определение пропуска кадров при записи и снижение количества кадров в секунду.
7. Для защиты от пропуска кадров реализована очередь кадров. Размер очереди зависит от объема физической памяти. По умолчанию очередь занимает 20%.
8. Запись звука с любого доступного источника.
9. Контроль размера папки с архивом. Максимальный размер архива можно задать в настройках. При переполнении старые файлы удаляются.
10. Индикатор записи, вывод в плашке координат и скорости по GPS. Все настраивается.
11. Все настройки можно сделать, не открывая конфиг, пальцем, на месте.
12. Возможность скинуть отснятый материал на флешку или в папку на диске.

Все откомпилированные файлы находятся в папке Build.
Это обособленная версия, отлично подходит для встраивания во фронт-енд.

Текущая версия - 1.2.0
1.2.0
!исправлено неправильное зануление положения первой камеры.
!исправлен косяк пересчета размера буфера звука при автоснижении скорости записи.
!теперь при сворачивании вылетает не всегда)).
1.1.3
!исправлена иногда встречающаяся фатальная ошибка при записи звука.
1.1.2
!исправлено отображение микшера при малых разрешениях (w<640)
!исправлены ошибки, связанные с пропаданием зарегистированных устройств. Пропавший микрофон просто отключается, пропавшая камера исключается из очереди.
!исправлен косяк, вылезающий при запуске без конфига - программа не запускала камеру и требовала настройку пути сохранения.

в архивах находятся исполняемые файлы (Build_1.1.3.rar) и полностью проект (CamWorker_1.1.3.rar).

Likn 20.11.2011 15:55

Погонял программу на атоме D525. Результат - 800*600*30 тянет с нагрузкой 30%. 1280*960*30 уже не тянет

Dens-v 20.11.2011 16:14

Вложений: 1
Не работает на windows 7

Likn 20.11.2011 16:20

На Win7 до сих пор не проверял - нет подопытного компа с семеркой.
Буду признателен за выложенный отчет об ошибке. В скиншоте немного видно, что проблема в библиотеке набора AForge или дальше. Есть опасения, что запись авишки через Microsoft AVI в семерке не работает.

Dens-v 20.11.2011 16:53

Цитата:

Сообщение от Likn (Сообщение 202356)
На Win7 до сих пор не проверял - нет подопытного компа с семеркой.
Буду признателен за выложенный отчет об ошибке. В скиншоте немного видно, что проблема в библиотеке набора AForge или дальше. Есть опасения, что запись авишки через Microsoft AVI в семерке не работает.

Описание:
Цитата:

Stopped working

Сигнатура проблемы:
Имя события проблемы: CLR20r3
Сигнатура проблемы 01: mainprog.exe
Сигнатура проблемы 02: 1.0.0.0
Сигнатура проблемы 03: 4ec6dc86
Сигнатура проблемы 04: AForge.Video.VFW
Сигнатура проблемы 05: 2.2.0.0
Сигнатура проблемы 06: 4ec8c5b6
Сигнатура проблемы 07: 24
Сигнатура проблемы 08: 77
Сигнатура проблемы 09: System.IO.IOException
Версия ОС: 6.1.7600.2.0.0.256.4
Код языка: 1049

Ознакомьтесь с заявлением о конфиденциальности в Интернете:
http://go.microsoft.com/fwlink/?link...8&clcid=0x0419

Если заявление о конфиденциальности в Интернете недоступно, ознакомьтесь с его локальным вариантом:
C:\WINDOWS\system32\ru-RU\erofflps.txt

Likn 20.11.2011 17:38

Походу, проблема с записью в файл.
Для начала предлагаю отключить автоматический старт записи. Для этого все-таки придется лезть в конфиг и параметр AutoStartWrite в группе [CamWorker] выставить в 0:
...
[CamWorker]
...
AutoStartWrite=0

Можно вообще убрать эту строчку.
После этого попытаться запустить программу и идти в настройки. Выставить кодек - DivX или XViD, а также желаемое разрешение камеры. Совместимость с остальными кодеками не проверялась.

Добавлю - перед записью нужно настроить папку видеоархива. Пока программа не умеет настраиваться по умолчанию. Исправлю ближайшим вечером.

Dens-v 21.11.2011 09:56

Теперь все работает, спасибо.
Планируется добавить запись звука?

Likn 21.11.2011 10:21

Обязательно, чуть позже.
Щас воюю с ЖПС-модулем, правда, сомневаюсь в его полезности для других в силу необходимости добывать карты для своего региона.

balabollng 21.11.2011 10:52

используй yandex


читай тут http://api.yandex.ru/maps/faq.xml#beginning_1

http://api.yandex.ru/maps/jsapi/examples/#basic

Likn 21.11.2011 11:46

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

oops1 21.11.2011 12:08

Цитата:

Сообщение от Likn (Сообщение 201777)
...
На чем делалось: C#, VS2008
Что программа умеет:
1. Использовать любые камеры, поддерживающие UVC, любого разрешения....


Посмотрел исходники. UVC поддерживает постольку поскольку. Никакого выигрыша не дает.

Чтобы реально использовать UVC нужно работать не через видеофовиндовс, А работать напрямую с железом.

1. Программа нуждается жесткой оптимизации.
2. Много мест потенциально опасных в плане утечки ресурсов.

Молодец конечно что начал развивать еще один проект видео регистрации, хочется верить что проект не будет заброшен и с UVC камера будет работать напрямую. Именно работа напрямую с UVC камерами даст шанс значительно разгрузить процессор. Но работа напрямую также подразумевает отказа от перекодирования конечного в кодек xvid (или любой другой)

p.s.
Рекомендую к прочтению USB Device Class Definition for Video Devices, Revision 1.1, June 2005
Для того чтобы не изобретать велосипед http://pinvoke.net/
Статейка на хабре P/Invoke и 64-битная разработка
p.s.s.
тема автора PION
http://www.pccar.ru/showthread.php?t=14603
было у меня желание на дот нете написать библиотечку для работы c UVC камерами, обратился к balabollng раскрывать исходники он не стал, а времени у меня сейчас тоже нету самому разбираться (ипотека, ремонт ...), может ты сможешь разобраться, если начал отдельный проект.

balabollng 21.11.2011 13:03

Цитата:

Сообщение от oops1 (Сообщение 202388)
... обратился к balabollng раскрывать исходники он не стал...проект.

Тут дело не во мне, а в том, кто мне помог. Он использует этот код в коммерческом продукте. Правда не в России. Но все ровно боится, что код всплывет.

Цитата:

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

Вот это я не понял.. что значит набалывался? Какие внешние хранилища? В чем проблема писать трек и потом отображать его на yandex?

Особенно мне нравится "набалывался"... ты уж прости... но если ты начнешь собственную систему отображения карт писать... вот тут даже не баловством, а сумасшествием будет попахивать :)

Никогда ты не сделаешь то, что делают профессиональные картографы, программисты и поддержка yanndex, google и т.п.

Тот же iGO, CityGuid и пр. конечно более подробно прорисовывают отдельные краты (Москва, Питер), но заедь в глушь дремучую и никакая карта не поможет. Только фото со спутника.

Likn 21.11.2011 13:04

Замечания-то правильные, но все не так просто. Утечек памяти нет, проверено - птому что сборщик мусора мелочевку чистит, и потому что все объекты маршаллинга создаются 1 раз и нигде не теряются. То, что много поглощает оперативки - это сделано специально, ради снижения вероятности потерь кадров. Именно поэтому поток-компоновщик работает в максимальном приоритете, а файло-писатель в минимальном - у него есть очередь, которую можно обработать и потом.
Оптимизировать надо, только явных путей нет. Я делал компоновку силами видеокарты, работало, выигрыша не было - все портила конверсия 24bpp<->32bpp.
Аппаратное кодирование испортит основную идею - многокамерный микшер, который задумывался, как видеоредактор "на лету". Кроме того, это значит, что далеко не все камеры подключатся.

balabollng 21.11.2011 13:07

Цитата:

Аппаратное кодирование испортит основную идею - многокамерный микшер, который задумывался, как видеоредактор "на лету". Кроме того, это значит, что далеко не все камеры подключатся.
Это заблуждение. Ты будешь получать MJPG кадры. Как хочешь их так и обрабатывай.

В PION я делать это не собираюсь по одной причине - аскетизм. Собственно все ф топку, что ресурсы тратит ;)

Likn 21.11.2011 13:08

balabollng, в прошлом году сращивал на производстве интернет-карты с приемным модулем. Красиво, пока инет есть, учитывая, что железяки катаются по всей стране, конец немного предсказуем.
Да и в чем проблема срасить один из открытых проектов по рендерингу открытого формата карт с координато-приемником?
Цитата:

Сообщение от balabollng (Сообщение 202393)
Это заблуждение. Ты будешь получать MJPG кадры. Как хочешь их так и обрабатывай.
В PION я делать это не собираюсь по одной причине - аскетизм. Собственно все ф топку, что ресурсы тратит ;)

Логично, только для микширования все равно раскодировать придется. А потом снова кодировать.

balabollng 21.11.2011 13:23

Ищи библиотеки рисования в JPEG ;) Врать не буду, может это и легенда, но вроде как есть такие, не требуют миллион раз конвертировать одно в другое. Рисуют прямо по телу JPEG.

balabollng 21.11.2011 13:32

Цитата:

balabollng, в прошлом году сращивал на производстве интернет-карты с приемным модулем. Красиво, пока инет есть, учитывая, что железяки катаются по всей стране, конец немного предсказуем.
Прости может я тупой :)))) Но я тебе не предлагаю ездить в online :) Пиши себе трек на диск. Отображение можно сделать через yandex.

Likn 21.11.2011 13:43

Цитата:

Сообщение от balabollng (Сообщение 202397)
Прости может я тупой :)))) Но я тебе не предлагаю ездить в online :) Пиши себе трек на диск. Отображение можно сделать через yandex.

Просто задача немного другая. Я себе хочу самодельный навигатор, а также еще кучу всего. Регистрация реализована первой потому что зима наступила и риск стукнуться многократно повышается.

balabollng 21.11.2011 13:56

Ладно не буду демотивировать. Может ты и действительно Галиаф, который все это потянет.

Буду поглядеть.

oops1 21.11.2011 17:23

Цитата:

Сообщение от balabollng (Сообщение 202391)
Тут дело не во мне, а в том, кто мне помог. Он использует этот код в коммерческом продукте.......

Да я на тебя не гоню ;) понимаю.

можешь в общих чертах сказать.

какими функциями WinAPI рулить.

я дошел до DeviceIoControl но сомневаюсь что это правильный подход.

Likn 21.11.2011 17:46

Цитата:

Сообщение от balabollng (Сообщение 202396)
Ищи библиотеки рисования в JPEG ;) Врать не буду, может это и легенда, но вроде как есть такие, не требуют миллион раз конвертировать одно в другое. Рисуют прямо по телу JPEG.

Я о таких не слышал (может, они и есть) и сильно сомневаюсь в эффективности такого решения, потому что:
1. кадр сжат по одному из вариантов zip.
2. кадр находится в виде 3 наборов матриц 8*8, 2 из которых двухкратно интерполированы (то бишь тупо сжаты)
То есть, надо картинку разжать, модифицировать и сжать. В своем случае я получаю уже набор байтов, аналогичный битмапу.
3. Ну и главное - размеры разные. 2 камеры 640*480 парой дадут 1280*480. Стырить байты просто не получится.
При копировании больших блоков система припахивает dma. Я поначалу формировал кадр в нормальном состоянии, потом сделал, как нужно кодеку - результат был впечатляющим - копирование одного большого блока в 2 раза быстрее, чем копирование того же блока построчно.

Отсюда и ответ на вопрос "почему плашка, а не текст на видео" - это быстрее. Проще отрисовать заранее картинку на небольшом контексте и скопировать его.

balabollng 21.11.2011 19:14

Цитата:

я дошел до DeviceIoControl но сомневаюсь что это правильный подход.
Как раз правильный. Устройство открывается обычным CreateFile получается хендел интерфейса а дальше обмениваешься пакетами.

Likn 22.11.2011 19:15

Добавил запись звука. Пока, чтобы не возиться с получением форматов, сделал жестко pcm, 44100, 16bit, mono. Записывает, но че-то периодически похрюкивает на имеющейся в наличии камере. Буду благодарен за отчеты о работе на разных девайсах.

Likn 28.11.2011 23:12

Итак, по результатам недельных пробежных испытаний получено следующее:
-программа портила последний записываемый файл, если выключить комп кнопкой - исправлено
-исправлена наконец запись звука, на моих подопытных железках не хрюкает и нет сколь-нибудь заметного отставания от видео. Причина была в неверном выборе модели данных - режим "последний актуальный" для звука никак не годится.
-(оффтоп)ЖПС модуль после перезагрузки упрямо превращается в "мышку", причем порт блокируется намертво системой. Флаг /noserialmice в boot.ini че-то не помогает.

Likn 05.12.2011 15:22

Программа потихоньку перерастает во фронт-енд, пусть и такой "велосипедный" и куцый. Поэкспериментировал с медиаплеером, мп3-шки читает, очередь создает. Не нравится "завершенность" графа, который строит библиотека от майкрософта.

Думаю создать тему в соответствующем разделе.

Likn 15.12.2011 00:07

Хрень какая-то творится - на попытку загрузить 400-килобайтные файлы ошибка 500 в конце загрузки. Прелесть, блин.
UPD. Утром с 4й попытки таки загрузилось.

Likn 29.12.2011 21:34

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

Likn 10.01.2012 01:38

Оформил обособленную версию видеорегистратора, больше в ней нет всякой ерунды. Думаю, в таком виде она будет более полезна.

ciclop 22.01.2012 19:48

Потестил Вашу программу. По качеству работы самого видеозахвата 5+
По настройкам программы есть небольшие нарекания:
1.Прежде всего не понравилось что отображение дыты время и прочей информации довольно мелковато и на странном сером фоне.
2. не понял функции работы кнопки сохранения если это для сохранения аварийного куска то думаю логичней будет в настройках сделать окно с указанием дерриктории сохранения.
3. Очевидно небходимо в настройках сделать отключение отображения курсора.
4. Возможность запуска программы совместно с запуском винды

Это пока первые впечатления после часового пользования программы
Может конечно я кое какие настройки не нашел или не понял как к ним подобраться. Вобщем буду разбираться.

Likn 22.01.2012 21:02

Спасибо за оценку. Сразу по пунктам:
1. Плашка сделана потому, что это дешевле (в ресурсах), чем выполнять попиксельное наложение. Но в течении нескольких дней сделаю наложение, как положено. Я-то изначально для себя ее делал, а у мя целевая машина - атом д525, там особо не разбежишься.
2. Фишка с сохранением на флешку задумывалась, чтобы сразу после какого-либо случая сунуть флешкку и скопировать N последних файлов с архива. Типа в 2 "тыка".
3. Про курсор не задумывался еще, т.к. планировалось встраивать эту программу в некое подобие фронт-энда, который сам будет управлять курсором. Тоже сделаю.
4. Была такая возможность, убрана, по той-же причине.

Почти такая версия уже 3 месяца работает в машине без монитора.

ciclop 22.01.2012 21:37

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

Likn 22.01.2012 21:46

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

ciclop 23.01.2012 01:23

Цитата:

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

В том то и дело что только туда. А если у меня к примеру диск разбит на 2 диска и на диске D специально выделена для этих вещей папка.

Likn 23.01.2012 01:30

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

ciclop 23.01.2012 11:49

Цитата:

Сообщение от Likn (Сообщение 208390)
А смысл второго раздела? Винт с собой нести чтоль? Если сдохнет винт, то все сдохнет. Я поначалу вообще хотел автокопирование сделать, но сканировать каждую секунду (к примеру) диски на предмет наличия флешки нерационально.

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

Dens-v 23.01.2012 11:54

Цитата:

Сообщение от Likn (Сообщение 208390)
А смысл второго раздела? Винт с собой нести чтоль? Если сдохнет винт, то все сдохнет. Я поначалу вообще хотел автокопирование сделать, но сканировать каждую секунду (к примеру) диски на предмет наличия флешки нерационально.

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

Likn 23.01.2012 12:48

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

Likn 30.01.2012 17:05

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

Narkom 31.01.2012 13:12

Запуск программы в Win7 x64 просто блокируется...

Likn 31.01.2012 13:27

А можно по-подробнее? Как проявляется блокировка? Если какое-то окно вылезает, то что в нем написано?


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

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