海康威視攝像頭實時推流到阿里云公網服務器(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