비디오 재생 관리

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

레코딩 요약

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

GetRecordingSummary 및/또는 GetMediaAttributes 명령을 사용해 첫 번째와 마지막 레코딩의 타임스탬프를 얻을 수 있지만, 먼저 Milestone Open Network Bridge 의 XProtect 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 요청을 전송합니다.

예:

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 Rate-Control 헤더에 의해 제어됩니다. Rate-Control=yes일 경우, 서버가 재생 속도를 제어합니다. 스트림은 표준 RTP 타이밍 메커니즘를 이용해 실시간으로 전달됩니다. Rate-Control=no일 경우, 클라이언트가 재생 속도를 제어합니다. 속도 제어된 재생은 일반적으로 Rate-Control=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"

여기서:

다음은 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>

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

특정 시간 범위에서 레코딩 검색

RTSP 링크의 선택적 URL 매개변수 clock을 사용하여 특정 시점에서 비디오 재생을 요청할 수 있습니다.

형식은 다음과 같습니다. rtsp://[hostname]:[port]/vod/[camera_guid]?clock=[start_time]-[end_time]Z.

[start_time] 및 [end_time] 속성은 일반적으로 yyyyMMddTHHmmssZ 형식(년, 월, 일, 고정 문자 T, 24시간, 분, 초 및 고정 문자 Z)을 따릅니다.

end_time 속성은 선택 사항입니다. 시작 시간만 요청하려면 다음 형식을 사용합니다. rtsp://[hostname]:[port]/vod/[camera_guid]?clock=[start_time]-. 예를 들어 rtsp://onbhost:554/vod/3bf3b583-768a-43c7-ae74-38df708c4dbf?clock=20250830T140000Z-는 2025년 8월 30일 14:00 UTC에 시작하는 스트림을 검색합니다.

고정 문자 Z는 UTC 시간대를 나타냅니다. 이를 생략하더라도(권장하지 않음) 달리 지정되지 않는 한 시간은 UTC로 간주됩니다. 시간대를 설정하려면 지원되는 접미사 중 하나를 사용합니다.