不支持IE浏览器(需要使用flash插件), 支持移动端, 未经过完全测试PC端使用的时候, HTML页面需要预留video标签, canvas标签移动端使用的时候, HTML页面需要预留file标签, canvas标签, img标签
(function (window, document) {

window.camera = {

init: function (options) {

/**

* options 属性示例

* videoID: video控件ID

* canvasID: canvas控件ID

* fileID: type为file的input控件的ID

* imageID: img控件的ID

* videoEnable: 是否启用摄像头

* audioEnable: 是否启用麦克风

* videoWidth: 视频宽度

* videoHeight: 视频高度

* photoWidth: 拍照宽度

* photoHeight: 拍照高度

*/


_options = options;

if (isMobileTerminal()) {

initMobileTerminal();

} else {

initComputerTerminal();

}

},

photo: function () {

if (isMobileTerminal()) {

photoMobileTerminal();

} else {

photoComputerTerminal();

}

}

};


let _options = null;


function initComputerTerminal() {

let videoDom = document.getElementById(_options.videoID);

if (!videoDom) {

alert('Video 控件无效');

return;

}


let canvasDom = document.getElementById(_options.canvasID);

if (!canvasDom) {

alert('Canvas 控件无效');

return;

}

canvasDom.setAttribute('width', _options.photoWidth + 'px');

canvasDom.setAttribute('height', _options.photoHeight + 'px');


let parameters = {

video: _options.videoEnable ? {

width: _options.videoWidth,

height: _options.videoHeight

} : false,

audio: _options.audioEnable

};


navigator.mediaDevices.getUserMedia(parameters)

.then(function (MediaStream) {

video.srcObject = MediaStream;

video.play();

}).catch(function (reason) {

console.log(reason);

alert(reason);

});

}


function photoComputerTerminal() {

let videoDom = document.getElementById(_options.videoID);

if (!videoDom) {

alert('Video 控件无效');

return;

}



let canvasDom = document.getElementById(_options.canvasID);

if (!canvasDom) {

alert('Canvas 控件无效');

return;

}


let context = canvasDom.getContext('2d');

context.drawImage(videoDom, 0, 0, _options.photoWidth, _options.photoHeight);

}


function initMobileTerminal() {

let fileDom = document.getElementById(_options.fileID);

if (!fileDom) {

alert('File 控件无效');

return;

}


fileDom.setAttribute('accept', 'image/*');

fileDom.setAttribute('capture', 'camera');


let canvasDom = document.getElementById(_options.canvasID);

if (!canvasDom) {

alert('Canvas 控件无效');

return;

}


canvasDom.setAttribute('width', _options.photoWidth + 'px');

canvasDom.setAttribute('height', _options.photoHeight + 'px');


let imageDom = document.getElementById(_options.imageID);

if (!imageDom) {

alert('Image 控件无效');

return;

}


fileDom.addEventListener('change', function () {

let file = fileDom.files[0];

let reader = new FileReader();

reader.onloadend = function () {

imageDom.setAttribute('src', reader.result);


setTimeout(function () {

let context = canvas.getContext("2d");

context.drawImage(imageDom, 0, 0, _options.photoWidth, _options.photoHeight);

}, 300);

};

reader.readAsDataURL(file);

});

}


function photoMobileTerminal() {

let fileDom = document.getElementById(_options.fileID);

fileDom.click();

}


function isMobileTerminal() {

if (/AppleWebKit.*Mobile/i.test(navigator.userAgent) || /Mobile/.test(navigator.userAgent) || /MIDP|SymbianOS|NOKIA|SAMSUNG|LG|NEC|TCL|Alcatel|BIRD|DBTEL|Dopod|PHILIPS|HAIER|LENOVO|MOT-|Nokia|SonyEricsson|SIE-|Amoi|ZTE/.test(navigator.userAgent))

return /Android|webOS|iPhone|iPod|BlackBerry/i.test(navigator.userAgent);

return false;

}
})(window, document);
(function (window, document) {

window.camera = {

init: function (options) {

/**

* options 属性示例

* videoID: video控件ID

* canvasID: canvas控件ID

* fileID: type为file的input控件的ID

* imageID: img控件的ID

* videoEnable: 是否启用摄像头

* audioEnable: 是否启用麦克风

* videoWidth: 视频宽度

* videoHeight: 视频高度

* photoWidth: 拍照宽度

* photoHeight: 拍照高度

*/


_options = options;

if (isMobileTerminal()) {

initMobileTerminal();

} else {

initComputerTerminal();

}

},

photo: function () {

if (isMobileTerminal()) {

photoMobileTerminal();

} else {

photoComputerTerminal();

}

}

};


let _options = null;


function initComputerTerminal() {

let videoDom = document.getElementById(_options.videoID);

if (!videoDom) {

alert('Video 控件无效');

return;

}


let canvasDom = document.getElementById(_options.canvasID);

if (!canvasDom) {

alert('Canvas 控件无效');

return;

}

canvasDom.setAttribute('width', _options.photoWidth + 'px');

canvasDom.setAttribute('height', _options.photoHeight + 'px');


let parameters = {

video: _options.videoEnable ? {

width: _options.videoWidth,

height: _options.videoHeight

} : false,

audio: _options.audioEnable

};


navigator.mediaDevices.getUserMedia(parameters)

.then(function (MediaStream) {

video.srcObject = MediaStream;

video.play();

}).catch(function (reason) {

console.log(reason);

alert(reason);

});

}


function photoComputerTerminal() {

let videoDom = document.getElementById(_options.videoID);

if (!videoDom) {

alert('Video 控件无效');

return;

}



let canvasDom = document.getElementById(_options.canvasID);

if (!canvasDom) {

alert('Canvas 控件无效');

return;

}


let context = canvasDom.getContext('2d');

context.drawImage(videoDom, 0, 0, _options.photoWidth, _options.photoHeight);

}


function initMobileTerminal() {

let fileDom = document.getElementById(_options.fileID);

if (!fileDom) {

alert('File 控件无效');

return;

}


fileDom.setAttribute('accept', 'image/*');

fileDom.setAttribute('capture', 'camera');


let canvasDom = document.getElementById(_options.canvasID);

if (!canvasDom) {

alert('Canvas 控件无效');

return;

}


canvasDom.setAttribute('width', _options.photoWidth + 'px');

canvasDom.setAttribute('height', _options.photoHeight + 'px');


let imageDom = document.getElementById(_options.imageID);

if (!imageDom) {

alert('Image 控件无效');

return;

}


fileDom.addEventListener('change', function () {

let file = fileDom.files[0];

let reader = new FileReader();

reader.onloadend = function () {

imageDom.setAttribute('src', reader.result);


setTimeout(function () {

let context = canvas.getContext("2d");

context.drawImage(imageDom, 0, 0, _options.photoWidth, _options.photoHeight);

}, 300);

};

reader.readAsDataURL(file);

});

}


function photoMobileTerminal() {

let fileDom = document.getElementById(_options.fileID);

fileDom.click();

}


function isMobileTerminal() {

if (/AppleWebKit.*Mobile/i.test(navigator.userAgent) || /Mobile/.test(navigator.userAgent) || /MIDP|SymbianOS|NOKIA|SAMSUNG|LG|NEC|TCL|Alcatel|BIRD|DBTEL|Dopod|PHILIPS|HAIER|LENOVO|MOT-|Nokia|SonyEricsson|SIE-|Amoi|ZTE/.test(navigator.userAgent))

return /Android|webOS|iPhone|iPod|BlackBerry/i.test(navigator.userAgent);

return false;

}
})(window, document);以上就是js调用网络摄像头的方法的详细内容,关于js调用网络摄像头的资料请关注其它相关文章!