有人摄像头对接文档
分享
### - 如何在页面中使用有人摄像头 #### 1.初始化摄像头 首先需要在页面引入第三方库Video.js,官方文档(https://docs.videojs.com/index.html), github(https://github.com/videojs/video.js)。 有两种方法可以进行初始化,一种在<video>标签里面加上class="video-js"和data-setup='{}'属性,这两者缺一不可。示例: <video id="my-video" style="color:black;width:100%;height:350px" class="video-js" autoplay controls preload="auto" width="750" height="350" data-setup='{"autoplay":true}'> <source src='rtmp://202.69.69.180:443/webcast/bshdlive-pc' type='rtmp/flv'/> </video> 另一种是使用js进行初始化(注意这种方法就不能在video标签里配置data-setup),示例: //deviceId 摄像头的设备号 password 摄像头的密码 //time 当前时间的时间戳(秒)token是对 deviceId:password:time MD5算法之后的哈希值(32位小写) let videoSrc = `rtmp://rtmp.itangwang.top:1935/live/${deviceId}?token=${token}×tamp=${time}` const videoPlayer = videojs('id',{//id是video标签的id flash: {swf: '/static/VideoJS.swf'} }) videoPlayer.src({ src: videoSrc,//视频直播播放地址 type: 'rtmp/flv'//视频播放格式 }) #### 2. 播放视频 播放视频与初始化相似,多一个播放方法,示例: //deviceId 摄像头的设备号 password 摄像头的密码 //time 当前时间的时间戳(秒)token是对 deviceId:password:time MD5算法之后的哈希值(32位小写) let videoSrc = `rtmp://rtmp.itangwang.top:1935/live/${deviceId}?token=${token}×tamp=${time}` const videoPlayer = videojs('id',{//id是video标签的id flash: {swf: '/static/VideoJS.swf'} }) videoPlayer.src({ src: videoSrc,//视频直播播放地址 type: 'rtmp/flv'//视频播放格式 }) videoPlayer.play()//播放视频 #### 3.例子 ```html <!DOCTYPE html> <html lang="en"> <head> <meta http-equiv="Access-Control-Allow-Origin" content="*"> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no"> <title>测试有人摄像头播放视频</title> <script src="js/jquery-3.2.1.min.js"></script> <link href="css/video-js.css" rel="stylesheet"> <script src="js/video.js"></script> <script src="js/md5.js"></script> </head> <body style="font-size: 0.8rem;"> <input id="deviceId" type="text" placeholder="请输入设备号"> <input id="password" type="text" placeholder="请输入设备密码"> <button id="play" onclick="play()">播放</button> <video id="my-video" style="width:100%;height:500px;" class="video-js vjs-big-play-centered" autoplay controls preload="auto"></video> <script type="text/javascript" language="JavaScript"> function play() { //deviceId 摄像头的设备号 password 摄像头的密码 //time 当前时间的时间戳(秒)token是对 deviceId:password:time MD5算法之后的哈希值(32位小写) var deviceId = document.getElementById("deviceId").value; var password = document.getElementById("password").value; var time = parseInt(new Date().getTime()/1000); var token = deviceId+':'+password+':'+time; token = $.md5(token) var videoSrc = 'rtmp://rtmp.itangwang.top:1935/live/'+deviceId+'?token='+token+'×tamp='+time; var videoPlayer = videojs('my-video',{//my-video是video标签的id flash: {swf: './VideoJS.swf'} }) videoPlayer.src({ src: videoSrc,//视频直播播放地址 type: 'rtmp/flv'//视频播放格式 }) videoPlayer.play(); } </script> </body> </html> ``` ### - 注意事项 - Video.js不要使用7版本及以上。 - 如果正确初始化以及播放源稳定却还是报错VIDEOJS: ERROR: (CODE:4 MEDIA_ERR_SRC_NOT_SUPPORTED) No compatible source was found for this media.的话,可能是因为浏览器未开启Flash的权限(因为rtmp格式的视频播放需要flash)。 手动更改浏览器权限,示例(谷歌浏览器):点击浏览器地址栏最左处的按钮,选择网站设置,找到Flash并修改为允许,再重新加载网站即可。 - 如果需要在弹窗中播放视频,需要在关闭弹窗时对video进行销毁,示例: const videoPlayer = videojs('id')//id是video标签的id videoPlayer.dispose() //销毁会把video节点从dom中移除,如果需要再次播放则需再手动加上video标签,示例: document.getElementById('id').innerHTML = '<video id="my-player" style="margin: auto;width:80%;height:350px" class="video-js vjs-big-play-centered" controls preload="auto"></video>'//id是销毁前video标签的父级id
×
分享
项目地址:
http://cloud.usr.cn/showdoc/index.php?s=/51
复制链接