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

问题描述 投票:0回答:4

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

javascript node.js video-streaming rtsp
4个回答
2
投票

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

这是简单的 NodeJS 服务器代码,可以正常工作。 注意:

  1. 如果您有网络摄像机的用户名和密码,请不要忘记在 URL 中添加用户名和密码。例如:rtsp://用户名:密码@ip地址:端口/h264_ulaw.sdp'
  2. 在机器上安装FFmpeg,并将FFmepg的bin路径设置为系统环境。

服务器.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
,在浏览器中运行以下代码。在 Node 中运行 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>

0
投票

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


0
投票

我已经使用“node-rtsp-stream-jsmpeg”包完成了这些事情并安装了 ffmpeg

  • Ubuntu
  • Nodejs
{
    const Stream = require('node-rtsp-stream-jsmpeg')

    const options = {
      name: 'streamName',
      url: 'provide your rtsp URL',
      wsPort: 3001
    }

    stream = new Stream(options);

    stream.start();
}

0
投票

这个解决方案有点复杂,但它有效。浏览器对标头和数据发送时间很挑剔。

http://blog.northfield.ws/streaming-rtsp-directly-to-browsers/

© www.soinside.com 2019 - 2024. All rights reserved.