1.海康rtsp协议地址
rtsp://admin:das-123456@192.168.40.64:554/h264/ch01/main/av_stream
2.启动rtsp服务端(文件资源下载地址参考文末)
1.下载simple-rtsp-server(windows版本)
mediamtx_v0.23.8_linux_arm64v8.tar.gz(linux arm64版本)(下载地址见文末)
2.启动
windows版本运行exe文件,linux版本运行 ./mediamtx
3.需要通过ffmpeg工具将海康rtsp协议 进行推流,转到自己的rtsp服务端(这一步比较重要,如果直接对海康摄像头原来的rtsp流进行取流解码,会出现下图的异常)
推流命令
ffmpeg -stream_loop -1 -i rtsp://admin:das-123456@192.168.40.64:554/h264/ch01/main/av_stream -c copy -rtsp_transport tcp -f rtsp rtsp://192.168.9.145:8554/live
4.准备一个node服务端,对生成的rtsp协议流进行拉流加码
node服务端源码
(参考轻松实现在web页面中直接播放rtsp视频流_前端播放rtsp_Never Yu的博客-CSDN博客)
编译后的node代码,可直接在服务器上执行node main.js 运行 (采用pm2 运行管理node服务)
5.前端页面
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=no,viewport-fit=cover">
<script src="https://jsmpeg.com/jsmpeg.min.js" charset="utf-8"></script>
<title>播放rtsp</title>
</head>
<body>
<canvas id="canvas" style="width: 600px; height: 600px;"></canvas>
</body>
<script>
var rtsp = 'rtsp://192.168.9.145:8554/live2'
// 将rtsp视频流地址进行btoa处理一下
new JSMpeg.Player("ws://192.168.9.145:9999/rtsp?url="+btoa(rtsp), {
canvas: document.getElementById("canvas")
})
</script>
</html>
资源下载