Nodejs - RTSP 实时摄像机源 - 分布式架构

Posted

技术标签:

【中文标题】Nodejs - RTSP 实时摄像机源 - 分布式架构【英文标题】:Nodejs - RTSP live camera feed - distributed architecture 【发布时间】:2021-08-07 00:47:19 【问题描述】:

我们需要传递摄像机详细信息,并且需要在网络浏览器中向最终用户显示实时流。由于这是分布式架构,因此我们可以仅使用 Rest API 或套接字通信来实现。

技术栈

    Nodejs - 在后端 Angular - 在前端

作为解决方案的一部分,我找到了 npm - node-rtsp-stream - https://www.npmjs.com/package/node-rtsp-stream 但问题是我们必须创建 API 并在 api 中传递流,至少有 20-30 个摄像头才能看到直播溪流。从前端传递端口并在后端使用它。

问题-

如何在用户单击暂停按钮时停止流,我已尝试使用 API - '/camera/feed/stop/:port' 但它不起作用? 在为流创建API时,流很可能会被混淆,如何管理ws端口? 使用 RTSP URL 在客户端显示流的任何更好的解决方案

我尝试了以下解决方案,但没有运气

const Stream = require('node-rtsp-stream');
app.get('/camera/feed/:camera/:port', (req, res) => 
    console.log(req.params.port);
    if (req.params.camera == 1) 
        var ip_address2 = "192.168.1.12"
        var username2 = "admin";
        var password2 = "admin";
     else if (req.params.camera == 2) 
        var ip_address2 = "192.168.1.10"
        var username2 = "admin";
        var password2 = "admin";
    
    stream = new Stream(
        streamUrl: 'rtsp://' + username2 + ':' + password2 + '@' + ip_address2 + ':554/cam/realmonitor?channel=1&subtype=0&unicast=true&proto=Onvif',
        wsPort: req.params.port
    );
    res.send('OK');
);
// Stop the stream that produce using ffmpeg
app.get('/camera/feed/stop/:port', (req, res) => 
    stream.stop() // This is not make ffmpeg to stop the processing stream 
    res.send('OK');
);

app.listen(port, () => 
    console.log(`Example app listening at http://localhost:$port`)
)

index.html

var canvas3 = document.getElementById('canvas3');
var websocket = new WebSocket("ws://127.0.0.1:9999");
var player3 = new jsmpeg(websocket,  canvas: canvas3, autoplay: true, loop: true )

谢谢。

【问题讨论】:

我找到了解决方案。在 API 响应中传递流对象,其中包含 PID res.send(stream); 对于停止/杀死 FFmpeg 进程,我们可以使用来自前端的 PID kill(req.params.pid); 【参考方案1】:

要暂停流,您可以使用播放器中的stop() 方法,player3.stop()

【讨论】:

以上是关于Nodejs - RTSP 实时摄像机源 - 分布式架构的主要内容,如果未能解决你的问题,请参考以下文章

无实时约束处理大量 rtsp 摄像头

EasyRTSPLive摄像机NVR录像机RTSP协议实时流转RTMP协议直播流推送之搭建EasyRTMPLive拉RTSP流转RTMP测试环境的方法解析

基于FFmpeg+rtsp读取摄像头实时图像

如何使用 nodejs 服务器流式传输 RTSP?

无法从 IP cam 接收 RTSP 实时流

WEB页面实时播放海康大华等摄像头RTSP视频流完全方案