# IOT2050-Node-RED-hikvision
**Repository Path**: inclub/node-red
## Basic Information
- **Project Name**: IOT2050-Node-RED-hikvision
- **Description**: Node-RED通过相关配置实现在dashboard中显示海康威视摄像头
- **Primary Language**: Unknown
- **License**: GPL-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2024-03-29
- **Last Updated**: 2024-04-12
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
## 1 .将2个16位整形转换成32位Float型
```javascript
// 假设 msg.payload 是一个包含两个数字的数组,例如 [0, 0]
var high = msg.payload[0];
var low = msg.payload[1];
var combined = (high << 16) | low; // 合并为 32 位整数
var buffer = Buffer.alloc(4);
buffer.writeUInt32BE(combined, 0); // 以大端序写入 32 位整数
var floatValue = buffer.readFloatBE(0); // 读取为 32 位浮点数
// 使用 toFixed(2) 保留两位小数,然后转换回浮点数
floatValue = parseFloat(floatValue.toFixed(2));
msg.payload = floatValue;
return msg;
```
## 2 .在templat中现实HLS流媒体内容
```javascript
```
## 3 .将16位整形除以10
```javascript
var Value = msg.payload[0];
msg.payload = Value/10;
return msg;
```
## 4 .海康威视RTSP流:
根据摄像头的配置,其中摄像头的用户名和密码如下:
```bash
username:admin
password:WANGjie123@
```
### 4.1 RTSP流
```http
rtsp://admin:WANGjie123@@10.5.11.92:554
```
### 4.2 IOT2050安装nginx
```bash
sudo apt update
sudo apt install nginx
```
#### 4.2.1 启动 Nginx
```bash
sudo systemctl start nginx
```
#### 4.2.2 重启 Nginx
```bash
sudo systemctl restart nginx
```
#### 4.2.3 停止 Nginx
```bash
sudo systemctl stop nginx
```
#### 4.2.4查询 Nginx 服务状态
```bash
sudo systemctl status nginx
```
### 4.3 替换当前目录下的nginx.conf文件,配置CORS支持
CORS(Cross-Origin Resource Sharing)是一种用于在浏览器中处理跨源HTTP请求的机制。在Web开发中,当一个网页尝试通过JavaScript代码从不同源(域名、协议或端口)的服务器上获取资源时,浏览器会执行跨域请求。CORS允许服务器指定哪些源可以访问其资源。
### 4.4 配置文件路径:
```bash
/etc/nginx/nginx.conf
```
### 4.5 安装 FFmpeg
串流工具,将RTSP串流成HLS
```bash
sudo apt update
sudo apt install ffmpeg
```
### 4.6 将RTSP流串流成HLS,使IOT2050支持web内嵌实时视频流
```bash
root@iot2050-debian:/# ffmpeg -rtsp_transport tcp -i rtsp://admin:WANGjie123@@10.5.11.92:554 -c:v copy -c:a copy -f hls -hls_time 2 -hls_list_size 3 -hls_wrap 10 -hls_flags delete_segments /var/www/html/hikvision.m3u8
```
#### 4.6.1 注意该命令如此执行是前台执行,需要创建 systemd 服务文件
```bash
sudo vim /etc/systemd/system/ffmpeg-hikvision.service
```
#### 4.6.2 将以下内容粘贴到ffmpeg-hikvision.service文件中,然后进行适当的修改以适应你的设置:
```ini
[Unit]
Description=FFmpeg RTSP to HLS
After=network.target
[Service]
Type=simple
Restart=always
RestartSec=3
ExecStart=/usr/bin/ffmpeg -rtsp_transport tcp -i rtsp://admin:WANGjie123@@10.5.11.92:554 -c:v copy -c:a copy -f hls -hls_time 2 -hls_list_size 3 -hls_wrap 10 -hls_flags delete_segments /var/www/html/hikvision.m3u8
[Install]
WantedBy=multi-user.target
```
注意:确保 ExecStart 路径中的 /usr/bin/ffmpeg 是正确的(可以通过 which ffmpeg 命令来查找 FFmpeg 的安装路径)。如果你的 FFmpeg 路径不同,请相应地修改。
#### 4.6.3启用和启动服务
##### 4.6.3.1 重新加载 systemd 配置,以识别新的服务文件:
```bash
sudo systemctl daemon-reload
```
##### 4.6.3.2 启用新创建的服务,以便在系统启动时自动运行:
```bash
sudo systemctl enable ffmpeg-hikvision.service
```
##### 4.6.3.3 测试它是否按预期工作:
```bash
sudo systemctl start ffmpeg-hikvision.service
```
##### 4.6.3.4 检查服务的状态,确认它正在运行:
```bash
sudo systemctl status ffmpeg-hikvision.service
```
服务使用 Restart=always 和 RestartSec=3 选项,这意味着如果 FFmpeg 进程退出,systemd 会尝试每 3 秒重启它。
使用这种方法,FFmpeg 会在后台作为一个服务运行,你不需要手动启动它。
确保 /var/www/html/hikvision.m3u8 路径对 FFmpeg 进程可写,且你有权限写入 /var/www/html/ 目录。
如果你的 RTSP 流源或其他设置发生变化,你需要更新这个 systemd 服务文件,然后重新加载和重启服务。
## Node-RED配置:
```javascript
```