# 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
```