ios上的safari如何調用攝像頭調用攝像頭來獲取視頻流呢?
因為我要做webrtc的開發,safari支持webrtc,但是不支持getUserMedia方法,我想知道ios上的safari如何調用攝像頭
ios11已經支持webrtc了,經實踐,safari能成功調起攝像頭進行實時通信。
不是用Navigator.getUserMedia(),而是用MediaDevices.getUserMedia()介面。
否則會報錯

參考jeromeetienne/AR.js的代碼
function initSourceWebcam(){
// init default value
var onError = function(error){
alert(Webcam Error
Name: +error.name +
Message: +error.message);
}
var domElement = document.createElement(video);
domElement.setAttribute(autoplay, );
domElement.setAttribute(muted, );
domElement.setAttribute(playsinline, );
domElement.style.width = document.documentElement.clientWidth + px;
domElement.style.height = document.documentElement.clientHeight + px;
// check API is available
if(navigator.mediaDevices === undefined || navigator.mediaDevices.enumerateDevices === undefined || navigator.mediaDevices.getUserMedia === undefined){
if(navigator.mediaDevices === undefined){
var fctName = navigator.mediaDevices;
}
else if(navigator.mediaDevices.enumerateDevices === undefined){
var fctName = navigator.mediaDevices.enumerateDevices;
}
else if(navigator.mediaDevices.getUserMedia === undefined){
var fctName = navigator.mediaDevices.getUserMedia;
}
else{
console.assert(false);
}
onError({
name: ,
message: WebRTC issue-! +fctName+ not present in your browser
});
return null;
}
// get available devices
navigator.mediaDevices.enumerateDevices().then(function(devices){
var userMediaConstraints = {
audio: false,
video: {
facingMode: environment,
}
}
// get a device which satisfy the constraints
navigator.mediaDevices.getUserMedia(userMediaConstraints).then(function success(stream){
domElement.srcObject = stream;
document.body.addEventListener(click, function(){
domElement.play();
});
// wait until the video stream is ready
var interval = setInterval(function(){
if(!domElement.videoWidth){
return;
}
stage.appendChild(domElement);
clearInterval(interval);
}, 1000/50);
}).catch(function(error){
onError({
name: error.name,
message: error.message
});
});
}).catch(function(error){
onError({
message: error.message
});
});
return domElement;
}
目前iphone的微信和QQ內置瀏覽器還不支持navigator.mediaDevices
現在是沒有辦法的:Is WebRTC ready yet?
Safari 一列是全紅。
StackOverflow( WebApp using webRTC for cross-platform videochat in iOS Browser and Android Chrome ) 有人說快了,有可能 2017 H1 就有新進展。
---------以下為更新內容--------
特大好消息,特大好消息,iOS11/high sierra支持了!
沒有辦法,不支持就是不支持,無解
目前ios11.2隻有safari可以,其他的瀏覽器比如:QQ、UC、Chrome、Firefox、Edge、海豚、Opera、夸克、搜狗、百度,都不行。
Safari不支持,在iOS上的別的瀏覽器也別想了,不給你開許可權!
推薦閱讀:
※如何快速開發多端應用?
※深入剖析WebSocket的原理
※有HTML / XML這麼好的前端及UI解決方案,微軟為什麼還要繼續推WPF?
※如何開發一款可視化編程工具(1)
※《css權威指南》與《html5與css3權威指南》那個更權威更先進?
TAG:HTML5 | SafariforiOS | WebRTC |
