1

我正在尝试从 Axis P5515 IP 摄像机获取视频以输入 DirectShow,但我在渲染窗口中得到的只是黑屏。

几乎每次我寻找 IP 摄像机源捕获过滤器的搜索都在http://alax.info/blog/1216上的“DirectShow Video Source Filter for JPEG and M-JPEG IP Cameras”页面结束(附有相同的文件将其命名为“IP 视频源:64 位版本、分辨率灵活性、Adobe FMLE”页面,位于http://alax.info/blog/1223,这是我第一次找到它们的地方)。我下载并安装了 32 位IpVideoSource设备。我已经用这个 URL 配置了它(用户名和密码替换有效):

http://user:password@192.168.14.101:1026/axis-cgi/mjpg/video.cgi?resolution=640x360

这里

当我将该 URL 插入 Firefox、Chrome 和 Opera 时,它们都会毫无怨言地显示视频流。当我将它放入 Safari 时,我收到一条警告说它可能是一个钓鱼网站,因为它有用户名和密码,但是当我说 OK 时,Safari 会显示视频流。当我尝试使用 Internet Exploiter (11) 打开视频流时,它只是说

Internet Exploiter 窒息

我的一项搜索出现了http://alax.info/blog/741上的“MediaTools 将视频从网络/IP 摄像机和视频服务器传送到 DirectShow 环境”页面,其中有一个我尝试的“快速使用示例”跟随,但我无法在 GraphEdit 中完成过滤器图,因为它要求的“ JPEG 解码器过滤器”不可用:包含它的CodingI.dll不在我下载的任何一个包中。“快速使用示例”应生成一个图表,如http://alax.info/blog/1216上的插图所示

插图位于 alax.info/blog/wp-content/uploads/2011/05/Image0051-800x294.png

由于按照提供的说明无法获得结果,因此我尝试在 GraphEdit 中右键单击过滤器Office_cam实例化的输出引脚,从而生成了此图IpVideoSource

自动生成的 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过滤器,可能还有其他过滤器,但都无济于事。

我在安装了 DirectX SDK(2010 年 6 月)和 Windows 7 SDK 的 32 位和 64 位 Windows 7 上都遇到了这个问题,所以我怀疑我忽略了一些东西。

任何有用的建议将不胜感激。

4

1 回答 1

1

IpVideoSource.log 看起来相关(关键字是0x80190191),并表明问题是由相机响应发送的 HTTP 401 Unauthorized 错误引起的。也就是说,相机不接受凭据,而考虑到它是 Axis 相机,这又是由相机上的设置引起的,该设置需要安全的 HTTP 身份验证方法,例如digest

IpVideoSource.dll 当前实现了仅限于基本身份验证方法的 DirectShow 源过滤器 ( WINHTTP_AUTH_SCHEME_BASIC)。

对于故障排除,可以禁用相机上的身份验证以检查它是否有助于获取图片。作为一种解决方法,使用像 Axis 这样可能也支持 HTTPS 协议的摄像头(在 IpVideoSource.dll 开发时,很少有 IP 摄像头支持 HTTPS,而且还支持摘要式身份验证),可以将 HTTPS 与基本身份验证一起使用,因此线路上的纯文本密码受安全套接字层保护。

于 2017-01-30T20:14:57.730 回答