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



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

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

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

  1. 如果您有IP摄像机的用户名和密码,请不要忘记在URL中添加用户名和密码。EX:rtsp://username:password@ipaddress:port/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,在浏览器中运行以下代码。运行服务器后.js在节点中,您将获得 HTML 页面中的实时流。

此 HTML 代码使用JSMpeg Player从 WebSocket 以 HTML 形式显示二进制图像

注:https://raw.githubusercontent.com/phoboslab/jsmpeg/master/jsmpeg.min.js 客户端.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>

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

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

  • 乌班图
  • 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();
}

最新更新