Skip to content

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

目录 ​

www 与 config

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-streamer

3、与 Java 后端的关系 ​

Spring Boot 可维护摄像头元数据(名称、RTSP、webrtc 流名),对外只暴露流名;页面仍指向 webrtc-streamer 的 webrtcstreamer.html?流名。不必在 JVM 内解 RTSP。

4、小结 ​

Java 侧做配置与权限;播放链路仍是 webrtc-streamer。容量与编码建议见上一篇。