我正在尝试从Axis P5515 IP摄像机获取视频,以输入DirectShow,但在渲染窗口中我得到的只是一个黑色屏幕。
几乎我搜索的每一个IP相机源捕获过滤器都结束在http://alax.info/blog/1216的“http://alax.info/blog/1216视频源过滤器和M相机”页面(该页面与"IP视频源:64位版本,分辨率灵活性,Adobe“页面上的”IP视频源:64位版本,分辨率灵活性,Adobe“页面相同)。我下载并安装了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会显示视频流。当我尝试用互联网开发者打开视频流(11)时,它说

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

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

当我试图运行图形时,会打开一个活动的电影窗口,但它是黑色的。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上都有这个问题,所以我怀疑我忽略了一些东西。
如有任何有用的建议,将不胜感激。
发布于 2017-01-30 20:14:57
IpVideoSource.log看起来是相关的(关键字是0x80190191),并认为问题是由相机发送的未经授权的HTTP401错误引起的。也就是说,相机不接受凭据,考虑到它是Axis相机,这是由于在相机上设置需要安全的HTTP身份验证方法(如消化 )而造成的。
IpVideoSource.dll目前实现了DirectShow源代码过滤器,该过滤器仅限于基本身份验证方法(WINHTTP_AUTH_SCHEME_BASIC)。
要排除故障,可以禁用相机上的身份验证,以检查是否有助于获取图片。作为一种解决办法,使用类似Axis这样的摄像机,它可能也支持HTTPS协议(在IpVideoSource.dll开发时,罕见的IP摄像机支持HTTPS,也支持摘要身份验证),可以使用HTTPS与基本身份验证一起使用HTTPS,以便通过安全套接字层保护线路上的纯文本密码。
https://stackoverflow.com/questions/41943679
复制相似问题