如何使用 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?的主要内容,如果未能解决你的问题,请参考以下文章
如果我的计算机在 NAT 之后,如何通过 UDP 使用 RTSP 流式传输视频?