您好,我正在开发一个新项目,我想通过节点 Web 服务器从我的网络摄像机传输 RTSP 流。我不想使用 ONFIV 协议进行流传输,而是直接使用 rtsp 流。到目前为止,我已经测试了 github 上展示的大部分项目,但没有成功。 现在是否有人有文档或项目解释(服务器和 html 端)如何使用节点 javascript 服务器将 RTSP 流传输到 HTML 页面?
我使用 node-rtsp-stream NPM 使用 Web 套接字将 RTSP 流式传输到 HTML 网站。下面的代码通过在端口 9999 中运行的 WebSocket 将实时帧流式传输为 HTML。
这是简单的 NodeJS 服务器代码,可以正常工作。 注意:
服务器.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>
使用node-rtsp-stream节点模块,安装ffmpeg,设置ffmpeg PATH OS范围。在浏览器级别使用节点模块 jsmpeg 并在画布元素内显示流。
我已经使用“node-rtsp-stream-jsmpeg”包完成了这些事情并安装了 ffmpeg
{
const Stream = require('node-rtsp-stream-jsmpeg')
const options = {
name: 'streamName',
url: 'provide your rtsp URL',
wsPort: 3001
}
stream = new Stream(options);
stream.start();
}
这个解决方案有点复杂,但它有效。浏览器对标头和数据发送时间很挑剔。
http://blog.northfield.ws/streaming-rtsp-directly-to-browsers/