私はweb-rtcについて学びます、それはあなたがビデオカメラをキャプチャできると言います、私は demo を使用しました、これはうまくいきましたchromeのみ..
firefoxで開くと、メッセージ"getUserMedia() not supported in your browser."
が表示されますが、これを開くと、もう一方のメッセージが表示されます HTML5-rocks-demo
100%働きました。 getusermedia()
が機能する変更またはプラグイン、または見逃しているもの。
問題は、接頭辞付きの関数名だけではありません。提供されるストリームは、ブラウザごとに動作が異なります。ここでは、その手順を説明します。
video
という変数にビデオ要素が既に設定されていると仮定します。
//I don't usually like to overwrite publicly accessible variables, but that's just me
var getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia || navigator.mozGetUserMedia;
var cameraStream;
getUserMedia.call(navigator, {
video: true,
audio: true //optional
}, function (stream) {
/*
Here's where you handle the stream differently. Chrome needs to convert the stream
to an object URL, but Firefox's stream already is one.
*/
if (window.webkitURL) {
video.src = window.webkitURL.createObjectURL(stream);
} else {
video.src = stream;
}
//save it for later
cameraStream = stream;
video.play();
});
これはFirefoxの場合、ChromeとOpera。IEとSafariはまだサポートしていません。
気になる可能性があるもう1つの面倒なことは、Webページを離れる前にカメラの使用を停止する場合に、カメラの電源を切る方法です。この機能を使用します。
function stopWebCam() {
if (video) {
video.pause();
video.src = '';
video.load();
}
if (cameraStream && cameraStream.stop) {
cameraStream.stop();
}
stream = null;
}
Safari 11がリリースされているので、これはどこでも動作します(Chrome、Firefox、Safari 11の最新バージョンでテスト済み):
var constraints = {audio: false, video: true};
var video = document.querySelector("video");
function successCallback(stream) {
video.srcObject = stream;
video.play();
}
function errorCallback(error) {
console.log("navigator.getUserMedia error: ", error);
}
navigator.mediaDevices.getUserMedia(constraints)
.then(successCallback)
.catch(errorCallback);
navigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia || navigator.mozGetUserMedia;
var constraints = {audio: false, video: true};
var video = document.querySelector("video");
function successCallback(stream) {
window.stream = stream; // stream available to console
if (window.URL) {
video.src = window.URL.createObjectURL(stream);
} else {
video.src = stream;
}
}
function errorCallback(error){
console.log("navigator.getUserMedia error: ", error);
}
navigator.getUserMedia(constraints, successCallback, errorCallback);
getUserMedia
の前にwebkit-またはmoz-を付ける必要があります。最初の例には、webkit-というプレフィックスのみが付いています。そのため、Firexoxでは動作せず、ChromeとSafariのみです。
コード例には接頭辞が表示されていません...
プレフィックスは次の方法で実行できます。
navigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia || navigator.mozGetUserMedia;