| }, | }, | ||||
| getSelectedMedia: async () => { | getSelectedMedia: async () => { | ||||
| const stream = new MediaStream() | const stream = new MediaStream() | ||||
| const addTrack = stream.addTrack.bind(stream) | |||||
| const muted = document.querySelector('#mute-check').checked | const muted = document.querySelector('#mute-check').checked | ||||
| if(!muted) { | if(!muted) { | ||||
| const audio = Media.audioDefaults | const audio = Media.audioDefaults | ||||
| const audioStream = await navigator.mediaDevices.getUserMedia({audio}) | |||||
| audioStream.getAudioTracks().forEach(track => stream.addTrack(track)) | |||||
| await navigator.mediaDevices.getUserMedia({audio}) | |||||
| .then(s => s.getAudioTracks().forEach(addTrack)) | |||||
| .catch(e => console.error(e)) | |||||
| } | } | ||||
| const source = document.querySelector('#media-source').value | const source = document.querySelector('#media-source').value | ||||
| if(source === 'camera') { | if(source === 'camera') { | ||||
| const video = {width: {ideal: 320}, facingMode: 'user', frameRate: 26} | const video = {width: {ideal: 320}, facingMode: 'user', frameRate: 26} | ||||
| const videoStream = await navigator.mediaDevices.getUserMedia({video}) | |||||
| videoStream.getVideoTracks().forEach(track => stream.addTrack(track)) | |||||
| await navigator.mediaDevices.getUserMedia({video}) | |||||
| .then(s => s.getVideoTracks().forEach(addTrack)) | |||||
| .catch(e => console.error(e)) | |||||
| } | } | ||||
| if(source === 'screen' && navigator.mediaDevices.getDisplayMedia) { | if(source === 'screen' && navigator.mediaDevices.getDisplayMedia) { | ||||
| const videoStream = await navigator.mediaDevices.getDisplayMedia() | |||||
| videoStream.getVideoTracks().forEach(track => stream.addTrack(track)) | |||||
| await navigator.mediaDevices.getDisplayMedia() | |||||
| .then(s => s.getVideoTracks().forEach(addTrack)) | |||||
| .catch(e => console.error(e)) | |||||
| } | } | ||||
| return stream | return stream |