如何在 Windows 上使用 gstreamer 将 udp 视频流发送到端口?
我想将测试视频发送到特定端口,但当我使用wireshark检查网络时没有任何输出。这是我尝试过的 gstreamer 管道。
gst-launch-1.0 -v videotestsrc ! x264enc ! rtph264depay ! upsink port=3445
这是命令提示符终端中的输出。
Setting pipeline to PAUSED ...
Pipeline is PREROLLING...
Redistribute latency ...
Pipeline is PREROLLED ...
Setting pipeline to PLAYING ...
New Clock: GstSystemClock
Wireshark 在网络上没有显示任何输出。
您需要使用
rtph264pay
元素代替 rtph264depay
进行负载,并且需要为 udpsink
定义目标 IP 地址。为 x264enc
添加大写字母也是个好主意,表明它将输出 byte-stream
。
我推荐的示例管道如下。请随意将
127.0.0.1
替换为您的目标。
gst-launch-1.0 -v videotestsrc ! x264enc ! video/x-h264, stream-format=byte-stream ! h264parse ! rtph264depay ! udpsink port=3445 host=127.0.0.1
关于
h264parse
的一句话,在旧版本的gstreamer中你需要这个元素,在新版本中你不需要使用这个元素。
在介绍高级元素之前,让我们从简单的一致性检查开始,如下所示(Ubuntu 18.04 LTS):
发送udp流:
gst-launch-1.0 videotestsrc ! x264enc ! rtph264pay ! udpsink port=3445 host=ip_address
接收udp流(接收需要几秒才能显示):
gst-launch-1.0 udpsrc port=3445 ! application/x-rtp ! rtph264depay ! avdec_h264 ! videoconvert ! autovideosink
如果没有任何显示,请尝试删除 vaapi:
sudo apt-get remove gstreamer1.0-vaapi
让我们知道它是否有效(拇指向上)或不起作用(拇指向下)!