WebRTC getUserMedia
An example of a WebRTC getUserMedia implementation
by grano
HTML
<video id="videoLocal" autoplay width=200></video>
<div id="vinfo"></div>
<button onclick="start()">start</button>
<button onclick="stop()">stop</button>
<!-- <button onclick="test()">Test adapter.js</button> -->
<script src="https://webrtc.github.io/adapter/adapter-latest.js"></script>
JavaScript
let analyser;
var streamObj = null;
var videoTag = document.getElementById('videoLocal');
function start() {
var audioContext = new AudioContext();
analyser = audioContext.createAnalyser();
analyser.fftSize = 2048;
var constraints = {
audio: true,
// video: {
// width: {exact: 1280},
// height: {exact: 720}
// }
};
navigator.mediaDevices.getUserMedia(constraints)
.then(function(stream) {
const src = audioContext.createMediaStreamSource(stream);
src.connect(analyser);
analyser.connect(audioContext.destination);
logStream(stream);
update();
/* videoTag.addEventListener("loadedmetadata", function(e) {
console.log('loadedmetadata');
});
videoTag.addEventListener("loadeddata", function(e) {
console.log('loadeddata');
update(vinfo, videoTag.videoWidth + " x " + videoTag.videoHeight);
});
*/
})
/* .catch(function(error) {
if (error.name === 'ConstraintNotSatisfiedError') {
console.error('The resolution ' + constraints.video.width.exact + 'x' +
constraints.video.width.exact + ' px is not supported by your device.');
} else if (error.name === 'PermissionDeniedError') {
console.error('Permissions have not been granted to use your camera and ' +
'microphone, you need to allow the page access to your devices in ' +
'order for the demo to work.');
} else {
console.error('getUserMedia error: ' + error.name, error);
}
});
*/
}
function logStream(stream) {
var tracks = stream.getTracks();
console.log('stream ID:', stream.id);
for (var i = 0; i < tracks.length; i++) {
console.log("track ID:", tracks[i].id, "track label:", tracks[i].label, "kind:", tracks[i].kind);
}
}
function stop() {
//streamObj.stop();
var tracks = streamObj.getTracks();
for (var i = 0; i < tracks.length; i++) {
tracks[i].stop();
}
videoTag.srcObject = null;...