海康威视摄像头实时推流到阿里云公网服务器(Windows + FFmpeg + nginx-rtmp)
海康威视摄像头实时推流到阿里云公网服务器(Windows + FFmpeg + nginx-rtmp
- 1. 步骤总览
- 2. 阿里云 ECS(Linux)配置
- 2.1 开放端口
- 2.2 安装 nginx-rtmp
- 3. Windows 电脑端配置
- 3.1 安装 FFmpeg
- 3.1.1 官网/镜像下载:
- 3.1.2 解压后将 bin 目录加入系统 Path
- 3.2 获取海康 RTSP 地址
- 3.3 一次性推流测试
- 4. 公网观看
- 4.1 VLC播放器
- 4.2 网页嵌入(可选)
- 5. 长期守护运行
- 5.1 注册成 Windows 服务(nssm)
- 5.1.1 下载 [nssm](https://nssm.cc/)
- 5.1.2 管理员 PowerShell:
- 5.1.3 启动服务 HikPush,开机即推流,崩溃自动重启。
- 6. 常见问题速查表
- 7. 一键脚本(懒人版)
适用场景
- 摄像头:海康威视 IPC/NVR(局域网)
- 推流机:Windows 10/11(可 7×24 开机)
- 服务器:阿里云 ECS(Ubuntu / CentOS)
- 公网观看:VLC、网页、微信小程序均可
1. 步骤总览
阶段 | 任务 | 备注 |
---|---|---|
① 服务器端 | 部署 nginx-rtmp,监听 1945 端口 | 一次性 |
② Windows 端 | 安装 FFmpeg,拉 RTSP 推 RTMP | 一次性 |
③ 验证 | VLC 公网播放 | 随时 |
④ 长期运行 | 注册 Windows 服务/nssm | 可选 |
2. 阿里云 ECS(Linux)配置
2.1 开放端口
安全组 添加 2 条入方向规则
- TCP 1945 → RTMP 推流
- TCP 80/443 → 可选 HTTP-FLV/HLS
2.2 安装 nginx-rtmp
sudo apt update
sudo apt install nginx-full libnginx-mod-rtmp -ysudo tee /etc/nginx/nginx.conf > /dev/null <<'EOF'
user www-data;
events { worker_connections 1024; }
http { include /etc/nginx/sites-enabled/*; }rtmp {server {listen 1945;chunk_size 4096;application live {live on;record off;gop_cache on; # 低延迟}}
}
EOFsudo systemctl restart nginx
3. Windows 电脑端配置
3.1 安装 FFmpeg
3.1.1 官网/镜像下载:
https://www.gyan.dev/ffmpeg/builds/ffmpeg-release-essentials.zip
3.1.2 解压后将 bin 目录加入系统 Path
PowerShell 验证
ffmpeg -version
3.2 获取海康 RTSP 地址
类型 | 示例 |
---|---|
主码流 | rtsp://admin:密码@192.168.1.64:554/Streaming/Channels/101 |
子码流 | rtsp://admin:密码@192.168.1.64:554/Streaming/Channels/102 |
3.3 一次性推流测试
ffmpeg -re -rtsp_transport tcp `-i "rtsp://admin:Sago0%402024@192.168.1.64:554/Streaming/Channels/101" `-vcodec libx264 -preset ultrafast -tune zerolatency -an `-s 1280x720 -b:v 1200k -f flv `rtmp://<ECS-公网IP>:1945/live/hik1
出现 fps ≈ 25 speed ≈ 1.0x 即成功。
4. 公网观看
4.1 VLC播放器
-
菜单:媒体 → 打开网络串流
-
URL:
rtmp://<ECS-公网IP>:1945/live/hik1
4.2 网页嵌入(可选)
<script src="https://cdn.jsdelivr.net/npm/flv.js/dist/flv.min.js"></script>
<video id="video" controls autoplay></video>
<script>if (flvjs.isSupported()) {const player = flvjs.createPlayer({type: 'flv',url: 'http://<域名或IP>:8080/live/hik1.flv'});player.attachMediaElement(document.getElementById('video'));player.load();player.play();}
</script>
5. 长期守护运行
5.1 注册成 Windows 服务(nssm)
5.1.1 下载 nssm
5.1.2 管理员 PowerShell:
nssm install HikPush
- Application:C:\ffmpeg\bin\ffmpeg.exe
- Arguments:
-re -rtsp_transport tcp -i rtsp://admin:Sago0%402024@192.168.1.64/Streaming/Channels/101 -vcodec libx264 -preset ultrafast -tune zerolatency -an -s 1280x720 -b:v 1200k -f flv rtmp://:1945/live/hik1 - Startup type:Automatic
5.1.3 启动服务 HikPush,开机即推流,崩溃自动重启。
6. 常见问题速查表
现象 | 原因 & 解决 |
---|---|
VLC 无法连接 | 安全组未放行 1945 / 路径拼写错误 |
画面黑屏 | 摄像头未启用 RTSP / 路径 101/102 选错 |
花屏/卡顿 | 网络抖动:改用 -rtsp_transport tcp 并降码率 |
延迟高 | 降低分辨率或 GOP;使用 tune=zerolatency |
7. 一键脚本(懒人版)
保存为 start_hik_push.bat,双击即可运行:
@echo off
title Hikvision → Aliyun RTMP
ffmpeg -re -rtsp_transport tcp ^-i "rtsp://admin:Sago0%402024@192.168.1.64:554/Streaming/Channels/101" ^-vcodec libx264 -preset ultrafast -tune zerolatency -an ^-s 1280x720 -b:v 1200k -f flv ^rtmp://<ECS-公网IP>:1945/live/hik1
pause