[英]Re-stream RTSP from IP cam with Node Media Server to http/ws and display it with html
我的目标是在标准HTML页面(html5 + css3 +香草javascript,无魔法=无插件)上显示IP cam的RTSP输出流。 HTML页面应托管在我的Raspberry Pi上的NGINX Web服务器中。
我使用的设置是具有Rasbian OS,Node.js和Node-Media-Server软件包 NGINX的Raspberry Pi 3 B +( 但是我不认为NGINX对于我的问题很重要?我没有为Node进行任何配置-Media-Server仍在其中。 )IP摄像机和浏览器。
Node-Media-Server-project中的自述文件很详细,并且有一个教程几乎完全描述了我想做什么。 具体来说,有一个有关如何访问实时流的标记示例:
<html>
<head>
<title>Camera</title>
</head>
<body>
<script src="https://cdn.bootcss.com/flv.js/1.4.0/flv.min.js"></script>
<video id="videoElement"></video>
<script>
if (flvjs.isSupported()) {
var videoElement = document.getElementById('videoElement');
var flvPlayer = flvjs.createPlayer({
type: 'flv',
url: 'http://localhost:8000/live/uterum.flv'
});
flvPlayer.attachMediaElement(videoElement);
flvPlayer.load();
flvPlayer.play();
}
</script>
</body>
</html>
这就是我在Raspberry PI上启动媒体服务器kommandoran-mediaserver.js
:
const { NodeMediaServer } = require('node-media-server');
const config = {
logType: 3, // 3 - Log everything (debug)
rtmp: {
port: 1935,
chunk_size: 60000,
gop_cache: true,
ping: 60,
ping_timeout: 30
},
http: {
port: 8000,
allow_origin: '*'
},
relay: {
ffmpeg: '/usr/local/bin/ffmpeg',
tasks: [
{
app: 'cctv',
mode: 'static',
edge: 'rtsp://<USER>:<PASSWORD>@10.0.0.111/live1.sdp',
name: 'uterum',
rtsp_transport : 'tcp' //['udp', 'tcp', 'udp_multicast', 'http']
}
]
}
};
var nms = new NodeMediaServer(config)
nms.run();
当我尝试通过Raspberry Pi(即本地主机)上的Chromium浏览器查看camera.html
(请参见上面的标记)时,什么都没有显示。 在Chromium调试检查器中,没有javascript错误,但是我得到了:
GET http://localhost:8000/live/uterum.flv net::ERR_EMPTY_RESPONSE
这是节点终端的屏幕截图: 当我尝试向
http://localhost:8000/live/uterum.flv
发出请求时,红色区域显示了输出。
我想我尝试到达错误的终点,但是哪个正确? 该文档指出http://localhost:8000/live/STREAM_NAME.flv
。 在我的情况下,“ STREAM_NAME
”是什么?
从配置中可以看到,您的RTSP流已推送到“ cctv”应用程序。
因此,您的播放地址应为:
RTMP://本地主机/ CCTV / uterum
要么
HTTP://本地主机:8000 / CCTV / uterum.flv
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.