我试图用javascript函数关闭网络摄像头(它必须在收到一些Ajax响应后关闭),但似乎无法关闭而不刷新页面.关闭它的所有方法,如video.src = null,video.pause ...等在任何浏览器中根本不起作用.唯一的方法是关闭在成功函数上作为参数传递的流,所以有什么方法可以在函数成功之外使用这个对象来关闭网络摄像头?
我知道之前已经问过这个问题(使用getUserMedia和RTCPeerConnection Chrome 25停止/关闭网络摄像头),但我的需求不同,所以我需要一些帮助来解决这个问题
谢谢!
编辑:我的工作代码试图关闭网络摄像头:
navigator.getUserMedia = navigator.getUserMedia || navigator.mozGetUserMedia || navigator.webkitGetUserMedia || navigator.msGetUserMedia;
if(navigator.getUserMedia){
var video_constraints = {
mandatory: {
maxHeight: 480,
maxWidth: 640
},
optional: []
};
var self = this;
self.navigator.getUserMedia({
audio: false,
video: video_constraints
}, self.onSuccess, onError);
}
else{
alert('An error has occurred starting the webcam stream, please revise the instructions to fix the problem');
}
function onSuccess(stream) {
var video = document.getElementById('webcam');
if(navigator.webkitGetUserMedia || navigator.mozGetUserMedia){
video.src = window.URL.createObjectURL(stream);
} …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用WebRTC的getUserMedia功能从用户的摄像头拍摄视频流中的快照.问题是我想分别在Firefox 19.02,Opera 12.14和Chrome 25.0.1364.172版本中使用640 X 480的分辨率,但我无法在Firefox和Opera中使用此分辨率.当我尝试时,图像显示从下方切割640 x 360分辨率.无论如何,如果我尝试更改Chrome中的分辨率,它不起作用,也不会比640 X 480更高的分辨率.是否有人有同样的问题?我想知道这是一个错误还是什么,但我还没有看到任何相关的信息.这是我的代码,我已经在许多方面证明了这样的最小宽度和高度的限制,但它不起作用:
剧本:
navigator.getUserMedia = navigator.getUserMedia || navigator.mozGetUserMedia || navigator.webkitGetUserMedia || navigator.msGetUserMedia;
if(navigator.getUserMedia){
navigator.getUserMedia({
video: true
}, onSuccess, onError);
}
else{
alert('An error has occurred starting the webcam stream, please revise the instructions to fix the problem');
}
function onSuccess(stream) {
var video = document.getElementById('webcam');
if(navigator.webkitGetUserMedia || navigator.mozGetUserMedia){
video.src = window.URL.createObjectURL(stream);
}
else if(navigator.msGetUserMedia){
//future implementation over internet explorer
}
else{
video.src = stream;
}
video.play();
}
function onError() {
alert('There has …Run Code Online (Sandbox Code Playgroud)