【问题标题】:Onvif playback stream cannot seekOnvif 播放流无法寻找
【发布时间】:2018-02-28 08:53:56
【问题描述】:

我正在尝试使用 Onvif 从一些 Axis 和 Hikvision 摄像机获取播放视频流。 我在 C# 应用程序中执行此操作,结果流在 VLC 中播放。

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

所以我发现这对于回放应用程序是不可用的 - 您必须观看整个录音(几天或几小时的录音!)才能及时看到特定事件。而且一旦玩了,就不能倒退 1 分钟再看一遍。

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

我的问题是:这种播放流行为是“标准”行为,我对此不能期待更多吗?或者你们中的一些人可以正常工作(搜索、反向、逐帧步进),所以我会知道它可以完成。

谢谢。

【问题讨论】:

    标签: playback seek onvif


    【解决方案1】:

    可以反向播放,但并不容易。首先,使用负值的 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

    【讨论】:

      【解决方案2】:

      这不是上述问题的真正解决方案,但也许它会帮助其他人处理这种情况。

      我使用的一些摄像机连续录制同一个视频文件(因此时间范围未知),它们报告(通过 RTSP)可用的时间间隔,如下所示:

      范围:npt=0-

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

      【讨论】:

      • 这不是上述问题的真正解决方案,很抱歉,但它不属于这里。
      • 我同意,但请注意,最初的问题是基于 VLC 正确处理此类情况的假设(当相机未正确报告播放间隔时)。我不能说这是 VLC 的问题/错误,但无论如何,它使它无法在这种情况下播放播放流。所以我认为我描述为“解决方案”的方法是解决问题的合理解决方法,在我的情况下有效。
      • 那么请改写你的答案并添加这个解释。
      猜你喜欢
      • 2013-08-24
      • 1970-01-01
      • 2021-05-09
      • 2020-05-15
      • 2023-03-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-27
      相关资源
      最近更新 更多