Udp 如何在没有RTP的情况下使用Gstreamer创建视频流?

Udp 如何在没有RTP的情况下使用Gstreamer创建视频流?,udp,video-streaming,gstreamer,Udp,Video Streaming,Gstreamer,我正在尝试使用Gstreamer1.0创建一个简单的UDP视频流。 问题是,为了我的项目,我需要能够有一个普通的UDP流,但我能找到的几乎所有教程都启用了RTP。 所以我想翻译这个简单的流: 玩家: gst-launch-1.0 udpsrc port=5000 ! application/x-rtp, encoding-name=H264,payload=96 ! rtph264depay ! h264parse ! avdec_h264 ! autovideosink 服务器: gs

我正在尝试使用Gstreamer1.0创建一个简单的UDP视频流。 问题是,为了我的项目,我需要能够有一个普通的UDP流,但我能找到的几乎所有教程都启用了RTP。 所以我想翻译这个简单的流:

玩家:

gst-launch-1.0 udpsrc port=5000 !  application/x-rtp, encoding-name=H264,payload=96 !  rtph264depay ! h264parse ! avdec_h264 !  autovideosink
服务器:

gst-launch-1.0 v4l2src !  video/x-raw,width=640,height=480 !  x264enc ! h264parse ! rtph264pay !  udpsink host=127.0.0.1 port=5000

有人能告诉我如何仅用UDP翻译这个简单示例的正确方向吗?

在发送方方面,您上面提到的管道我看不到任何使用
rtp
。理想情况下,
rtpjpegpay
应该在发送方使用,然后使用
rtpjpegdepay
在接收方解除支付。 您是否尝试过相同的管道,没有UDP。它会抱怨
udpsink
处的数据包大小大于缓冲区。您需要
rtpxpay
将视频流分割成rtp数据包


如果不需要rtp,请尝试直接发送流,但在
udpsink
处限制缓冲区大小。这还可能导致渲染视频延迟增加、某些数据包丢失等。请尝试在
udpsink
上使用不同的缓冲区大小/数据包大小值进行实验。不幸的是,
udpsink
不能直接控制这些大小的配置。因此,您可能需要找到其他方法。

谢谢您的帮助!我把我的帖子编辑成了正确的脚本!我还想问一下,为什么会延迟视频渲染?我正在尝试通过vanilla
UDP
数据包创建一个流,这样流的延迟会更小,因为gstreamer不需要订购数据包,但当然是为了质量,不是吗?我不知道vanilla UDP流是如何工作的,但是如果您能够在一个UDP数据包中正确发送每个视频帧,如果订单得以维持,那么您可能会看到可接受的延迟。您至少不能保证正常UDP中的数据包接收顺序,这就是RTP方便的地方,因为它引入了UDP数据包的排序,然后可以在接收端使用这些数据包来重新排序。