我使用gstreamer java通过自定义AppSink通过UDP发送数据。以下是如何有效设置:
fileSrc ! streamTee ! displayQueue ! tsdemux ! demuxQueue ! (mpeg2dec || h264dec) ! videosink
和
streamTee ! sendQueue ! udpSink
我想以模拟实时流的方式发送数据。我假设唯一的方法是通过videoSink同步发送和播放。也就是说,以1.0倍的播放速度发送。
然而,设置udpSink的sync
属性似乎不会改变任何内容。由于sendQueue,我已经验证了数据包是否能尽快发送出去。
我需要在其他元素之间添加streamTee吗?有什么明显的东西我遗漏了吗?
将streamTee移动到displayQueue之后似乎解决了这个问题。sync属性似乎没有任何作用。
UDP数据包似乎比videoSink显示的视频提前一点发送,但在任何长度的视频结束时,它始终领先.5-1.0秒。所以它看起来已经足够同步了。