Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/378.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 限制gstreamer的发送速率';s udpsink_Java_Gstreamer_Java Gstreamer - Fatal编程技术网

Java 限制gstreamer的发送速率';s 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无法处理

如果我在发送数据时没有对数据进行多路分解,有没有办法限制gstreamer的udpsink

我有一个管道,需要将流发送到非多路复用

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