Open ONVIF (Network Video Interface Forum) 기기에서 녹화 문제


90

저는 Open Network Video Interface Forum-Java 프로젝트에서 작업하고 있으며 ONVIF Application Programmer 's Guide에 설명 된 단계를 따릅니다 .

wsdlsONVIF 사이트에 제공된 소스를 생성했습니다 . .NET Framework를 사용하여 라이브 스트림 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 . 참고 : 마지막 줄에서 "capabilities"에 getRecordings ()를 할당하고 있습니다. onvif.org/onvif/ver10/recording.wsdl을 보면 이것이 GetServiceCapabilities ()의 출력 유형이라고 말할 수 있습니다. 두 번 확인하십시오.
Sigi

1
웹 서버의 보안 정책을 검토해야합니다. 방법은 코드에 존재하지만 클라이언트가 허용하거나 접근 할 수없는 것 같습니다.
Ved

Ved와 동의 ...이 WSDL을 구현하는 사람은 특정 기능을 구현하지 않았거나 네임 스페이스가 함수를 포함하지 않는 WSDL 선언을 가리키고 있습니다. 개인적으로 저는이 ONVIF의 WSDL 선택에 약간 당황했습니다.

답변:


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를 호출하려고하면 오류가 발생하는 것이 정상으로 보입니다.

recording.wsdl 서비스 의 URL은 http://" + deviceip + "/onvif/recording_service.

녹화 서비스에 도달하기위한 corect URL을 얻으려면 devicemgmt.wsdl 서비스 의 GetCapabilities 메소드에서 요청해야 합니다.


0

HTTP 405-허용되지 않는 리소스는 일반적으로 IIS에서 발생합니다. 이 문제는 다음 조건에 해당하는 경우 발생합니다.

  • 파일 이름을 지정하지 않았습니다. 예를 들어 http : // Server / Web / ...을 지정하지 않습니다.

  • SOM (Scripting Object Model)이 활성화됩니다.

  • DTC 이벤트가 호출됩니다.

따라서 SOM이 활성화 된 경우 <form> 태그가 페이지에 삽입되면 태그가 유효하지 않음은 작업이 포함되지 않음을 의미합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.