ONVIF 클라이언트를 이용하여 비디오 스트림 보기

ONVIF 클라이언트는 첨단 사용자 정의 감시 시스템부터 기본 미디어 플레이어까지 다양한 기능을 수행할 수 있습니다.

비디오에 영구 사생활 보호를 적용한 경우, ONVIF 클라이언트에서 비디오를 스트리밍할 수 없습니다.

이 섹션에서는 Milestone Open Network Bridge 에 연결하는 방법의 예를 설명합니다.

네트워크 비디오 클라이언트를 이용하여 라이브 스트림 보기

이 예는 ONVIF Device Manager 을(를) 설치하고 XProtect 설치로부터 라이브 비디오를 스트리밍하도록 이를 구성하는 방법에 대해 설명합니다.

ONVIF Device Manager 는 ONVIF 표준을 준수하는 iDeviceDesign의 무료 오픈 소스 네트워크 비디오 클라이언트입니다. 이 도구는 네트워크에 있는 ONVIF 호환 카메라를 쉽게 발견하고 비디오를 볼 수 있게 해줍니다. 하지만 ONVIF Device Manager 은(는) 라이브 비디오만 스트리밍할 수 있습니다. 또한, 스트림에서 비디오 데이터를 캡처하고 저장할 수 없습니다.

ONVIF Device Manager 은(는) FIPS 140-2 또는 H.265 코덱을 지원하지 않습니다.

시작하기 전에 다음 정보를 준비해야 합니다.

  • Milestone Open Network Bridge 에 대해 생성한 사용자의 로그인 자격 증명
  • Milestone Open Network Bridge 이(가) 설치된 컴퓨터의 IP 주소 또는 컴퓨터 이름

ONVIF Device Manager 을(를) 설치하려면 다음 단계를 따르십시오.

  1. Sourceforge ONVIF Device Manager 사이트로 이동(https://sourceforge.net/projects/onvifdm/)한 다음 설치 프로그램을 다운로드하여 실행합니다. 임의의 컴퓨터에 ONVIF Device Manager 을(를) 설치할 수 있습니다.
  2. 설치가 완료되면 바탕화면에 아이콘이 생깁니다. 아이콘을 두 번 클릭하여 ONVIF Device Manager 을(를) 시작합니다.
  3. ONVIF Device Manager 을(를) 시작하면 네트워크에 있는 ONVIF 호환 장치들이 자동으로 발견됩니다. 그러나 Milestone Open Network Bridge 은(는) 발견되지 않을 수도 있습니다.
    • 만약 그렇게 되면 6단계로 이동하십시오
    • 그렇지 않으면 브리지를 수동으로 추가합니다. 4단계를 계속 진행합니다
  4. Milestone Open Network Bridge 을(를) 추가하려면 추가 를 클릭합니다.
  5. 장치 추가 대화 상자의 URI 필드에 Milestone Open Network Bridge 이(가) 설치된 컴퓨터의 이름 또는 IP 주소, 그리고 ONVIF 포트 번호를 입력합니다. 예를 들어, 문자열은 다음과 같아야 합니다. http://[IP 주소]:580/onvif/device_service.
  6. 브리지를 추가하면 장치 목록 하단에서 이용할 수 있습니다. 이 브리지를 선택합니다.
  7. 목록 위에서 ONVIF 클라이언트에 대해 생성된 사용자의 로그인 자격 증명을 입력합니다. Windows 사용자인 경우, 도메인\사용자 이름을 입력해야 합니다.

미디어 플레이어를 이용하여 비디오 스트림 보기

이 예는 XProtect 설치의 카메라로부터 레코드된 비디오나 라이브 비디오 피드를 검색하고 보는 데 VLC 미디어 플레이어를 사용하는 방법을 설명합니다.

VLC 미디어 플레이어는 VideoLan에서 무료로 제공하는 오픈 소스 멀티미디어 플레이어로서 RTSP를 비롯해 다양한 스트리밍 프로토콜을 지원합니다. 예를 들어, 카메라에 매우 빠르게 연결하려는 경우나 단순히 카메라와의 연결을 테스트하려는 경우에 VLC 미디어 플레이어를 이용하면 유용합니다.

레코드된 비디오를 보기 위해 카메라에 연결하면 Milestone Open Network Bridge 이(가) 첫 번째 시퀀스부터 시작하여 비디오 시퀀스를 스트리밍합니다.

시작하기 전에 XProtect 설치를 관리하는 사람으로부터 다음 정보를 확인하십시오.

  • Milestone Open Network Bridge 에 할당된 사용자 계정의 로그인 자격 증명
  • Milestone Open Network Bridge 이(가) 설치된 컴퓨터의 IP 주소 또는 컴퓨터 이름

또한 사용 중인 스키마에 따라 다음 정보가 필요합니다.

  • rtsp://[rtsp_server]:554/live/[camera_id] 를 사용하는 경우

    비디오를 스트리밍할 장치의 GUID가 필요합니다.

    카메라 GUID는 Management Client 에서 사용할 수 있습니다. GUID를 찾으려면 카메라가 추가된 레코딩 서버를 선택한 다음 카메라를 선택합니다. 정보 탭을 클릭하고 키보드에서 CTRL을 누른 상태에서 카메라의 비디오 미리보기를 클릭합니다.

  • rtsp://[rtsp_server]:554/live/[camera_id]/[stream_number] 를 사용하는 경우

    스트림 번호가 필요합니다. 이 번호는 0~15 사이의 숫자입니다.

  • rtsp://[rtsp_server]:554/live/[camera_id]/[stream_id] 를 사용하는 경우

    스트림 ID가 필요합니다. 이는 XProtect 비디오 관리 소프트웨어에서 해당 스트림을 확인하는 GUID입니다.

    해당 스트림을 인식하는 현재 XProtect 비디오 관리 소프트웨어 멀티 스트리밍 구현 GUID는 다음과 같이 고정되어 있습니다.

    • 28dc44c3-079e-4c94-8ec9-60363451eb40 - 스트리밍0용

    • 28dc44c3-079e-4c94-8ec9-60363451eb41 - 스트림 1용

    • ...

    • 28dc44c3-079e-4c94-8ec9-60363451eb4f - 스트림 15용

여기서는 Windows용 VLC 2.2.4를 기준으로 설명합니다.

VLC 미디어 플레이어를 설치하고 XProtect 에 연결하려면 다음 단계를 따르십시오.

  1. https://www.videolan.org/vlc/ 으로 이동한 다음 VLC 미디어 플레이어에 대한 설치 프로그램을 다운로드합니다.
  2. 설치 프로그램을 실행하고 각 단계의 지침을 따릅니다.
  3. 도구 모음에서 Media (미디어) 를 클릭하고 Open Network Stream (네트워크 스트림 열기) 를 선택합니다.
  4. 미디어 열기 대화 상자에서 다음과 같은 RTSP 문자열을 입력합니다. 꺾쇠 괄호 안의 변수 [Milestone Open Network Bridge IP 주소] 및 [카메라 GUID]를 올바른 정보로 대체합니다.
    • 라이브 비디오 스트림을 보려면 rtsp://[Milestone Open Network Bridge IP Address]:554/live/[Camera GUID] 를 입력
    • 레코딩된 비디오를 보려면 rtsp://[Milestone Open Network Bridge IP Address]:554/vod/[Camera GUID]
  5. 재생 을 클릭하고 Milestone Open Network Bridge 에 추가된 사용자 계정의 사용자 이름과 암호를 입력합니다.

비디오 재생 관리

재생 제어는 RTSP 표준 및 ONVIF 스트리밍 규격을 준수합니다(https://www.onvif.org/profiles/specifications/).

레코딩 요약

GetRecordingSummary 명령을 이용해 장치에 이용 가능한 모든 레코딩된 비디오의 개요를 볼 수 있습니다. 필수는 아니지만 검색을 실행하기 전에 유용한 정보를 제공합니다.

GetRecordingSummary 및/또는 GetMediaAttributes 명령을 사용해 첫 번째와 마지막 레코딩의 타임스탬프를 얻을 수 있지만, 먼저 Milestone Open Network BridgeXProtect Management Client 플러그 인에서 카메라로부터 구성 사용 설정 을 활성화해야 합니다.

Use configuration from cameras check box in the Open Network Bridge Information pane.

GetServices에 의해 반환된 서비스 엔드포인트RecordingSearch를 이용해 서비스에 대한 프록시를 생성합니다. 요청과 응답 개체를 생성하고 GetRecordingSummary를 호출합니다.

SearchBindingProxy searchProxy( &soapSearch );

std::string searchEndpoint = "http://" + host + "/onvif/recording_search_service";

_tse__GetRecordingSummary tse__GetRecordingSummary;

_tse__GetRecordingSummaryResponse tse__GetRecordingSummaryResponse;

result = searchProxy.GetRecordingSummary( searchEndpoint.c_str(), NULL,

   &tse__GetRecordingSummary, &tse__GetRecordingSummaryResponse );

레코딩 검색

검색 서비스 메소드 FindRecordings 는 카메라에서 비동기 검색을 시작합니다. FindRecordings 는 검색 결과를 참조하는 토큰을 반환합니다. 하나의 레코딩만 있더라도 검색은 해당 레코딩에 대한 참조를 획득하기에 적절한 방법입니다.

다음 필수 매개변수를 이용해 FindRecordings 요청을 전송합니다.

  • SearchScope > IncludedSources > Token – 이 카메라 GUID 토큰을 제공해야 합니다
  • SearchScope > RecordingInformationFilter – 다음 매개변수를 가진 문자열:
    • timestamp(UTC 형식)
    • maxTimeBefore(요청된 타임스탬프 이전의 시간: 밀리초)
    • maxCountBefore(요청된 타임스탬프 이전의 최대 트랙 수)
    • maxTimeAfter(요청된 타임스탬프 이후 시간: 밀리초)
    • maxCountAfter(요청된 타임스탬프 이후 최대 트랙 수)

예:

boolean(//Track[TrackType = “Video”]),2016-12-06T08:07:43Z,99999999,20,99999999,20

검색 조건에 고유한 SearchToken을 가진 응답을 얻게 됩니다.

SearchToken GetRecordingSearchResults 로 전달하면 검색 조건에 해당하는 모든 트랙이 포함된 목록을 얻게 됩니다.

재생 개시

비디오 재생을 볼 때, 기본 속도는 1(앞으로 진행되는 보통 재생)입니다.

재생은 RTSP PLAY 메서드를 이용해 개시됩니다. 범위를 지정할 수 있습니다. 범위가 지정되지 않은 경우, 스트림은 처음부터 재생되어 끝까지 재생하며, 스트림이 일시 정지될 경우, 일시 정지된 지점에서 재시작됩니다. 이 예에서, “Range: npt=3-20”은 RTSP 서버가 3번째 초부터 시작하여 20번째 초까지 재생하도록 지시합니다.

예:

PLAY rtsp://user:1234@test01:554/vod/943ffaad-42be-4584-bc2c-c8238ed96373 RTSP/1.0

CSeq: 123

Session: 12345678

Require: onvif-replay

Range: npt=3-20

Rate-Control: no

뒤로 재생

ONVIF 장치는 뒤로 재생을 지원할 수 있습니다. 뒤로 재생은 음의 값을 가진 스케일 헤더 필드를 이용해 나타냅니다. 예를 들어, 데이터 손실 없이 뒤로 재생하려면 –1.0의 값이 사용됩니다.

Milestone Open Network Bridge 는 값 [-32 : 32]를 지원합니다.

PLAY rtsp://user:1234@test01:554/vod/943ffaad-42be-4584-bc2c-c8238ed96373 RTSP/1.0

CSeq: 123

Session: 12345678

Require: onvif-replay

Range: clock=20090615T114900.440Z

Rate-Control: no

Scale: -1.0

속도 변경

속도는 RTSP 속도 제어 헤더에 의해 제어됩니다. "속도 제어=yes"일 경우, 서버가 재생 속도의 제어 상태에 있습니다. 스트림은 표준 RTP 타이밍 메커니즘를 이용해 실시간으로 전달됩니다. "속도 제어=no"일 경우, 클라이언트가 재생 속도의 제어 상태에 있습니다. 속도 제어된 재생은 일반적으로 “속도 제어=no”를 지정하지 않는 비-ONVIF 특정 클라이언트에 의해서만 사용됩니다.

클라이언트에서 재생 속도를 제어하려면 제공된 컨트롤러를 사용하십시오. 예를 들어, VLC 미디어 플레이어를 이용하면, 재생 > 속도 > 빠르게 또는 느리게 를 선택합니다. 이렇게 하면 속도를 0.5씩 증가 또는 감소시킵니다.

빠르게 미세 조정느리게 미세 조정 은 0.25씩 속도를 변경합니다.

명령줄 입력으로 VLC 미디어 플레이어 재생 관리

명령줄을 이용해 VLC 미디어 플레이어에서 비디오 재생을 관리할 수 있습니다. 자세한 내용은 VLC 명령줄 도움말(https://wiki.videolan.org/VLC_command-line_help/)을 참조하십시오.

그런 명령을 이용해 예컨대 뒤로 재생하거나 재생 시작 시간을 변경할 수 있습니다.

일반적인 명령줄의 예:

>vlc.exe --rate=-1.0 --start-time=3600 "rtsp://user:1234@test01:554/vod/943ffaad-42be-4584-bc2c-c8238ed96373"

여기서:

  • rate는 스케일 및 속도 매개변수입니다
  • start-time은 데이터베이스 시작 후 초입니다

다음은 VLC 미디어 플레이어에 대한 재생 제어입니다.

코드

코드로 무엇을 할 수 있습니까?

input-repeat=

<integer [-2147483648 .. 2147483647]>

입력 반복

동일한 입력이 반복되는 횟수

start-time=

<float>

시작 시간

스트림은 이 위치(초)에서 시작됩니다

stop-time=

<float>

정지 시간

스트림은 이 위치(초)에서 중지됩니다

run-time=

<float>

실행 시간

스트림이 이 기간(초) 동안 실행됩니다

input-fast-seek

no-input-fast-seek

빠른 찾기(기본 비활성화)

찾는 동안 정밀도보다 속도 우선

rate=

<float>

재생 속도

재생 속도를 정의합니다(명목 속도는 1.0)

input-list=

<string>

입력 목록

일반적인 입력 뒤에 함께 연결될 쉼표 구분 입력 목록을 제공할 수 있습니다.

input-slave=

<string>

입력 슬레이브(실험적)

여러 입력으로부터 동시에 재생할 수 있습니다. 이 기능은 실험적이며 모든 형식이 지원되지는 않습니다. '#' 분리된 입력 목록 사용