使用一个 gst-launch-1.0 (gstreamer) 命令接收和发送 udp 流

使用一个 gst-launch-1.0 (gstreamer) 命令接收和发送 udp 流

在 Ubuntu 18.04 笔记本电脑上,我可以使用以下 gst-launch-1.0 命令接收流:

流源(来自生成测试模式的测试brd):

$ gst-launch-1.0 -e videotestsrc ! video/x-raw, width=640, height=480, framerate =30/1 ! omxh264enc ! rtph264pay ! udpsink host=10.0.0.2 port=5500

上述 gst-launch 在 udp 端口​​ 5500 上发送一个测试模式

我在一台 Ubuntu 笔记本电脑上收到了上述流:

$ gst-launch-1.0 -e udpsrc port=5500 caps = "application/x-rtp, media=(string)video, clock-rate=(int)90000, encoding-name=(string)H264, payload=(int)96" ! rtph264depay ! decodebin ! videoconvert ! fpsdisplaysink sync=false

我能够使用单独的 gst-launch 命令从 ubuntu 笔记本电脑向 Android 设备发送不同的测试模式流:

发送到android设备的gst-launch流:

$ gst-launch-1.0 videotestsrc ! "video/x-raw,width=640,height=480" ! x264enc ! mpegtsmux name=mux ! udpsink host=10.100.46.40 port=5000

上述流在 Android 设备上正确显示。

然后我尝试连接两者,以便我可以在 ubuntu 笔记本电脑上接收主板的测试模式流,然后将该测试模式流传递给 Android 设备,所有操作都在同一个命令行中完成,如下所示:

$ gst-launch-1.0 -e udpsrc port=5500 caps = "application/x-rtp, media=(string)video, clock-rate=(int)90000, encoding-name=(string)H264, payload=(int)96" ! rtph264depay ! decodebin ! videoconvert ! udpsink host=10.100.46.40 port=5000O

由此我得到以下错误:

警告:来自元素/GstPipeline:pipeline0/GstUDPSink:udpsink0:尝试发送大于最大大小的 UDP 数据包(460800 > 65507)附加调试信息:gstmultiudpsink.c(722):gst_multiudpsink_send_messages():/GstPipeline:pipeline0/GstUDPSink:udpsink0:原因:发送消息错误:消息太长

Android 设备上什么也没有显示。有没有办法将两个命令合并为一个,这样 Ubuntu 笔记本电脑就基本上成为这个流中的中间人了?

谢谢...

答案1

我最初的答案是在有效载荷和接收器元素之间添加一个缓冲区。

像这样

$ gst-launch-1.0 -e videotestsrc ! video/x-raw, width=640, height=480, framerate =30/1 ! omxh264enc ! rtph264pay ! rndbuffersize min=50000 max=60000! udpsink host=10.0.0.2 port=5500

低于 65507 的任何值都可以。

相关内容