blob: 7e4617bfe8968b7e97381b2223b7a64059584014 [file] [log] [blame]
<!DOCTYPE html>
<html>
<head>
<script>
let streamPromise = Promise.resolve();
function promptForCapture()
{
streamPromise = navigator.mediaDevices.enumerateDevices().then(() => {
return navigator.mediaDevices.getUserMedia({ audio: false, video: true })
});
streamPromise.then((stream) => {
stream = s;
video.srcObject = stream;
console.log("Got user media");
}).catch((error) => console.log(`Failed with error: ${error}`));
}
function stop(kind)
{
streamPromise.then((stream) => {
let activeTracks = [];
stream.getTracks().forEach(track => {
if (!kind || track.kind == kind)
track.stop();
else
activeTracks.push(track);
});
if (!activeTracks.length) {
streamPromiseDidResolve = false;
video.srcObject = null;
}
});
}
let streamPromiseDidResolve = false;
function haveStream()
{
// Our caller polls repeatedly until our promise resolves.
streamPromise.then((stream) => streamPromiseDidResolve = !!stream);
return streamPromiseDidResolve;
}
function doMultipleGetUserMediaSynchronously()
{
navigator.mediaDevices.getUserMedia({video: true});
navigator.mediaDevices.getUserMedia({video: true});
navigator.mediaDevices.getUserMedia({video: true});
// This one should prompt.
navigator.mediaDevices.getUserMedia({audio: true});
navigator.mediaDevices.getUserMedia({audio: true});
navigator.mediaDevices.getUserMedia({audio: true});
navigator.mediaDevices.getUserMedia({audio: true, video: true});
}
function captureAudio()
{
streamPromise = navigator.mediaDevices.getUserMedia({audio: true});
}
function captureAudioAndVideo()
{
streamPromise = navigator.mediaDevices.getUserMedia({audio: true, video: true});
}
</script>
<head>
<body onload="promptForCapture()">
<video id="video" controls></video>
<p>
<button onclick="stop()">Stop</button>
</p>
</body>
</html>