繁体   English   中英

如何同步多个应用程序

[英]How to synchronize multiple appsinks

我一直在学习gstreamer,试图编写一个应用程序,该应用程序需要多个视频文件并同步处理它们中的每个帧(特别是我需要比较那些帧,直到转到下一个帧)。 我建立了一个包含多个独立“分支”的管道:

filesrc ---> decodebin ---> videoconvert ---> appsink

filesrc ---> decodebin ---> videoconvert ---> appsink

...

filesrc ---> decodebin ---> videoconvert ---> appsink

我设法彼此独立地处理帧。 我的问题是:

如何同步每个应用接收器,以便可以将一个应用接收器中的帧与其他应用接收器中的帧进行比较?

我想到的就是在new-sample回调函数中查询其他appinks是否已将其缓冲区存储在某些共享内存中,然后这些回调之一可以在所有缓冲区上工作。 但是,这似乎是非常残酷和混乱的方法。 你能帮我找到一个更好的吗?

GStreamer中的所有接收器(继承自GstBaseSink)都具有属性“ sync”。 这意味着它将把缓冲区时间戳与时钟时间同步,直到缓冲区时间用完才给您缓冲区。 如果启用了此功能,则只需在缓冲区上使用GST_BUFFER_TIMESTAMP进行比较。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM