Управление воспроизведением видео

Средства управления воспроизведением соответствуют стандартам 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.

Создайте прокси-сервер для службы RecordingSearch с помощью конечной точки службы, полученной от GetServices. Создайте объекты запроса и ответа, затем вызовите 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 команду начать воспроизведение с третьей секунды и до 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 могут поддерживать воспроизведение назад. Для указания о воспроизведении назад используется поле заголовка Scale с отрицательным значением. Например, для воспроизведения назад без потери данных будет использоваться значение -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, то скорость воспроизведения контролирует клиент. Как правило, воспроизведение с управлением скоростью используется отдельными клиентами, не относящимися к ONVIF, т. к. они не будут указывать Rate-Control=no.

Для управления скоростью воспроизведения на стороне клиента используйте имеющиеся контроллеры. Например, для универсального проигрывателя 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>

Позволяет выполнять воспроизведение одновременно от нескольких источников. Это экспериментальная функция, поддерживаются не все форматы. Введите список источников входных сигналов через символ #.

Получение записей из заданного временного диапазона

Можно запросить воспроизведение видео в определенный момент времени, используя необязательный параметр URL clock в ссылке RTSP.

Формат: 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- будет получен поток, который начинается в 14:00 UTC 30 августа 2025 года.

Буква Z обозначает часовой пояс UTC. Даже если опустить ее (не рекомендуется), будет считаться, что используется время UTC, если не указано иное. Чтобы задать часовой пояс, используйте один из поддерживаемых суффиксов: