从Open ONVIF(网络视频接口论坛)设备录制的问题


90

我正在研究开放网络视频接口论坛Java项目,并按照《ONVIF应用程序程序员指南》中所述的步骤进行操作。

我已经从wsdlsONVIF网站中提供的来源生成了信息。我可以使用检索实时流URI media.wsdl。现在,我在录制方面遇到了问题。我尝试过的代码如下:

RecordingService recording_ervice = new RecordingService();
RecordingPort record_port = recording_ervice.getRecordingPort();


BindingProvider bindingProvider = (BindingProvider) record_port;

// Add a security handler for the credentials
final Binding binding = bindingProvider.getBinding();
List<Handler> handlerList = binding.getHandlerChain();
if (handlerList == null) {
    handlerList = new ArrayList<Handler>();
}

handlerList.add(new RecordStream.SecurityHandler());
// binding.setHandlerChain(handlerList);

// Set the actual web services address instead of the mock service
Map<String, Object> requestContext = bindingProvider.getRequestContext();

requestContext.put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, "http://" + deviceip + "/onvif/media_service");
requestContext.put(BindingProvider.USERNAME_PROPERTY, user);
requestContext.put(BindingProvider.PASSWORD_PROPERTY, pass);

Recordings recordings = record_port.getRecordings();

上面的代码在运行时给出错误为:

Exception in thread "main" javax.xml.ws.soap.SOAPFaultException: Method 'ns11:GetServiceCapabilities' not implemented: method name or namespace not recognized

我也尝试了媒体服务,那么错误是:

Exception in thread "main" com.sun.xml.internal.ws.client.ClientTransportException: The server sent HTTP status code 405: Method Not Allowed

5
请注意,“录制”是ONVIF录制器使用的服务:大多数IP摄像机不支持它。我认为您应该在设备功能中进行检查,因为它是一项可选服务(取决于支持的配置文件):onvif.org/ver10/device/wsdl/GetCapabilities。另一个注意事项:在最后一行中,您将getRecordings()分配给“功能” ...查看onvif.org/onvif/ver10/recording.wsdl-我会说这是GetServiceCapabilities()的输出类型。只需仔细检查即可。
Sigismondo 2014年

1
应该检查Web服务器的安全策略,因为方法似乎已存在于代码中,但客户端不允许或无法访问。
Ved 2014年

同意Ved ...实施此WSDL的人员尚未实现某些功能,或者名称空间指向不包含该功能的WSDL声明。就个人而言,我对WSDL的ONVIF选择感到有些吃惊。

Answers:


2

当您尝试使用媒体源时,由于服务器返回了错误代码405,因此您显然请求了未经授权的操作。或者该方法被禁止使用,或者您需要使用该方法的凭据。

至于Exception in thread "main" javax.xml.ws.soap.SOAPFaultException: Method 'ns11:GetServiceCapabilities' not implemented: method name or namespace not recognized,@ Sigismondo是正确的,因为大多数IP摄像机不支持它。您将需要另一种记录方法(文字和双关语)从ip摄像机记录。


1

您正在http://" + deviceip + "/onvif/media_service用来访问“记录”服务,但这是一个media.wsdl服务。因此,当您尝试在媒体服务上调用getRecordings时,看起来很正常,您会收到错误消息。

对于URL recording.wsdl服务应该是http://" + deviceip + "/onvif/recording_service

为了使corect URL到达录制服务,您应该从devicemgmt.wsdl服务的GetCapabilities方法中请求它。


0

HTTP 405-不允许的资源通常出现在IIS中。如果满足以下条件,则会发生此问题:

  • 您未指定文件名。例如对于您不指定http:// Server / Web / ...

  • 脚本对象模型(SOM)已启用。

  • 调用DTC事件。

因此,启用SOM后,在页面中插入<form>标记时,标记无效,表示它不包含任何操作。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.