如何在没有 RTP 的情况下使用 Gstreamer 创建视频流?
How to create a video stream with Gstreamer without RTP?
我正在尝试使用 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
上尝试使用不同的缓冲区 sizes/packet 大小值。不幸的是 udpsink
不提供对配置这些尺寸的直接控制。所以你可能得想办法了。
我正在尝试使用 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
上尝试使用不同的缓冲区 sizes/packet 大小值。不幸的是 udpsink
不提供对配置这些尺寸的直接控制。所以你可能得想办法了。