2017-11-13 18 views
1

인터넷에 안내 된대로 mutedplaysinline 속성을 내 비디오 요소에 추가했습니다. 나는 아직도 Safari 11에서 비전을 얻지 만이 오류 만 있습니다. 내 비디오 요소에서 autoplay도 삭제하려고했습니다.Safari getUserMedia() 처리되지 않은 약속 거부 거부

Unhandled Promise Rejection: TypeError: Type error

는 사파리 11 일 webrtc를 얻기 위해 또는 내가이 시간을 잃고 있어요 수 있습니까?

getUserMedia()은 다른 모든 브라우저 (Chrome, Firefox, Edge, Opera)에서 작동합니다.

감사합니다.

내가이 심을 사용 https://github.com/addyosmani/getUserMedia.js/blob/gh-pages/lib/getUserMedia.js이 성공 콜백 콜백에서 다음

,

var video = camOptions.videoEl; //the video element 

var vendorURL = window.URL || window.webkitURL; 

try { 
    video.src = vendorURL ? vendorURL.createObjectURL(stream) : stream; 
} 
catch(err) { 
    //HERE IS THE TYPE ERROR IN SAFARI 
} 

답변

2

을 반환 GetUserMedia를 호출 할 때 잘못된 제약 전달되기 때문에 TypeError 당신이되어지고있다 . 이 오류는 장치 (브라우저)에서 재 코딩되지 않거나 유효하지 않은 값을 가진 제한을 전달할 때 발생합니다.

또한 video.srcObject을 사용해야하며 video.src은 사용하지 않아야합니다.

다음은 Safari의 작동 예제입니다. 이 기능은 iOS 11 이상에서만 작동합니다 :

// Get the <video> element 
var video = document.getElementById('vid'); 

// Default constrains 
var constraints = { audio: true, video: true }; 

navigator.mediaDevices.getUserMedia(constraints).then(handleSuccess); 

var handleSuccess = function (stream) { 
    video.srcObject = stream; 
};