Index: ssts-web/src/main/webapp/disinfectsystem/test/takeVideoAndImg.js =================================================================== diff -u -r33518 -r37826 --- ssts-web/src/main/webapp/disinfectsystem/test/takeVideoAndImg.js (.../takeVideoAndImg.js) (revision 33518) +++ ssts-web/src/main/webapp/disinfectsystem/test/takeVideoAndImg.js (.../takeVideoAndImg.js) (revision 37826) @@ -8,6 +8,10 @@ var base64DataBig2; var times = null; +//默认最高分辨率 +var maxWidth = 2048; +var maxHeight = 1152; + //js 获取当前时间 function getCurTime() { var date = new Date(); @@ -104,23 +108,23 @@ var cameraHeight = $(window).height()-$(".camera_footer").height()-20; var cameraWidth = parseInt(cameraHeight/480*640); var video = document.getElementById('video'); - var videoWidth = cameraWidth; - var videoHeight = cameraHeight; video.controls = false; video.muted = true; - video.width = videoWidth; - video.height = videoHeight; + video.width = cameraWidth; + video.height = cameraHeight; var videoObj = { - video:{ - width: {min: 720, ideal: 1920, max: 4096}, - height: {min: 480, ideal: 1080, max: 2160} - } + width: maxWidth, + height: maxHeight } MediaUtils.getUserMedia(videoObj, true, function (err, stream) { if (err) { throw err; } else { + var videoTrack = stream.getVideoTracks()[0]; + + // 获取摄像头的设置 + var settings = videoTrack.getSettings(); var options = { audioBitsPerSecond: 128000,// 音频码率 videoBitsPerSecond: 921600, // 视频码率 @@ -185,6 +189,81 @@ } }; +function reloadUserMedia(width, height, isFirst){ + var video = document.getElementById("video"); + var videoObj = { width: width, height: height } + + MediaUtils.getUserMedia(videoObj, false, function (err, stream) { + if (err) { + if(err == 'OverconstrainedError'){ + if(width == 2048){ + reloadUserMedia(1920, 1080, isFirst); + }else if(width == 1920){ + reloadUserMedia(1280, 720, isFirst); + }else if(width == 1280){ + reloadUserMedia(640, 480, isFirst); + }else if(width == 640){ + reloadUserMedia(320, 240, isFirst); + } + return + }else { + throw err; + } + } else { + video.srcObject = stream; + var videoTrack = stream.getVideoTracks()[0]; + // 获取摄像头的设置 + var settings = videoTrack.getSettings(); + maxWidth = settings.width; + maxHeight = settings.height; + console.log(maxWidth) + canvasBig.setAttribute('width',maxWidth); + canvasBig.setAttribute('height',maxHeight); + video.play(); + if(isFirst){ + var html = ''; + if(maxWidth == 2048){ + html += ''; + html += ''; + html += ''; + html += ''; + html += ''; + }else if(maxWidth == 1920){ + html += ''; + html += ''; + html += ''; + html += ''; + }else if(maxWidth == 1280){ + html += ''; + html += ''; + html += ''; + }else if(maxWidth == 640){ + html += ''; + html += ''; + }else if(maxWidth == 320){ + html += ''; + } + $('#changeResolution').html(html); + } + } + }); +} + +function changeResolutionValue(){ + var width = $('#changeResolution').val(); + if(width == '2048'){ + reloadUserMedia(2048,1152); + }else if(width == '1920'){ + reloadUserMedia(1920,1080); + }else if(width == '1280'){ + reloadUserMedia(1280,720); + }else if(width == '640'){ + reloadUserMedia(640,480); + }else if(width == '320'){ + reloadUserMedia(320,240); + } +} + // 这段代码主要是获取摄像头的视频流并显示在Video 签中 $(function () { var cameraHeight = $(window).height()-$(".camera_footer").height()-20; @@ -212,27 +291,10 @@ * getUserMedia API说明: * 当请求包含一个ideal(应用最理想的)值时,这个值有着更高的权重,意味着浏览器会先尝试找到最接近指定的理想值的设定或者摄像头(如果设备拥有不止一个摄像头) */ - var canvasWidth = cameraWidth*2; - var canvasHeight = cameraHeight*2; - canvasBig.setAttribute('width',canvasWidth); - canvasBig.setAttribute('height',canvasHeight); var contextBig = canvasBig.getContext("2d"); - var video = document.getElementById("video"); - var videoObj = { - video: { - width: {min: 720, ideal: 1920, max: 4096}, - height: {min: 480, ideal: 1080, max: 2160} - } - } - MediaUtils.getUserMedia(videoObj, false, function (err, stream) { - if (err) { - throw err; - } else { - video.srcObject = stream; - video.play(); - } - }); + reloadUserMedia(2048, 1152, true); + // 这个是拍照按钮的事件, $("#cameraBtn").click(function () { var lens = $(".spotlight_parent", window.opener.document).length;//子窗口给父窗口元素赋值 @@ -250,6 +312,8 @@ $("#canvas").hide(0).slideDown("normal"); $("#canvas").addClass("animate-bounce-up"); context.drawImage(video, 0, 0, imgWidth, imgHeight); + var canvasWidth = canvasBig.width; + var canvasHeight = canvasBig.height; contextBig.drawImage(video, 0, 0, canvasWidth, canvasHeight); /* 显示在多图片页面 */ var base64Data = canvas.toDataURL('image/jpeg', 1.0); Index: ssts-web/src/main/webapp/disinfectsystem/test/takeVideoAndImg.jsp =================================================================== diff -u -r33518 -r37826 --- ssts-web/src/main/webapp/disinfectsystem/test/takeVideoAndImg.jsp (.../takeVideoAndImg.jsp) (revision 33518) +++ ssts-web/src/main/webapp/disinfectsystem/test/takeVideoAndImg.jsp (.../takeVideoAndImg.jsp) (revision 37826) @@ -83,7 +83,12 @@ -
+