You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Gstreamer WebRTC Sendonly示例仅本地可用,公网IP无法正常运行求助

问题排查与解决步骤

1. 修正WebSocket服务绑定地址

Gstreamer WebRTC示例默认可能仅绑定127.0.0.1,导致公网IP无法接入。修改示例代码中WebSocket服务的监听地址为0.0.0.0,让服务接受任意IP的连接:

  • 定位代码中soup_server_listen_all或类似绑定逻辑的部分,将监听地址从127.0.0.1改为0.0.0.0。
  • 重启sendonly程序后重新测试公网IP访问。

2. 放行防火墙端口

Ubuntu默认ufw防火墙可能拦截了WebSocket和WebRTC相关端口:

  • 放行WebSocket服务端口(示例默认多为8443或8080,按实际配置调整):
    sudo ufw allow 8443/tcp
    
  • WebRTC媒体传输依赖UDP端口,按需放行端口范围:
    sudo ufw allow 50000-60000/udp
    
  • 执行sudo ufw reload生效规则后再次测试。

3. 替换SDP中的本地地址

本地访问时生成的SDP可能携带127.0.0.1,公网环境下需替换为公网IP:

  • 修改sendonly示例代码,在生成SDP offer阶段,将其中的127.0.0.1替换为服务器公网IP。
  • 确保浏览器端收到的SDP包含公网IP,才能正常建立媒体连接。

4. 排查WebSocket连接状态

公网访问前先检查浏览器端WebSocket连接是否正常:

  • 打开浏览器开发者工具(F12),查看Console和Network标签页,确认WebSocket连接是否成功建立。
  • 若连接失败,检查公网IP解析是否正常、服务器端WebSocket服务是否正常监听。

5. 配置WebRTC ICE服务器

默认ICE配置仅使用本地候选地址,无法穿透公网:

  • 在sendonly程序中添加STUN服务器配置,帮助获取公网ICE候选:
    GstWebRTCIceServer *ice_server = gst_webrtc_ice_server_new ("stun:stun.l.google.com:19302", NULL, NULL);
    gst_webrtc_peer_connection_add_ice_server (peer_connection, ice_server);
    g_object_unref (ice_server);
    
  • 配置完成后重启程序,测试公网环境下的媒体流传输。

内容的提问来源于stack exchange,提问作者Zinelaabidine NADIR

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 17:45:40