![]() |
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). |
Погонял программу на атоме D525. Результат - 800*600*30 тянет с нагрузкой 30%. 1280*960*30 уже не тянет
|
Вложений: 1
Не работает на windows 7
|
На Win7 до сих пор не проверял - нет подопытного компа с семеркой.
Буду признателен за выложенный отчет об ошибке. В скиншоте немного видно, что проблема в библиотеке набора AForge или дальше. Есть опасения, что запись авишки через Microsoft AVI в семерке не работает. |
Цитата:
Цитата:
|
Походу, проблема с записью в файл.
Для начала предлагаю отключить автоматический старт записи. Для этого все-таки придется лезть в конфиг и параметр AutoStartWrite в группе [CamWorker] выставить в 0: ... [CamWorker] ... AutoStartWrite=0 Можно вообще убрать эту строчку. После этого попытаться запустить программу и идти в настройки. Выставить кодек - DivX или XViD, а также желаемое разрешение камеры. Совместимость с остальными кодеками не проверялась. Добавлю - перед записью нужно настроить папку видеоархива. Пока программа не умеет настраиваться по умолчанию. Исправлю ближайшим вечером. |
Теперь все работает, спасибо.
Планируется добавить запись звука? |
Обязательно, чуть позже.
Щас воюю с ЖПС-модулем, правда, сомневаюсь в его полезности для других в силу необходимости добывать карты для своего региона. |
используй yandex
читай тут http://api.yandex.ru/maps/faq.xml#beginning_1 http://api.yandex.ru/maps/jsapi/examples/#basic |
Это не то, набаловался уже, с этой точки зрения карты от гугла даже интереснее. Конечная цель ЖПС-модуля - его полная автономность от внешних хранилищ. Но это так, оффтоп.
|
Цитата:
Посмотрел исходники. 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 раскрывать исходники он не стал, а времени у меня сейчас тоже нету самому разбираться (ипотека, ремонт ...), может ты сможешь разобраться, если начал отдельный проект. |
Цитата:
Цитата:
Вот это я не понял.. что значит набалывался? Какие внешние хранилища? В чем проблема писать трек и потом отображать его на yandex? Особенно мне нравится "набалывался"... ты уж прости... но если ты начнешь собственную систему отображения карт писать... вот тут даже не баловством, а сумасшествием будет попахивать :) Никогда ты не сделаешь то, что делают профессиональные картографы, программисты и поддержка yanndex, google и т.п. Тот же iGO, CityGuid и пр. конечно более подробно прорисовывают отдельные краты (Москва, Питер), но заедь в глушь дремучую и никакая карта не поможет. Только фото со спутника. |
Замечания-то правильные, но все не так просто. Утечек памяти нет, проверено - птому что сборщик мусора мелочевку чистит, и потому что все объекты маршаллинга создаются 1 раз и нигде не теряются. То, что много поглощает оперативки - это сделано специально, ради снижения вероятности потерь кадров. Именно поэтому поток-компоновщик работает в максимальном приоритете, а файло-писатель в минимальном - у него есть очередь, которую можно обработать и потом.
Оптимизировать надо, только явных путей нет. Я делал компоновку силами видеокарты, работало, выигрыша не было - все портила конверсия 24bpp<->32bpp. Аппаратное кодирование испортит основную идею - многокамерный микшер, который задумывался, как видеоредактор "на лету". Кроме того, это значит, что далеко не все камеры подключатся. |
Цитата:
В PION я делать это не собираюсь по одной причине - аскетизм. Собственно все ф топку, что ресурсы тратит ;) |
balabollng, в прошлом году сращивал на производстве интернет-карты с приемным модулем. Красиво, пока инет есть, учитывая, что железяки катаются по всей стране, конец немного предсказуем.
Да и в чем проблема срасить один из открытых проектов по рендерингу открытого формата карт с координато-приемником? Цитата:
|
Ищи библиотеки рисования в JPEG ;) Врать не буду, может это и легенда, но вроде как есть такие, не требуют миллион раз конвертировать одно в другое. Рисуют прямо по телу JPEG.
|
Цитата:
|
Цитата:
|
Ладно не буду демотивировать. Может ты и действительно Галиаф, который все это потянет.
Буду поглядеть. |
Цитата:
можешь в общих чертах сказать. какими функциями WinAPI рулить. я дошел до DeviceIoControl но сомневаюсь что это правильный подход. |
Цитата:
1. кадр сжат по одному из вариантов zip. 2. кадр находится в виде 3 наборов матриц 8*8, 2 из которых двухкратно интерполированы (то бишь тупо сжаты) То есть, надо картинку разжать, модифицировать и сжать. В своем случае я получаю уже набор байтов, аналогичный битмапу. 3. Ну и главное - размеры разные. 2 камеры 640*480 парой дадут 1280*480. Стырить байты просто не получится. При копировании больших блоков система припахивает dma. Я поначалу формировал кадр в нормальном состоянии, потом сделал, как нужно кодеку - результат был впечатляющим - копирование одного большого блока в 2 раза быстрее, чем копирование того же блока построчно. Отсюда и ответ на вопрос "почему плашка, а не текст на видео" - это быстрее. Проще отрисовать заранее картинку на небольшом контексте и скопировать его. |
Цитата:
|
Добавил запись звука. Пока, чтобы не возиться с получением форматов, сделал жестко pcm, 44100, 16bit, mono. Записывает, но че-то периодически похрюкивает на имеющейся в наличии камере. Буду благодарен за отчеты о работе на разных девайсах.
|
Итак, по результатам недельных пробежных испытаний получено следующее:
-программа портила последний записываемый файл, если выключить комп кнопкой - исправлено -исправлена наконец запись звука, на моих подопытных железках не хрюкает и нет сколь-нибудь заметного отставания от видео. Причина была в неверном выборе модели данных - режим "последний актуальный" для звука никак не годится. -(оффтоп)ЖПС модуль после перезагрузки упрямо превращается в "мышку", причем порт блокируется намертво системой. Флаг /noserialmice в boot.ini че-то не помогает. |
Программа потихоньку перерастает во фронт-енд, пусть и такой "велосипедный" и куцый. Поэкспериментировал с медиаплеером, мп3-шки читает, очередь создает. Не нравится "завершенность" графа, который строит библиотека от майкрософта.
Думаю создать тему в соответствующем разделе. |
Хрень какая-то творится - на попытку загрузить 400-килобайтные файлы ошибка 500 в конце загрузки. Прелесть, блин.
UPD. Утром с 4й попытки таки загрузилось. |
Сделал наконец возможность в парку тыков пальцем скинуть часть архива на флешку. На больших компах работает без нареканий, в машине не проверял - все никак не соберусь закончить установку новой матрицы. Так что программа работает сама по себе.
Чтобы не маяться с пересчетом, файлы архива тупо копируются в порядке даты создания, начиная с самого последнего и до достижения указанного количества, ну или пока флешка не переполнится. Ищется первая флешка в системе(по букве), в ней содается папка Records, куда и скидывается архив. |
Оформил обособленную версию видеорегистратора, больше в ней нет всякой ерунды. Думаю, в таком виде она будет более полезна.
|
Потестил Вашу программу. По качеству работы самого видеозахвата 5+
По настройкам программы есть небольшие нарекания: 1.Прежде всего не понравилось что отображение дыты время и прочей информации довольно мелковато и на странном сером фоне. 2. не понял функции работы кнопки сохранения если это для сохранения аварийного куска то думаю логичней будет в настройках сделать окно с указанием дерриктории сохранения. 3. Очевидно небходимо в настройках сделать отключение отображения курсора. 4. Возможность запуска программы совместно с запуском винды Это пока первые впечатления после часового пользования программы Может конечно я кое какие настройки не нашел или не понял как к ним подобраться. Вобщем буду разбираться. |
Спасибо за оценку. Сразу по пунктам:
1. Плашка сделана потому, что это дешевле (в ресурсах), чем выполнять попиксельное наложение. Но в течении нескольких дней сделаю наложение, как положено. Я-то изначально для себя ее делал, а у мя целевая машина - атом д525, там особо не разбежишься. 2. Фишка с сохранением на флешку задумывалась, чтобы сразу после какого-либо случая сунуть флешкку и скопировать N последних файлов с архива. Типа в 2 "тыка". 3. Про курсор не задумывался еще, т.к. планировалось встраивать эту программу в некое подобие фронт-энда, который сам будет управлять курсором. Тоже сделаю. 4. Была такая возможность, убрана, по той-же причине. Почти такая версия уже 3 месяца работает в машине без монитора. |
Курсор во многих фронтендах убирается только в самом фронтенде а в встраиваемых приложениях он остается.
В СarDVR есть возможность указать количество копируемых файлов и деррикторию для копирования. Я этой функцией часто пользуюсь когда на дороге попадается что-то интересное. А ведь деррикторию для сохранения можно указать и флешку.:smile1: |
Ну вот это аналогичная функция с той разницей, что тут флешка сама ищется и копируется только туда.
|
Цитата:
|
А смысл второго раздела? Винт с собой нести чтоль? Если сдохнет винт, то все сдохнет. Я поначалу вообще хотел автокопирование сделать, но сканировать каждую секунду (к примеру) диски на предмет наличия флешки нерационально.
|
Цитата:
|
Цитата:
|
По желанию публики сделаю. Но - отдельной кнопкой, т.к. уже сделанная фича несет функцию быстрого получения копии видео и приписывании флешки к протоколу в случае чего. В такой момент просто не будет времени переуказывать путь. Вообще рекомендую просто купить и держать в бардачке пустую дешевую флешку.
|
Фича сделана, прошу проверить, т.к. уехал на работу и не взял с собой подопытную камеру.
Замечена возможность падения, если тыкать во все кнопки и при этом камер нет вообще. |
Запуск программы в Win7 x64 просто блокируется...
|
А можно по-подробнее? Как проявляется блокировка? Если какое-то окно вылезает, то что в нем написано?
|
Часовой пояс GMT +4, время: 05:19. |
Работает на vBulletin® версия 3.8.4.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot