body: make mic optional (#29746)

Only request for media that is available
pull/29747/head
Kacper Rączy 2 years ago committed by GitHub
parent 05993f50df
commit 92a4c2f741
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 60
      tools/bodyteleop/static/js/webrtc.js

@ -108,37 +108,47 @@ export function createDummyVideoTrack() {
export function start(pc, dc) { export function start(pc, dc) {
pc = createPeerConnection(pc); pc = createPeerConnection(pc);
if (constraints.audio || constraints.video) { // add audio track
// add audio track navigator.mediaDevices.enumerateDevices()
navigator.mediaDevices.getUserMedia(constraints).then(function(stream) { .then(function(devices) {
stream.getTracks().forEach(function(track) { const hasAudioInput = devices.find((device) => { device.kind === "audioinput" });
pc.addTrack(track, stream); var modifiedConstraints = {};
// only audio? modifiedConstraints.video = constraints.video;
// if (track.kind === 'audio'){ modifiedConstraints.audio = hasAudioInput ? constraints.audio : false;
// pc.addTrack(track, stream);
// } return Promise.resolve(modifiedConstraints);
}); })
return negotiate(pc); .then(function(constraints) {
}, function(err) { if (constraints.audio || constraints.video) {
alert('Could not acquire media: ' + err); return navigator.mediaDevices.getUserMedia(constraints);
}); } else{
return Promise.resolve(null);
// add a fake video? }
// const dummyVideoTrack = createDummyVideoTrack(); })
// const dummyMediaStream = new MediaStream(); .then(function(stream) {
// dummyMediaStream.addTrack(dummyVideoTrack); if (stream) {
// pc.addTrack(dummyVideoTrack, dummyMediaStream); stream.getTracks().forEach(function(track) {
pc.addTrack(track, stream);
} else { });
negotiate(pc); }
}
return negotiate(pc);
})
.catch(function(err) {
alert('Could not acquire media: ' + err);
});
// add a fake video?
// const dummyVideoTrack = createDummyVideoTrack();
// const dummyMediaStream = new MediaStream();
// dummyMediaStream.addTrack(dummyVideoTrack);
// pc.addTrack(dummyVideoTrack, dummyMediaStream);
// setInterval(() => {pc.getStats(null).then((stats) => {stats.forEach((report) => console.log(report))})}, 10000) // setInterval(() => {pc.getStats(null).then((stats) => {stats.forEach((report) => console.log(report))})}, 10000)
// var video = document.querySelector('video'); // var video = document.querySelector('video');
// var print = function (e, f){console.log(e, f); video.requestVideoFrameCallback(print);}; // var print = function (e, f){console.log(e, f); video.requestVideoFrameCallback(print);};
// video.requestVideoFrameCallback(print); // video.requestVideoFrameCallback(print);
var parameters = {"ordered": true}; var parameters = {"ordered": true};
dc = pc.createDataChannel('data', parameters); dc = pc.createDataChannel('data', parameters);
dc.onclose = function() { dc.onclose = function() {

Loading…
Cancel
Save