GStreamer将视频流式传输到公共IP地址

时间:2017-09-18 14:25:47

标签: linux gstreamer

这是我的GStreamer流媒体管道:

gst-launch-1.0 v4l2src ! video/x-raw,width=640,height=480 ! \
    x264enc tune=zerolatency byte-stream=true \
    bitrate=3000 threads=2 ! \
    h264parse config-interval=1 ! \
    rtph264pay ! udpsink host=xxx.xxx.xxx.xxx port=5600

以及相关的GStreamer接收管道:

gst-launch-1.0 udpsrc port=5600 ! \
    application/x-rtp,\
    encoding-name=H264,payload=96 ! \
    rtph264depay ! h264parse ! avdec_h264 ! \
    autovideosink

我的问题是当我输入我的公共IP地址而不是xxx.xxx.xxx.xxx时。我无法收到我的视频。但是,当我使用本地IP视频时,它正在接收。 有谁知道问题出在哪里。我在同一台PC上打开两个管道,也许这就是问题?

3 个答案:

答案 0 :(得分:0)

首先,您应该使用Wireshark等工具监控流量。 如果在Linux上,你可以看一下loopback(lo)接口。

此外,您可以在System.getenv("GCE_ENV") 设置address属性:

udpsrc

答案 1 :(得分:0)

我正在与tcpclientsink发送和tcpserversrc接收。原来在tcpserversrc中,我必须使用本地IP地址,但在tcpclientsink中,我可以使用外部IP,因此可以通过Internet从另一台计算机发送。我的接收器位于Google Compute Engine实例上。 Dunno,如果这是特定于此的,或者通常适用于gstreamer。

答案 2 :(得分:0)

我首先要检查的是路由器设置。确保正确配置防火墙规则以允许外部源建立连接到网络内部。默认情况下,大多数家用路由器都配置为阻止外部源与网络内部的任何内容建立连接。查看 NAT、端口转发和 DMZ 选项,通过端口转发规则将网络内部的特定设备暴露给外部,并确保针对该设备上的端口 5600 放宽防火墙规则。

请注意,在路由器/防火墙中打开端口和创建允许规则会使您暴露在外部威胁面前。确保您知道自己在做什么。

相关问题