MediaMTX 实现rtsp流转webrtc
遇到一个业务需求,需要将无人机端的rtsp流转到浏览器上播放,网上看了一圈,资料零零散散的,故做一篇实现流程,以后忘了还能来看看
准备
服务器,我用的Ubuntu 24.04 ,之前用centOS7, 结果安MediaMTX一直有问题,版本太低好像,干脆直接换了系统
安装node
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
sudo apt-get install -y nodejs
sudo npm i -g pnpm@9
部署 RTSP→WebRTC(MediaMTX)
# 安装 docker(若未安装)
sudo apt-get update
sudo apt-get install -y docker.io
sudo systemctl enable --now docker
# 运行 MediaMTX(host 网络,RTSP/UDP 正常)
sudo docker run -d --name mediamtx --restart unless-stopped \
--network=host bluenviron/mediamtx:latest
配置文件
# 创建配置目录
sudo mkdir -p /opt/mediamtx
sudo nano /opt/mediamtx/mediamtx.yml
api: yes
# 监听端口(默认即可)
rtspAddress: :8554
hlsAddress: :8888
webrtcAddress: :8889
# 公网/NAT 必配:写你的外网 IP/域名(用于 ICE 候选)
webrtcAdditionalHosts: [ip]
webrtcICEServers:
- stun:stun.l.google.com:19302
paths:
cam1:
# TODO: 替换为你的真实 RTSP 源地址
source: your source
sourceOnDemand: yes
然后重启容器(host 网络 + 挂载配置)
sudo docker rm -f mediamtx 2>/dev/null || true
sudo docker run -d --name mediamtx --restart unless-stopped \
--network=host \
-v /opt/mediamtx/mediamtx.yml:/mediamtx.yml \
bluenviron/mediamtx:latest
# 验证
docker logs --tail=200 mediamtx
curl -v http://< your ip >:8889/cam1
然后放行下要用的端口
这里举例一下,根据你的实际情况来
sudo ufw allow 8554/tcp
sudo ufw allow 8554/udp
sudo ufw allow 8888/tcp
sudo ufw allow 8889/tcp
sudo ufw allow 8189/udp
sudo ufw allow 8890/udp
sudo ufw status
最后你如果用云服务器记得安全组放行端口,这里提供一个测试的rtsp地址:rtsp://stream.strba.sk:1935/strba/VYHLAD_JAZERO.stream
效果预览
http://< your ip address >:8889/cam1
这个cam1是MediaMTX自带的预览页面,如果出现直播画面就成功了

封装好video组件就可以直接播放喽,src地址还是http://< your ip address >:8889/cam1


浙公网安备 33010602011771号