Skip to main content

Milestone Open Network Bridge

管理视频播放

Last Updated: 6 minute read
版本2026r1
语言中文(简体)

播放控件符合 RTSP 标准和 ONVIF 流式传输规范(https://www.onvif.org/profiles/specifications/)。

记录摘要

您可以使用该GetRecordingSummary命令获取设备上所有可用录制视频的概览。这不是必需的,但在进行搜索之前它可提供有用的信息。

您可以使用 GetRecordingSummary 和/或 GetMediaAttributes 来获取第一个和最后一个记录的时间戳,但是您必须先从 Milestone Open Network Bridge 中 XProtect Management Client 插件上启用使用来自摄像机的配置设置。

使用“Open Network Bridge信息”窗格中的“来自摄像机的配置”复选框。

使用服务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请求:

  • SearchScope > IncludedSources > Token - 您必须提供摄像机的 GUID 令牌

  • 您将得到一个SearchToken响应,这个搜索条件是唯一的。

    SearchScope > RecordingInformationFilter - 具有以下参数的字符串:

    • timestamp(采用 UTC 格式)

    • maxTimeBefore(请求的时间戳之前的时间,以毫秒为单位)

    • maxCountBefore(请求的时间戳之前的最大曲目数)

    • maxTimeAfter(请求的时间戳之后的时间,以毫秒为单位)

    • maxCountAfter(请求的时间戳之后的最大曲目数)

例如:

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

将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

更改速度

速度由RTSPRate-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 媒体播放器的播放控件:

代码

作用

值

使用率

输入-重复=

输入重复

<整数[-2147483648 .. 2147483647]>

相同输入的重复次数。

开始-时间=

启动时间

<浮动>

流将在这个位置开始(以秒为单位)。

停止-时间=

停止时间

<浮动>

流将在这个位置停止(以秒为单位)。

运行-时间=

运行时间

<浮动>

流将运行此时长(以秒为单位)。

输入-快速-寻找

无-输入-快速-寻找

快速寻找(默认禁用)

在寻找时,优选速度而不是精度。

速率=

播放速度

<浮动>

此设置定义播放速度(标称速度为 1.0)。

输入-列表=

输入列表

<字符串>

您可以提供以逗号分隔的输入的列表,它们将在普通列表之后串联在一起。

输入-从属=

输入从属(实验)

<字符串>

这可以让您同时播放多个输入。这个功能是实验性的,并不是所有格式都支持。使用“#”分隔的输入的列表。

从特定的时间范围检索记录

您可以在 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日将检索从UTC时间14:00开始的流。

固定字母Z表示UTC时区。即使省略它(不推荐),时间仍然被认为是UTC时间,除非另有指定。要设置时区,请使用下面其中一种支持的后缀:

  • 固定字母p或+后接字符hhmm表示正的UTC偏移。例如,20250830T140000p0100表示UTC+01:00(中欧时间)。

  • 固定字母m后接hhmm表示负的UTC偏移。例如,20250830T140000m0800表示UTC-08:00(太平洋时间)。