Фильтр источника видео для IP-камеры Axis не работает в DirectShow GraphEdit

Я пытаюсь получить видео с IP-камеры Axis P5515 для передачи в DirectShow, но все, что я получаю в окне рендеринга, - это черный экран.

Почти каждый поиск, который я ищу для фильтра захвата источника IP-камеры, заканчивается на странице «Фильтр источника видео DirectShow для IP-камер JPEG и M-JPEG» по адресу http://alax.info/blog/1216 (к которому прикреплены те же файлы, что и к странице "Источник IP-видео: 64-разрядная версия, гибкость разрешения, Adobe FMLE" на http://alax.info/blog/1223, где я их впервые нашел). Я скачал и установил 32-битное IpVideoSource устройство. Я настроил его с этим URL-адресом (действует подмена имени пользователя и пароля):

http://user:[email protected]:1026/axis-cgi/mjpg/video.cgi?resolution=640x360

здесь

Когда я вставляю этот URL-адрес в Firefox, Chrome и Opera, все они без жалоб отображают видеопоток. Когда я помещаю его в Safari, я получаю предупреждение, что это может быть фишинговый сайт, потому что у него есть имя пользователя и пароль, но когда я говорю «ОК», Safari отображает видеопоток. Когда я пытаюсь открыть видеопоток с помощью Internet Exploiter (11), он просто говорит

Internet Exploiter задыхается

В ходе одного из моих поисков была обнаружена страница «MediaTools для доставки видео с сетевых / IP-камер и видеосерверов в среду DirectShow» по адресу http://alax.info/blog/741, в котором есть «Пример быстрого использования», которому я пытался следовать, но мне не удалось заполнить график фильтра в GraphEdit, потому что «Фильтр декодера JPEG ", который он требует, недоступен: CodingI.dll, который мог бы его содержать, нет ни в одном из загруженных мной пакетов. «Пример быстрого использования» должен создать график, как показано на иллюстрации на http://alax.info/blog/1216

иллюстрация на alax.info/blog/wp-content/uploads/2011/05/Image0051-800x294.png

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

автоматически созданный график рендеринга Office_cam

Когда я пытаюсь запустить график, открывается окно активного фильма, но оно черное. Файл C:\ProgramData\IpVideoSource.log содержит следующие данные:

*** Exception
Process: 0x000288e0, Thread: 0x00028858, Date: 1/30/2017, Time: 11:34:59 AM, Application: graphedt.exe
Module: IpVideoSource.dll, Product Version: 1.0.3.1, File Version: 1.0.3.1506, File Time: 12.04.2015, 20:13
Code: 0xe06d7363, Flags: 0x00000001, Address: 0x75e6c54f
Parameters: 0x19930520, 0x02faea88, 0x5321d498
Native Parameters: 0x80190191, ...

** Call Stack
KERNELBASE!75E6C54F RaiseException (+ 88) @75E60000
IpVideoSource!531F7DCF @531A0000
IpVideoSource!531A281F @531A0000
IpVideoSource!531B5BD2 @531A0000
ntdll!773DF5DE RtlImageNtHeaderEx (+ 169) @773B0000

*** Exception
Process: 0x000288e0, Thread: 0x00028858, Date: 1/30/2017, Time: 11:34:59 AM, Application: graphedt.exe
Module: IpVideoSource.dll, Product Version: 1.0.3.1, File Version: 1.0.3.1506, File Time: 12.04.2015, 20:13
Code: 0xe06d7363, Flags: 0x00000001, Address: 0x75e6c54f
Parameters: 0x19930520, 0x02faea88, 0x5321d498
Native Parameters: 0x80190191, ...

** Call Stack
KERNELBASE!75E6C54F RaiseException (+ 88) @75E60000
IpVideoSource!531F7DCF @531A0000
IpVideoSource!531A281F @531A0000
IpVideoSource!531B5BD2 @531A0000
ntdll!773DF5DE RtlImageNtHeaderEx (+ 169) @773B0000

*** Exception
Process: 0x000288e0, Thread: 0x00028858, Date: 1/30/2017, Time: 11:34:59 AM, Application: graphedt.exe
Module: IpVideoSource.dll, Product Version: 1.0.3.1, File Version: 1.0.3.1506, File Time: 12.04.2015, 20:13
Code: 0xe06d7363, Flags: 0x00000003, Address: 0x75e6c54f
Parameters: 0x19930520, 0x02faea88, 0x5321d498
Native Parameters: 0x80190191, ...

** Call Stack
IpVideoSource!531F0727 @531A0000
IpVideoSource!531F5E93 @531A0000
IpVideoSource!531F61A3 @531A0000
IpVideoSource!531F6896 @531A0000
IpVideoSource!531F0819 @531A0000
ntdll!77413529 RtlDestroyEnvironment (+ 1227) @773B0000
ntdll!774134FB RtlDestroyEnvironment (+ 1181) @773B0000
ntdll!773C0143 KiUserExceptionDispatcher (+ 15) @773B0000
IpVideoSource!531F7DCF @531A0000
IpVideoSource!531A281F @531A0000
IpVideoSource!531B5BD2 @531A0000
ntdll!773DF5DE RtlImageNtHeaderEx (+ 169) @773B0000

Я пробовал комбинации множества фильтров, включая Alax.Info HTTP Stream File Renderer, Alax.Info JPEG Frame Decoder, Alax.Info HTTP Stream Parser, AXIS MJPEG Video Decoder, MJPEG Decompressor, Smart Tee, два разных Video Renderer фильтра и, возможно, другие, но все безрезультатно.

У меня эта проблема возникает как в 32-битной, так и в 64-битной Windows 7 с установленным DirectX SDK (июнь 2010 г.) и Windows 7 SDK, поэтому я подозреваю, что что-то упустил.

Мы будем благодарны за любые полезные предложения.


person FKEinternet    schedule 30.01.2017    source источник
comment
В то время как другие проблемы были обнаружены при отладке этого, оказалось, что большая часть проблемы была моя тестовая среда: я запускал GraphEdit в окне удаленного рабочего стола, потому что использовать ноутбук w7 неудобно в моей офисной среде. Когда я взял ноутбук в кофейню и попытался отладить код, он внезапно заработал. Я не замечал разницы, пока в моем офисе снова не вышло из строя с удаленным рабочим столом. Затем я напрямую попробовал ноутбук - и график работал правильно - у меня был дымящийся пистолет: удаленный рабочий стол не то же самое, что использование компьютера напрямую.   -  person FKEinternet    schedule 30.03.2017


Ответы (1)


IpVideoSource.log выглядит релевантным (ключевое слово 0x80190191) и предполагает, что проблема вызвана ошибкой HTTP 401 Unauthorized, отправленной камерой в ответ. То есть камера не принимает учетные данные, что, в свою очередь - с учетом того, что это камера Axis - вызвано настройкой камеры, требующей безопасного метода аутентификации HTTP, такого как дайджест.

IpVideoSource.dll в настоящее время реализует фильтр источника DirectShow, который ограничен только базовым методом аутентификации ( WINHTTP_AUTH_SCHEME_BASIC).

Для устранения неполадок можно отключить аутентификацию на камере, чтобы проверить, помогает ли она получить изображение. В качестве обходного пути с камерой, такой как Axis, которая предположительно также поддерживает протокол HTTPS (во время разработки IpVideoSource.dll редкие IP-камеры поддерживали HTTPS, а также дайджест-аутентификацию), можно использовать HTTPS с базовой аутентификацией, поэтому этот простой текстовый пароль на проводе защищен слоем безопасных сокетов.

person Roman R.    schedule 30.01.2017