快速开始
CCNVR 是一个进程搞定全部功能的网络视频录像机:设备接入、实时预览、录像存储与回放。
三种方式任选其一。首次访问都会进入初始化向导,按提示设置语言、本机地址和管理员密码即可。
| 方式 | 适用场景 | 产物 |
|---|---|---|
| Windows | 桌面、工控机 | ccnvr-windows-amd64.zip |
| Linux | 生产环境、需要开机自启 | ccnvr-linux-amd64-<版本>.tar.gz |
| Docker | 服务器、NAS、快速试用 | 镜像 ccnvr/ccnvr:latest |
一、Windows 部署
- 解压
ccnvr-windows-amd64.zip到任意目录。 - 双击
start.bat。 - 浏览器打开
http://127.0.0.1:16188。
停止:双击 stop.bat。
注意
- 请用
start.bat,不要直接双击ccnvr.exe。start.bat会带看护进程启动,崩溃后自动拉起。 - 不要用任务管理器单独结束
ccnvr.exe,看护进程会把它拉回来。停止一律用stop.bat(会同时结束看护进程与 MediaServer)。 - 首次启动 Windows 防火墙会弹窗,必须允许,否则局域网内其它机器访问不了。
二、Linux 部署
1. 解压并启动
tar -xzf ccnvr-linux-amd64-<版本>.tar.gz
cd ccnvr-linux-amd64
sudo ./start.sh
启动脚本会自动打印本机所有网卡的访问地址,浏览器打开 http://<IP>:16188。
2. 常用命令
./start.sh # 后台启动(关终端不影响)
./stop.sh # 停止
./start.sh status # 查看进程与健康检查
sudo ./start.sh service # 安装 systemd 服务:开机自启 + 崩溃自动拉起
注意
- 必须用 root 启动。RTSP 默认端口 554 是特权端口(<1024),普通用户无法监听。用
sudo ./start.sh;或执行sudo setcap 'cap_net_bind_service=+ep' ./MediaServer/MediaServer后免 sudo。 - 不要混用 sudo 和普通用户。用 sudo 启动过一次后,
configs/config.toml属主会变成 root,之后普通用户启动会读不到配置。统一用 sudo,或sudo chown -R $(id -un):$(id -gn) .改回来。 - 要求 glibc ≥ 2.31:Ubuntu 20.04+ / Debian 11+ / CentOS Stream 9+。
三、Docker 部署
docker run -d --name ccnvr --restart always \
-p 16188:16188 \
-p 15060:15060 -p 15060:15060/udp \
-p 31100-31200:31100-31200 -p 31100-31200:31100-31200/udp \
-p 3702:3702/udp \
-v /opt/ccnvr/data:/opt/media/bin/configs \
ccnvr/ccnvr:latest
浏览器打开 http://<主机IP>:16188。
需要 RTSP / RTMP 分发时再追加 -p 2554:2554 -p 1935:1935(默认关闭)。
注意
- 必须挂载
/opt/media/bin/configs。配置、数据库、设备档案、机器码、授权文件全在这个目录,不挂载则容器重建后全部丢失,授权还得重新签发。 - GB28181 设备注册走 UDP 15060。只映射 TCP 会让设备一直「注册超时」,服务端日志里一行都不会有。
- ONVIF 自动发现依赖局域网组播,bridge 网络下扫不到设备。Linux 上改用
--network host(此时去掉全部-p);Windows / macOS 的 Docker Desktop 不支持 host 网络,只能手动填 RTSP 地址添加。 - 录像默认写在容器内。要落到宿主机,追加
-v /opt/ccnvr/records:/opt/media/bin/records。
四、首次初始化
首次打开会进入初始化向导,依次设置:
- 语言
- 网络确认 — 国标 SIP 宣告 IP(局域网填内网 IP,公网部署填公网 IP)、媒体服务器 IP(本机部署默认
127.0.0.1即可) - 产品名称
- 管理员密码 — 默认账号
admin,密码admin;不能继续沿用默认密码 admin
向导完成后不再出现。
授权在 系统信息 → 授权 上传 .lic 文件即时生效,无需重启。未激活按免费版运行(默认 5 路),超出路数的通道仍可管理、删除,但不能预览与回放。
五、端口清单
云服务器除了系统防火墙,还要在云厂商安全组放行——安全组是最常见的漏项。
| 用途 | 端口 | 协议 | 是否必需 |
|---|---|---|---|
| Web 管理 + ONVIF SOAP | 16188 | TCP | 必需 |
| GB28181 SIP 信令 | 15060 | TCP + UDP | 用国标时必需 |
| GB28181 收流 | 31100-31200 | TCP + UDP | 用国标时必需 |
| ONVIF WS-Discovery | 3702 | UDP | 可选 |
| RTSP 分发 | 2554 | TCP | 可选 |
| RTMP 分发 | 1935 | TCP | 可选 |
流媒体 API(16198)仅供本机内部调用,无需对外放行。
可选端口默认全部关闭,在 设置 → 流媒体分发 按需开启。网页播放、抓图、录像都不依赖它们。
六、部署排查
| 现象 | 原因 |
|---|---|
| 国标设备一直注册超时,服务端无任何 SIP 日志 | 安全组 / 防火墙漏了 UDP 15060 |
| 局域网扫不到 ONVIF 设备 | Docker 用了 bridge 网络,需改 --network host |
| 设备注册成功但无画面 | RTP 端口段(31100-31200)UDP 未放行,或 Sip.Host / Media.SDPIP 未填公网 IP |
上传授权报 invalid | 服务端未内置授权公钥,或授权文件与设备码不匹配 |
Linux 启动提示读不到 config.toml | 之前用 sudo 启动过,文件属主变成 root |