OpenCv + Gstreamer来自一个应用程序,获得最初的30秒延迟



所以我的应用程序正在使用new VideoWriter(pipeline-definition);公开RTP流

管道定义为:

appsrc is-live=1 do-timestamp=1 format=3 stream-type=0 min-latency=0 max-latency=500000000 ! queue leaky=2 max-size-time=500000000 ! videoconvert ! video/x-raw ! x264enc ! h264parse ! rtph264pay config-interval=10 pt=96 ! udpsink host=127.0.0.1 port=9000

我面临的问题是在 VLC 中查看流时流延迟 30 秒。无论我做什么,VLC 总是落后 29-30 秒。似乎appsrc导致了这种情况,因为与videotestsrc相同的管道根本没有延迟。

任何想法我应该怎么做才能让appsrc立即将帧释放到流中?

似乎VideoWriter有一个内部缓冲区,可以缓存 30 多个素材。就我而言,我将单例保留在内存中,并依靠它足够快地刷新到管道。实际上,我最终不得不通过释放数据来强制VideoWriter刷新数据。

我不建议将其作为问题的解决方案,但就我而言,它有效,因为只有在定义DEBUG时才需要此管道。

相关内容

  • 没有找到相关文章

最新更新