Работа с IP камерой. (IP camera)

VISA, TCP/IP, USB, CAN, GPIB и подобные протоколы

Re: Работа с IP камерой. (IP camera)

Postby Borjomy_1 on 26 Mar 2015, 13:09

Итак, проблема. Начиная с какого-то момента работы (минут 20) приложения происходит следующий сбой: визуально картинка замирает и начинает размываться и съезжать вниз. Это было замечено еще вчера. Сегодня подтвердилось. Причем высчитанный FrameRate не меняется, но такое ощущение, что эвент не успевает выполняться и накапливается - нажатие на кнопку стоп (событие обрабатывается в этой-же структуре) отрабатывается с сильным запаздыванием, пропорциональным времени между началом сбоя и нажатием на кнопку. Загрузка процессора, как и было, в районе 20%. Возможно, это может быть связано, что камера выдает изображение с частотой не больше 20 Fps. А VLC работает с 25 Fps, на что указывает график.
Upd. сбой на 40 минутах.
Attachments
Нормальное изображение.PNG
Размывание.PNG
Вычисленная частота Fps.PNG
Частота эвента, в кадрах в сек
Вычисленная частота Fps.PNG (5.9 KiB) Viewed 8316 times
Borjomy_1
expert
expert
 
Posts: 1905
Joined: 28 Jun 2012, 09:32
Location: город семи холмов
Medals: 3
Activity (1) Professionalism (1) Silver (1)
LabVIEW Version: 4-8.6,9-14
Karma: 332
VIP

Re: Работа с IP камерой. (IP camera)

Postby dadreamer on 26 Mar 2015, 14:33

Borjomy_1 wrote:такое ощущение, что эвент не успевает выполняться и накапливается

Что показывает Эвент Инспектор?
User avatar
dadreamer
professor
professor
 
Posts: 3338
Joined: 17 Feb 2013, 16:33
Medals: 4
Activity (1) Professionalism (1) Автор (2)
LabVIEW Version: 2.5 — 2019
Karma: 845
I/O VIP vision internet

Re: Работа с IP камерой. (IP camera)

Postby Borjomy_1 on 26 Mar 2015, 16:29

А ничего... Desktop Execution Trace Toolkit падает на запуске. Переставлять все это хозяйство у меня сейчас нет времени...
Upd. Поведение разное. Иногда останавливается сразу. Странно другое. Параметр, передаваемый эвенту, фактически является константой. Его значение не меняется. Но картинка искажается.
Borjomy_1
expert
expert
 
Posts: 1905
Joined: 28 Jun 2012, 09:32
Location: город семи холмов
Medals: 3
Activity (1) Professionalism (1) Silver (1)
LabVIEW Version: 4-8.6,9-14
Karma: 332
VIP

Re: Работа с IP камерой. (IP camera)

Postby dadreamer on 26 Mar 2015, 17:38

Borjomy_1 wrote:Странно другое. Параметр, передаваемый эвенту, фактически является константой. Его значение не меняется. Но картинка искажается.

Он и не должен меняться, ведь это указатель на буфер, который мы выделили при инициализации (DSNewPtr). А вот сам буфер меняется, и что там находится, зависит полностью от libvlc. Наскольно я понял из прошлых тестов, если есть пропуск кадров, то необработанные эвенты через какое-то время удаляются из очереди и никакого влияния на дальнейшую работу не оказывают. Но все тесты были кратковременными, уж точно не по 40 минут.

Попробуйте запустить тот же самый поток с тем же лимитом кэширования в самом VLC и оставьте на длительное время. Если возникнет та же ситуация, то виноват VLC. Если же нет, то вина ложится на libvlc, либо на архитектуру программы в :labview: .

В своё время я рассматривал VLC как альтернативу для работы с IP-камерами, думал так же прикрутить это дело в :labview: . Но пришлось отказаться от такого решения по следующим причинам:
1) задержка кэширования - требовалось практически реальное время наблюдения за объектом, что с задержкой около 1 сек. оказалось недопустимым;
2) артефакты при воспроизведении, например эффект "молочной пленки", типа как на рисунке здесь: кадр виден через эту пленку, через какое-то время проясняется и так до следующего раза.
User avatar
dadreamer
professor
professor
 
Posts: 3338
Joined: 17 Feb 2013, 16:33
Medals: 4
Activity (1) Professionalism (1) Автор (2)
LabVIEW Version: 2.5 — 2019
Karma: 845
I/O VIP vision internet

Re: Работа с IP камерой. (IP camera)

Postby Borjomy_1 on 27 Mar 2015, 12:06

В своё время я рассматривал VLC как альтернативу для работы с IP-камерами, думал так же прикрутить это дело в :labview: .

а какая другая альтернатива? Мне Ni-Max не удалось заставить хотя-бы опознать ни одну из двух IP камер разных производителей.

Ситуация с искажением изображения возникает также при большой нагрузке на процессор. Может быть, что сбивается lock/unlock (не разблокирован, когда приходит новый кадр). Сейчас буфер установлен 1000мс

Upd.
Вынес перенос кадра из буфера на картинку из эвента через очередь, что гарантирует непропуск кадров. Вместе с обработкой кадра загрузка уменьшилась до 16%. Но с другой стороны, есть риск лавинообразного потребления памяти при проблемах на приеме из очереди.


Накопились вопросы.
Можно ли как-то регулировать число кадров в сек в библиотеке VLC? У камеры 20 кадров. По последней картинке видно, что эта частота при получении кадра скачет. Преимущественно 25, реже 12.5 и еще реже 20 и ~32. Если подключить камеру (другую) с частотой 25 кадров, то и частота при получении кадра очень стабильно держится на этой отметке. Подозреваю, что сбои картинки связаны с высокой волатильностью частоты возникновения события при несовпадающих частотах.
Attachments
выдача в очередь.PNG
Borjomy_1
expert
expert
 
Posts: 1905
Joined: 28 Jun 2012, 09:32
Location: город семи холмов
Medals: 3
Activity (1) Professionalism (1) Silver (1)
LabVIEW Version: 4-8.6,9-14
Karma: 332
VIP

Re: Работа с IP камерой. (IP camera)

Postby dadreamer on 27 Mar 2015, 14:21

Borjomy_1 wrote:а какая другая альтернатива?

Тот софт, что предоставляет разработчик/поставщик камеры. В моём случае это были мало-мальские компоненты ActiveX, которые работали без задержек, в отличие от VLC. Если вы рассматриваете другие плееры, то скажу, что это бесполезно: остальные хуже, чем VLC, у некоторых задержка составляет и 3 сек, а некоторые постоянно глючат.
Borjomy_1 wrote:Может быть, что сбивается lock/unlock (не разблокирован, когда приходит новый кадр).

Они так названы по другой причине: чтобы не возникало одновременного доступа к буферу (VLC пишет, а кто-то читает) в lock ставится мьютекс, а в unlock снимается. В данном случае я не стал запариваться с мьютексами, а просто передаю указатель на буфер в :labview: (PostLVUserEvent) в unlock'е, что должно гарантировать, что буфер свежий и можно его прочитать. Если есть желание, могу сделать генерацию рандомного буфера на каждом рендеринге. Вот здесь, например, вообще поток генерации кадров и поток чтения никак не связаны, так что по логике вещей чтение может совпасть с записью в буфер. Но судя по всему у автора статьи всё прекрасно работает. Можно и такой вариант попробовать тоже, я уже предлагал - вместо Event'а используется While с фиксированной задержкой и в нём выполняется постоянно MoveBlock. Если согласны, то я перекомпилирую callback. Или можете сами это сделать в MSVS.
Если подключить камеру (другую) с частотой 25 кадров, то и частота при получении кадра очень стабильно держится на этой отметке.

А в самом плеере не проверяли работу камеры? И как работают обе камеры в сравнении друг с другом? Будут ли такие искажения?
User avatar
dadreamer
professor
professor
 
Posts: 3338
Joined: 17 Feb 2013, 16:33
Medals: 4
Activity (1) Professionalism (1) Автор (2)
LabVIEW Version: 2.5 — 2019
Karma: 845
I/O VIP vision internet

Re: Работа с IP камерой. (IP camera)

Postby Borjomy_1 on 27 Mar 2015, 16:02

вместо Event'а используется While с фиксированной задержкой и в нём выполняется постоянно MoveBlock.

Пробовал ))) Не прошло. Считывается пустой буфер.

А в самом плеере не проверяли работу камеры? И как работают обе камеры в сравнении друг с другом?

Визуально все воспроизводится примерно одинаково. Имеется только инструментальный разброс по времени получения кадра.
Borjomy_1
expert
expert
 
Posts: 1905
Joined: 28 Jun 2012, 09:32
Location: город семи холмов
Medals: 3
Activity (1) Professionalism (1) Silver (1)
LabVIEW Version: 4-8.6,9-14
Karma: 332
VIP

Re: Работа с IP камерой. (IP camera)

Postby dadreamer on 27 Mar 2015, 18:57

Borjomy_1 wrote:Считывается пустой буфер.

Я же написал:
dadreamer wrote:Если согласны, то я перекомпилирую callback. Или можете сами это сделать в MSVS.

2015-03-27_20-52-51.jpg

VLC_Callbacks.rar
Тест №5
(52.1 KiB) Downloaded 218 times

Borjomy_1 wrote:Визуально все воспроизводится примерно одинаково.

Т.е., проблемы чисто в :labview: , а в остальном всё ОК.
User avatar
dadreamer
professor
professor
 
Posts: 3338
Joined: 17 Feb 2013, 16:33
Medals: 4
Activity (1) Professionalism (1) Автор (2)
LabVIEW Version: 2.5 — 2019
Karma: 845
I/O VIP vision internet

Re: Работа с IP камерой. (IP camera)

Postby Borjomy_1 on 30 Mar 2015, 13:49

Хм.. следующий шаг в сторону допила )))) - это функция, аналогичная по принципу TCP Read (чтение кадра с таймаутом). Т.е внутри dll-ки поток, который запускается на ожидание события получения кадра. Но я не настаиваю, это как идея.
Borjomy_1
expert
expert
 
Posts: 1905
Joined: 28 Jun 2012, 09:32
Location: город семи холмов
Medals: 3
Activity (1) Professionalism (1) Silver (1)
LabVIEW Version: 4-8.6,9-14
Karma: 332
VIP

Re: Работа с IP камерой. (IP camera)

Postby dadreamer on 30 Mar 2015, 17:53

Borjomy_1, а как в этом случае синхронизировать с :labview: ? Я честно говоря так и не понял, почему эвент со стороны :labview: не "взлетел"... А вдруг ожидание в DLL тоже не заработает. Да и внутри DLL бедный функционал в плане механизмов синхронизации :labview: . Не поддерживаются ни очереди, ни нотифаеры, ни семафоры, есть лишь функция Occur, так что придётся возиться с WinAPI. Может, схемку накидаете, как это всё должно выглядеть.
User avatar
dadreamer
professor
professor
 
Posts: 3338
Joined: 17 Feb 2013, 16:33
Medals: 4
Activity (1) Professionalism (1) Автор (2)
LabVIEW Version: 2.5 — 2019
Karma: 845
I/O VIP vision internet

Re: Работа с IP камерой. (IP camera)

Postby Mad!sson on 15 May 2015, 13:48

Мужчины помогите!

Сейчас реализую проект в котором нужна запись стрима с видеопотока и просто подключение к камере.

Обычное подключение к камере реализовал достаточно быстро, использовав самый первый пример в этой теме (через ActiveX).

А вот второй вариант что-то не выходит. Скачал ваши примеры VLC - Save Stream и VLC_Callbacks. В обоих случаях выводится одна и таже ошибка (Код 15, Call Library Function Node in VLC). Появляется она во время вызова функции libvlc_media_new_location. Видеопоток есть и он исправен (проверено через VLC, D-link, Mydlink, KMP player) :cantbe:

На данный момент использую камеру DCS - 930L.
Mad!sson
beginner
beginner
 
Posts: 22
Joined: 21 Jan 2015, 10:46
LabVIEW Version: 2013
Karma: 0

Re: Работа с IP камерой. (IP camera)

Postby dadreamer on 15 May 2015, 14:00

Mad!sson wrote:libvlc_media_new_location

Может, адрес канала неверно указали? И проверьте путь к вашему VLC. Что выдает инструмент VLC - Get Program Location (path).vi? Должно быть что-то типа C:\Program Files (x86)\VideoLAN\VLC\vlc.exe. И не мешайте в одной программе ActiveX с DLL, используйте что-то одно.

И, случаем, у вас LabVIEW не x64? Если так, то нужно использовать 64-битную библиотеку libvlc и делать 64-битный callback.
User avatar
dadreamer
professor
professor
 
Posts: 3338
Joined: 17 Feb 2013, 16:33
Medals: 4
Activity (1) Professionalism (1) Автор (2)
LabVIEW Version: 2.5 — 2019
Karma: 845
I/O VIP vision internet

Re: Работа с IP камерой. (IP camera)

Postby dadreamer on 15 May 2015, 15:50

Borjomy_1 wrote:Если поменять порядок цветов, помеченный красным, то вообще никаких преобразований не нужно!

У меня, кстати, на работе с BGRA почему-то не захотело работать - тупо черный экран вместо изображения. Image (LV 2013). Хотя дома прекрасно работает на LV 2013 и на LV 2014. Помню, что у меня раньше тоже были какие-то проблемы, пришлось использовать RGBA и мат. обработку.
User avatar
dadreamer
professor
professor
 
Posts: 3338
Joined: 17 Feb 2013, 16:33
Medals: 4
Activity (1) Professionalism (1) Автор (2)
LabVIEW Version: 2.5 — 2019
Karma: 845
I/O VIP vision internet

Re: Работа с IP камерой. (IP camera)

Postby Mad!sson on 15 May 2015, 16:44

Адрес канала указываю один и тот же. Для VLC плеера и VLC ActiveX в Labview. Грубо говоря не подключается именно в ваших примерах (конечно я их не коим образом не изменял, кроме путей к библиотекам). Перед libvlc_media_new_location стоит функция libvlc_new, там все нормально проходит.

У меня ощущение, что все таки проблема в самом потоке либо что-то я не так задаю. Сам поток прописан таким образом - http://admin:welovemvk@192.168.1.45/vid ... lution=VGA. Может в этом проблема?
Last edited by Mad!sson on 15 May 2015, 16:51, edited 1 time in total.
Mad!sson
beginner
beginner
 
Posts: 22
Joined: 21 Jan 2015, 10:46
LabVIEW Version: 2013
Karma: 0

Re: Работа с IP камерой. (IP camera)

Postby Mad!sson on 15 May 2015, 16:49

Labview 2013 32 bit. Путь к библиотеке - c:\Program Files (x86)\VideoLAN\VLC\libvlc.dll. VLC - 1.0.5.
Mad!sson
beginner
beginner
 
Posts: 22
Joined: 21 Jan 2015, 10:46
LabVIEW Version: 2013
Karma: 0

PreviousNext

Return to Коммуникация с приборами

Who is online

Users browsing this forum: No registered users and 1 guest

cron