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

Posted

技术标签:

【中文标题】如何使用 nodejs 服务器流式传输 RTSP?【英文标题】:How to stream RTSP with a nodejs server? 【发布时间】:2019-08-25 18:11:57 【问题描述】:

您好,我正在开发一个新项目,我想通过节点 Web 服务器流式传输来自我的网络摄像机的 RTSP 流。我不想使用 ONFIV 协议进行蒸汽,而是直接使用 rtsp 流。到目前为止,我已经测试了 github 上展示的大部分项目,但没有成功。 现在有没有人提供文档或项目来解释(服务器和 html 端)如何使用节点 javascript 服务器将 RTSP 流流式传输到 HTML 页面?

【问题讨论】:

【参考方案1】:

我使用 node-rtsp-stream NPM 将 RTSP 流式传输到使用 Web 套接字的 HTML 网站。下面的代码通过在端口 9999 中运行的 WebSocket 将实时帧流式传输到 HTML。

这是运行正常的简单 NodeJS 服务器代码。 注意:

    如果您有 IP 摄像机的用户名和密码,请不要忘记在 URL 中添加用户名和密码。 EX:rtsp://username:password@ipaddress:port/h264_ulaw.sdp' 在你的机器上安装FFmpeg,并将FFmepg的bin路径设置为系统环境。

Server.js:

  var stream = require('node-rtsp-stream')
  const express = require('express')
  const app = express()

  stream = new stream(
    name: 'name',
    streamUrl: 'your RTSP URL',
    wsPort: 9999
)  

对于客户端你不需要太多,确保你有jsmpeg.min.js,在浏览器中运行下面的代码。在节点中运行 server.js 后,您将获得 HTML 页面中的实时流。

此 HTML 代码使用 JSMpeg Player 从 WebSocket 显示 HTML 中的二进制图像

注意:https://raw.githubusercontent.com/phoboslab/jsmpeg/master/jsmpeg.min.js client.html: 我从这个链接复制了原始的 jsmpeg.min.js 并将其粘贴。

  <html>
  <body>enter code here
    <div style="height: 30rem; width:30rem ;">
        <canvas id="canvas" onclick="stop()"></canvas>
    </div>

  </body>

  <script type="text/javascript" src="jsmpeg.min.js"></script>
  <script type="text/javascript">
    player = new JSMpeg.Player('ws://localhost:9999', 
      canvas: document.getElementById('canvas') // Canvas should be a canvas DOM 
 element
    )  
    function stop()
        player.stop()
    
 </script>
  </html>

【讨论】:

没有任何解释的代码很少有帮助。 Stack Overflow 是关于学习的,而不是提供 sn-ps 来盲目复制和粘贴。请编辑您的问题并解释它如何回答所提出的具体问题。见How to Answer。 抱歉这样回答。我将编辑答案。谢谢你指导像我这样的菜鸟@sfili【参考方案2】:

使用 node-rtsp-stream 节点模块,安装 ffmpeg,设置 ffmpeg PATH OSwide。在浏览器级别使用节点模块 jsmpeg 并在画布元素中显示流。

【讨论】:

以上是关于如何使用 nodejs 服务器流式传输 RTSP?的主要内容,如果未能解决你的问题,请参考以下文章

使用节点 js 的 RTSP 流式传输?

从 FFmpeg 流式传输 RTSP 需要哪些步骤?

如果我的计算机在 NAT 之后,如何通过 UDP 使用 RTSP 流式传输视频?

使用 ffmpeg 将低延迟 RTSP 视频流式传输到 android

ffmpeg 将 rtsp 重新流式传输到 mjpeg

既然不再支持 VLC 插件,如何在 Firefox 和 Chrome 中流式传输 RTSP 实时视频?