【视觉】使用 mediamtx 怎么支持多个rtsp播放
👌 用 mediamtx(原名 rtsp-simple-server
)在 Linux 下支持多个 RTSP 流播放很简单,只需要在配置文件 mediamtx.yml
里增加多个路径(path),每个 path 对应一个 RTSP 源流。
🔹 1. 基本配置(多个 RTSP 源)
例如:你有两台摄像头
- cam1:
rtsp://admin:123456@192.168.1.10:554/stream1
- cam2:
rtsp://admin:123456@192.168.1.11:554/stream2
在 mediamtx.yml
中配置:
paths:cam1:source: rtsp://admin:123456@192.168.1.10:554/stream1cam2:source: rtsp://admin:123456@192.168.1.11:554/stream2
启动 ./mediamtx
后:
-
WebRTC 地址:
http://<server-ip>:8889/cam1/webrtc
http://<server-ip>:8889/cam2/webrtc
-
HLS 地址:
http://<server-ip>:8888/cam1/index.m3u8
http://<server-ip>:8888/cam2/index.m3u8
-
RTSP 转发:
rtsp://<server-ip>:8554/cam1
rtsp://<server-ip>:8554/cam2
🔹 2. 浏览器端播放多个流
你可以在前端写一个简单的页面,放多个 <video>
标签:
<div style="display: flex; gap: 10px;"><video id="cam1" autoplay playsinline controls></video><video id="cam2" autoplay playsinline controls></video>
</div><script src="https://cdn.jsdelivr.net/npm/hls.js@latest"></script>
<script>
function playStream(videoId, url) {const video = document.getElementById(videoId);if (Hls.isSupported()) {const hls = new Hls();hls.loadSource(url);hls.attachMedia(video);} else if (video.canPlayType('application/vnd.apple.mpegurl')) {video.src = url;}
}playStream('cam1', 'http://your-ip:8888/cam1/index.m3u8');
playStream('cam2', 'http://your-ip:8888/cam2/index.m3u8');
</script>
这样就能在一个页面同时播放多个 RTSP 摄像头的流(经过 HLS 转换)。
如果用 WebRTC 播放,直接访问 http://your-ip:8889/cam1/webrtc
/ cam2/webrtc
就行。
🔹 3. 注意事项
- CPU/带宽:如果摄像头很多,建议使用转封装(
-c copy
)方式,避免解码/转码占用过高 CPU。 - 路径名自定义:
cam1
、cam2
是逻辑名字,你可以按项目需要改成frontdoor
、warehouse
等。 - 认证:可以在配置里加用户名/密码,避免未授权访问。