使用webrtc-streamer查看实时监控

使用webrtc-streamer查看实时监控

webrtc-streamer

webrtc-streamer 是一个使用简单机制通过 WebRTC 流式传输视频捕获设备和 RTSP 源的项目,它内置了一个小型的 HTTP server 来对 WebRTC需要的相关接口提供支持。相对于ffmpeg+flv.js的方案,延迟降低到了0.4秒左右,画面的加载速度也变快了,切换浏览器标签后也不会暂停画面,并且解决了http1.1的同域名中的并发限制(在谷歌浏览器中可以同时播放6个以上的video)。

webrtc-streamer下载

windows:下载地址,选择对应版本下载后解压运行【webrtc-streamer.exe】即可

centos7.4:因为一些环境原因,建议在docker中使用

# docker中获取webrtc-streamer
docker pull mpromonet/webrtc-streamer

# 启动webrtc-streamer镜像
docker run -itd -p 8000:8000 --name webrtc-streamer mpromonet/webrtc-streamer

测试

页面中需要用到的js文件:【webrtcstreamer.js】、【adapter.min.js】,分别在windows版的【html】和【html\libs】目录

核心代码:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<body>
		<video id='video' style='object-fit:fill' controls autoplay autobuffer muted preload='auto'></video>
		
		<script type="text/javascript" src="./js/webrtcstreamer.js"></script>
		<script type="text/javascript" src="./js/adapter.min.js"></script>
		<script type="text/javascript" src="./js/jquery-3.2.1.min.js"></script>
		<script>        
		    var webRtcServer = null;
		    
		    //页面加载时加载视频画面
		    window.onload = function() { 
		    	//video:需要绑定的video控件ID
		    	//192.168.1.226:启动webrtc-streamer的设备IP
		        webRtcServer = new WebRtcStreamer("video",location.protocol+"//192.168.1.226:8000");
		        //需要查看的rtsp地址
				webRtcServer.connect("rtsp://admin:12345@192.168.1.65:554/h264/ch1/main/av_stream");
		    }
		    
			//页面退出时销毁
		    window.onbeforeunload = function() { 
				webRtcServer.disconnect();
			}
		</script>
	</body>
</html>

常用的RTSP格式

#海康摄像头
rtsp://<账号>:<密码>@<IP>:<端口,默认554>/<视频编码,h264/h265>/<通道,ch1起始>/<码流,main主 sub子>/av_stream
例:rtsp://admin:12345@192.168.1.116:554/h264/ch1/main/av_stream

#海康NVR,账号密码为NVR的而不是摄像头账号密码,区分摄像头靠通道号,时间格式:日后面加T,秒后面加Z
rtsp://<账号>:<密码>@<地址>:<端口,默认554>/Streaming/tracks/<前面是通道号 D1:1,后两位是码流 01: 02:>?starttime=<起始时间,20210814T173350Z>&endtime=<结束时间,20210814T180000Z>
例:rtsp://admin:aaaa1111@192.168.1.90:554/Streaming/tracks/101?starttime=20210818T171300Z&endtime=20210818T171400Z


#大华摄像头
rtsp://<账号>:<密码>@<IP>:<端口,默认554>/cam/realmonitor?channel=<通道,起始1>&subtype=<码流,0: 1:>
例:rtsp://admin:admin@192.168.1.230:554/cam/realmonitor?channel=1&subtype=0

#大华NVR,账号密码为NVR的而不是摄像头账号密码,区分摄像头靠通道号,时间格式:年月日时分后面加_
rtsp://<账号>:<密码>@<地址>:<端口,默认554>/cam/playback?channel=<通道号,D1:1>&subtype=<码流,0: 1:子)>&starttime=<起始时间,2021_08_18_14_13_41>&endtime=<结束时间,2021_08_18_14_15_41>
例:rtsp://admin:aaaa1111@192.168.1.95:554/cam/playback?channel=1&subtype=0&starttime=2021_08_18_10_52_00&endtime=2021_08_18_10_53_00
  • 6
    点赞
  • 67
    收藏
    觉得还不错? 一键收藏
  • 62
    评论
根据提供的引用内容,webrtc-streamer是一个基于WebRTC的流媒体服务器,可以用于实时视频流传输。如果您想在C#中使用webrtc-streamer,可以使用WebRTC .NET库。这个库提供了一个WebRTC的C#实现,可以用于在C#应用程序中实现WebRTC功能。您可以使用这个库来连接webrtc-streamer服务器并传输视频流。 以下是使用WebRTC .NET库连接webrtc-streamer服务器的示例代码: ```csharp using System; using System.Threading.Tasks; using WebRTC; namespace WebRTCExample { class Program { static async Task Main(string[] args) { // 创建PeerConnectionFactory var options = new PeerConnectionFactoryOptions(); var factory = new PeerConnectionFactory(options); // 创建PeerConnection var configuration = new RTCConfiguration { IceServers = new[] { new RTCIceServer { Urls = new[] {"stun:stun.l.google.com:19302"} } } }; var pc = factory.CreatePeerConnection(configuration); // 创建VideoTrack var videoDevice = await MediaDevice.GetUserMedia(new MediaStreamConstraints { Video = new VideoMediaTrackConstraints { Width = new ConstrainULong {Exact = 640}, Height = new ConstrainULong {Exact = 480}, FrameRate = new ConstrainDouble {Exact = 30} } }); var videoTrack = videoDevice.GetVideoTracks()[0]; // 添加VideoTrack到PeerConnection var sender = pc.AddTrack(videoTrack); // 连接webrtc-streamer服务器 var offer = await pc.CreateOffer(); await pc.SetLocalDescription(offer); // 将offer发送给webrtc-streamer服务器 // 等待webrtc-streamer服务器返回answer var answer = await pc.WaitForAnswer(); // 设置webrtc-streamer服务器返回的answer await pc.SetRemoteDescription(answer); // 等待连接建立 await Task.Delay(5000); // 关闭连接 await pc.Close(); videoDevice.Stop(); } } } ``` 请注意,这只是一个示例代码,您需要根据您的实际情况进行修改。另外,您需要在项目中添加WebRTC .NET库的引用。
评论 62
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值