Java 限制gstreamer的发送速率';s udpsink
如果我在发送数据时没有对数据进行多路分解,有没有办法限制gstreamer的udpsink 我有一个管道,需要将流发送到非多路复用Java 限制gstreamer的发送速率';s udpsink,java,gstreamer,java-gstreamer,Java,Gstreamer,Java Gstreamer,如果我在发送数据时没有对数据进行多路分解,有没有办法限制gstreamer的udpsink 我有一个管道,需要将流发送到非多路复用 filesrc!发球台名称=t!tsdemux!ffdec_h264!视频接收器t。udpsink 主要关注点是:filesrc!udpsink 我看不到任何方法可以通过filesrc、queue或udpsink选项来限制它。使用sync不起作用,因为我假设没有可同步的媒体流。因此,使用该管道的结果是数据尽可能快地通过udpsink传输,而接收udpsrc无法处理
filesrc!发球台名称=t!tsdemux!ffdec_h264!视频接收器t。udpsink
主要关注点是:filesrc!udpsink
我看不到任何方法可以通过filesrc、queue或udpsink选项来限制它。使用sync
不起作用,因为我假设没有可同步的媒体流。因此,使用该管道的结果是数据尽可能快地通过udpsink传输,而接收udpsrc无法处理
我们已经尝试使用appsrc作为基本元素编写自己的udpsink,使用此数据包限制方案(在数据包发送方法中有一个thread.sleep(throttleDelay);
):
但无论速度设置为多少,这似乎都不起作用。太慢,一帧通过。太快了,一两个人通过了。在“正确”的速度(500 kB/s)下,帧以0.5-2 FPS的速度进入,但它严重损坏
在代码中,这是正确的方法吗?gstreamer有没有办法限制吞吐量?您可能想做的是使用RTP作为传输协议。通过使用提供的rtph264pay,您可以设置MTU大小,例如:
filesrc ! tsdemux ! tee name=t ! ffdec_h264 ! videosink t. rtph264pay mtu=1300 ! udpsink
应该注意这一点。问题不在于您不能跨非多路复用(如问题中所述)发送文件吗?我还试图通过UDP获得一个文件(MKV),但未能成功。不过,我已经能够使用RTP获得单个视频流,这与您所描述的类似。
filesrc ! tsdemux ! tee name=t ! ffdec_h264 ! videosink t. rtph264pay mtu=1300 ! udpsink