簡體   English   中英

GStreamer 將視頻流式傳輸到公共 IP 地址

[英]GStreamer streaming video to public IP address

這是我的 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 上打開兩條管道,也許這就是問題所在?

首先,您應該使用 Wireshark 之類的工具監控流量。 如果在Linux上,可以查看loopback(lo)接口。

此外,您可以在udpsrc上設置一個address屬性:

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

我正在使用tcpclientsink發送和tcpserversrc接收。 原來在 tcpserversrc 中,我必須使用本地 IP 地址,但在 tcpclientsink 中我可以使用外部 IP,因此可以通過 Internet 從另一台計算機發送。 我的接收器在 Google Compute Engine 實例上。 不知道這是否特定於此,或者一般適用於 gstreamer。

我要檢查的第一件事是路由器設置。 確保正確配置防火牆規則以允許外部源建立連接到網絡內部。 默認情況下,大多數家用路由器都配置為阻止外部源與網絡內部的任何內容建立連接。 查看 NAT、端口轉發和 DMZ 選項,通過端口轉發規則將網絡內部的特定設備暴露給外部,並確保針對該設備上的端口 5600 放寬防火牆規則。

請注意,在路由器/防火牆中打開端口和創建允許規則會使您暴露於外部威脅。 確保你知道你在做什么。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM