所以我的应用程序正在使用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
时才需要此管道。