Java 如何实现播放 RTSP 视频流
正文与配图来自原稿。思路:前端 Vue3 + 后端 Spring Boot + webrtc-streamer + 摄像头 RTSP。
1、思路
浏览器播 WebRTC;流转换交给 mpromonet/webrtc-streamer;业务系统只负责配置与页面入口。
2、部署 webrtc-streamer
docker-compose.yml
yaml
version: "3.8"
services:
webrtc:
image: mpromonet/webrtc-streamer
container_name: webrtc-streamer
network_mode: host
command:
- -H
- 0.0.0.0:8000
- -C
- /config/config.json
- -s
- "-"
volumes:
- ./config/config.json:/config/config.json:ro
- ./www/index.html:/html/index.html:ro
restart: unless-stopped目录

config.json
urls / video 键固定;cam_* 可改为摄像头业务 ID。密码请脱敏:
json
{
"urls": {
"cam_lobby": {
"video": "rtsp://USER:PASSWORD@CAM_IP:554/Streaming/Channels/101?transportmode=unicast"
},
"cam_warehouse": {
"video": "rtsp://USER:PASSWORD@CAM_IP2:554/Streaming/Channels/102?transportmode=unicast"
}
}
}配置参考可搜社区文章(OpenAI 兼容示例无关,以 webrtc-streamer 文档为准)。
index.html
与 摄像头 RTSP 相同的多路 <select> + iframe 切换即可。
bash
docker compose up -d
docker compose down
docker logs -f --tail 500 webrtc-streamer3、与 Java 后端的关系
Spring Boot 可维护摄像头元数据(名称、RTSP、webrtc 流名),对外只暴露流名;页面仍指向 webrtc-streamer 的 webrtcstreamer.html?流名。不必在 JVM 内解 RTSP。
4、小结
Java 侧做配置与权限;播放链路仍是 webrtc-streamer。容量与编码建议见上一篇。
