我使用geUserMedia()从网络摄像头Intro中捕获图像。
我得到的最佳分辨率是 640 X 480 ,但我有高清网络摄像头 录制 1280 X 720 的视频, 拍照 2592 X 1944 。
如何拍摄高分辨率照片?
这是一个代码示例。它不关心画布大小:
<video autoplay id="vid" style="display:none;"></video>
<canvas id="canvas" width="1280" height="720" style="border:1px solid #d3d3d3;"></canvas><br>
<button onclick="snapshot()">Take Picture</button>
<script type="text/javascript">
var video = document.querySelector("#vid");
var canvas = document.querySelector('#canvas');
var ctx = canvas.getContext('2d');
var localMediaStream = null;
var onCameraFail = function (e) {
console.log('Camera did not work.', e);
};
function snapshot() {
if (localMediaStream) {
ctx.drawImage(video, 0, 0);
}
}
navigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia || navigator.mozGetUserMedia || navigator.msGetUserMedia;
window.URL = window.URL || window.webkitURL;
navigator.getUserMedia({video:true}, function (stream) {
video.src = window.URL.createObjectURL(stream);
localMediaStream = stream;
}, onCameraFail);
</script>
答案 0 :(得分:7)
http://www.html5rocks.com/en/tutorials/getusermedia/intro/
=&GT;设置媒体约束(分辨率,高度,宽度)
答案 1 :(得分:4)
据我所知,无论你有什么相机,WebRTC目前仅限于640x480。希望这会很快改变。
答案 2 :(得分:1)
对于像我这样发现自己的人,http://webrtchacks.com/video-constraints-2/有一个有用的更新。
查看原始问题,请注意,据我所知,使用WebRTC拍摄静态照片实际上是从视频输入中提取静止帧,因此您将始终受到设备视频分辨率的限制,即使它能够捕捉更高分辨率的静止图像。
答案 3 :(得分:0)
我使用以下约束来设置一系列分辨率,但快照似乎与视频大小有关
var constraints = {
audio: {deviceId: undefined},
video: {
deviceId: vid ? {exact: vid} : undefined
, width: { min: 1280, max: 1560 }
, height: { min: 720, max: 1440 }
}
};
navigator.mediaDevices.getUserMedia(constraints).then(gotStream).catch(handleError)