从 Open ONVIF(网络视频接口论坛)设备进行录制时出现问题

2022-08-31 11:25:14

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

我从ONVIF网站中提供的来源生成了源代码。我能够使用 检索实时流 URI。现在我有一个录音问题。我尝试过的代码如下:wsdlsmedia.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

答案 1

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

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


答案 2

您正在使用访问录制服务,但这是 media.wsdl 服务。因此,当您尝试在介质服务上调用 getRecordings 时,收到错误似乎很正常。http://" + deviceip + "/onvif/media_service

record.wsdl 服务的 url 应该是 。http://" + deviceip + "/onvif/recording_service

为了获取访问录制服务的 corect URL,您应该从 devicemgmt.wsdl 服务的 GetCapabilities 方法请求它。


推荐