Onvif播放流无法搜索

时间:2018-02-28 08:53:56

标签: playback seek onvif

我试图使用Onvif从一些Axis和海康威视相机获取播放视频流。 我在C#应用程序中执行此操作,结果流在VLC中播放。

使用FindRecordings / GetRecordingSearchResult调用然后使用GetReplayUri我可以获得播放流(RTSP / H264),但在这里我有这个问题:这个行为就像一个直播 - 我只能使用播放和暂停。我不能用时间光标寻找,不能反向播放。

因此我发现这对于播放应用程序无法使用 - 您必须观看整个录制(录制的几天或几小时!)才能及时查看特定事件。一旦你玩它,你就不能再回去看1分钟了。

这对我来说似乎很愚蠢,所以我相信我在代码中做错了。也许我错过了一些配置,以获得真正的'播放流。

我的问题是:这种播放流行为是'标准'一,我不能指望更多吗?或者你们中的一些人工作正常(寻找,反向,逐帧步进),所以我知道可以做到。

谢谢。

2 个答案:

答案 0 :(得分:0)

可以进行反向播放,但这并不容易。首先,使用带有负值的Scale标头字段启动反向重放。举个例子:

PLAY rtsp://192.168.0.1/path/to/recording RTSP/1.0 
Cseq: 123 
Session: 12345678
Require: onvif-replay 
Range: clock=20090615T114900.440Z-
Rate-Control: no 
Scale: -1.0

初始化流之后,您将以相反的顺序获得GOP,而不仅仅是反向帧。我不知道VLC是否支持这种操作方式。

请注意,只有具有ReversePlayback功能的设备才支持反向播放。

有关详细信息,请参阅streaming specification

答案 1 :(得分:0)

这不是解决上述问题的真正方法,但是也许可以帮助其他人解决这种情况。

与我合作的某些摄像机正在连续记录同一视频文件(因此时间范围未知),并且他们正在通过RTSP报告可用的时间间隔,如下所示:

range:npt = 0-

由于这个原因,VLC在时间滑块中没有显示任何时间间隔,因此没有 允许寻求。就我而言,这是使用VLC的要求,因此我必须找到解决该问题的方法。 这是一个充当代理的模块,位于VLC和RTSP源(摄像机)之间。因此,VLC和摄像机之间的所有RTSP流量都通过我控制的模块进行,因此我可以以VLC可以接受的方式轻松更改摄像机的响应,因此我在VLC中获得了寻道功能。