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

如何通过OpenVPN远程访问局域网内的UDP组播音视频流?

解决方案:OpenVPN远程访问树莓派组播音视频流

问题根源

OpenVPN默认不转发组播流量,因为组播依赖IGMP协议,而VPN隧道默认未启用IGMP snooping或组播路由规则,导致远程客户端无法接收组播包。


最优需求:远程访问音视频合并流

方案1:原树莓派直接转为单播RTSP流(最简便)

修改原有GStreamer管线,将音视频合并后推送为RTSP单播流,替代原组播输出:

MULTICAST_IP_ADDR=224.1.1.1
RTSP_PORT=8554
RTSP_MOUNT=/pi_cam

gst-launch-1.0 -v rpicamsrc vflip=true hflip=true \
           name=src preview=0 fullscreen=0 bitrate=10000000 \
           annotation-mode=time annotation-text-size=20 \
           ! video/x-h264,width=960,height=540,framerate=24/1 \
           ! h264parse \
           ! rtph264pay config-interval=1 pt=96 \
           ! queue max-size-bytes=0 max-size-buffers=0 \
           ! mux. \
           alsasrc device=plug:dsnooped provide-clock=false \
           ! audio/x-raw,rate=44100 \
           ! audiorate \
           ! audioconvert \
           ! audioresample \
           ! opusenc \
           ! rtpopuspay \
           ! queue max-size-bytes=0 max-size-buffers=0 \
           ! mux. \
           rtspclientsink name=mux location=rtsp://0.0.0.0:$RTSP_PORT$RTSP_MOUNT

远程通过OpenVPN访问时,直接使用地址:rtsp://<树莓派局域网IP>:8554/pi_cam,RTSP为单播协议,可正常通过VPN隧道传输。

方案2:NAS(Docker Home Assistant)中转组播流

利用HA的插件将组播流转为可远程访问的单播流:

  1. 在HA中安装Frigate或RTSPtoWebRTC插件
  2. Frigate配置示例(添加到configuration.yaml):
frigate:
  cameras:
    pi_camera:
      ffmpeg:
        inputs:
          - path: udp://224.1.1.1:5001
            input_args: -fflags +genpts
          - path: udp://224.1.1.1:5002
            input_args: -fflags +genpts
            roles:
              - audio
      width: 960
      height: 540
      fps: 24
  1. 配置完成后,可通过HA远程访问功能(或OpenVPN访问HA局域网IP)查看合并后的音视频流。

方案3:配置OpenVPN支持组播(适合不想修改原有管线的场景)

  1. 在OpenVPN服务器配置文件(通常为server.conf)中添加:
push "route 224.0.0.0 240.0.0.0"
client-to-client
dev tun0
multicast
  1. 在树莓派上启用组播路由:
sudo sysctl -w net.ipv4.ip_forward=1
sudo sysctl -w net.ipv4.conf.all.mc_forwarding=1
  1. 远程客户端启用IGMP支持:Windows客户端可在网卡IPv4高级设置中勾选「启用IGMP」,Linux/macOS客户端执行sudo sysctl -w net.ipv4.conf.all.mc_forwarding=1。

次优需求:远程访问低帧率(1-2fps)视频流

方案1:原树莓派直接输出低帧率单播HTTP流

修改GStreamer管线,降低帧率并推送为HTTP流:

gst-launch-1.0 -v rpicamsrc vflip=true hflip=true \
           name=src preview=0 fullscreen=0 bitrate=500000 \
           annotation-mode=time annotation-text-size=20 \
           ! video/x-h264,width=640,height=360,framerate=1/1 \
           ! h264parse \
           ! queue \
           ! mp4mux \
           ! tcpserversink host=0.0.0.0 port=8080

远程访问地址:http://<树莓派局域网IP>:8080,可直接用VLC或浏览器打开。

方案2:新增树莓派中转降帧

在中转树莓派上运行以下管线,接收组播视频流、降帧后转发为单播HTTP流:

gst-launch-1.0 udpsrc address=224.1.1.1 port=5001 \
           ! application/x-rtp,media=video,encoding-name=H264 \
           ! rtph264depay \
           ! h264parse \
           ! avdec_h264 \
           ! videoscale \
           ! video/x-raw,width=640,height=360,framerate=1/1 \
           ! x264enc bitrate=500 \
           ! h264parse \
           ! mp4mux \
           ! tcpserversink host=0.0.0.0 port=8081

远程通过OpenVPN访问地址:http://<中转树莓派局域网IP>:8081。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 17:50:29