GSTREAMER 在活动前访问视频
GSTREAMER access video before an event
我有一个软件,可以在事件(警报)发生时立即执行一些视频分析。
由于我的内嵌板子space不够用,所以只有报警时才开始录像;
该算法适用于离线存储的视频(它不是实时算法,因此应该存储视频,附加到视频流是不够的)。
目前,我能够附加到视频并在检测到警报情况后立即存储它。
但是我想在事件发生前 10 秒分析数据。
是否可以预录长达 10 秒的 FIFO 队列,而不将整个流存储在磁盘上?
我在这里找到了与我的要求类似的内容:
但我想知道是否有某种方法可以在不使用 ridgerun 工具的情况下获得相同的结果。
最好的祝福
乔瓦尼
我想我把我的想法搞混了,他们两个似乎很相似。
我的建议如下:
拥有一个行为类似于环形缓冲区的元素,通过它您可以及时倒流。 element queue
是一个很好的尝试示例。看看 time-shift buffering。
然后将内容存储到报警文件中,并使用从中读取的另一个管道。例如。使用 tee
或 output-selector
.
| -> ring-buffer
src -> output-selector -> |
|-> (on alarm) -> ringbuffer + live-src -> file-sink
根据你的问题,我了解到你的 src
可能是一个实时摄像头,因此这样做可能很棘手。可能您可能必须像 RidgeRun 团队那样实施您自己的插件,否则此解决方案更像是一种 hack 而不是有意义的解决方案。遗憾的是,这种解决方案的参考文献不多,您可能需要尝试一下。
我有一个软件,可以在事件(警报)发生时立即执行一些视频分析。
由于我的内嵌板子space不够用,所以只有报警时才开始录像; 该算法适用于离线存储的视频(它不是实时算法,因此应该存储视频,附加到视频流是不够的)。
目前,我能够附加到视频并在检测到警报情况后立即存储它。 但是我想在事件发生前 10 秒分析数据。 是否可以预录长达 10 秒的 FIFO 队列,而不将整个流存储在磁盘上?
我在这里找到了与我的要求类似的内容:
但我想知道是否有某种方法可以在不使用 ridgerun 工具的情况下获得相同的结果。 最好的祝福 乔瓦尼
我想我把我的想法搞混了,他们两个似乎很相似。 我的建议如下:
拥有一个行为类似于环形缓冲区的元素,通过它您可以及时倒流。 element
queue
是一个很好的尝试示例。看看 time-shift buffering。然后将内容存储到报警文件中,并使用从中读取的另一个管道。例如。使用
tee
或output-selector
.| -> ring-buffer src -> output-selector -> | |-> (on alarm) -> ringbuffer + live-src -> file-sink
根据你的问题,我了解到你的 src
可能是一个实时摄像头,因此这样做可能很棘手。可能您可能必须像 RidgeRun 团队那样实施您自己的插件,否则此解决方案更像是一种 hack 而不是有意义的解决方案。遗憾的是,这种解决方案的参考文献不多,您可能需要尝试一下。