- const stream = await navigator.mediaDevices.getUserMedia({ audio: true });
- mediaRecorder = new MediaRecorder(stream);
+ microphoneStream = await navigator.mediaDevices.getUserMedia({ audio: true });
+ systemStream = await navigator.mediaDevices.getDisplayMedia({
+ video: true,
+ audio: true
+ });
+
+ console.log(systemStream.getTracks());
+
+ if (systemStream.getAudioTracks().length === 0) {
+ console.error( "No screen share audio track. Microphone only." );
+ systemStream.getTracks().forEach((track) => track.stop());
+ systemStream = null;
+ }
+
+ audioContext = new AudioContext();
+ mixedDestination = audioContext.createMediaStreamDestination();
+
+ const micSource = audioContext.createMediaStreamSource(microphoneStream);
+ micSource.connect(mixedDestination);
+ if (systemStream) {
+ const systemSource = audioContext.createMediaStreamSource(systemStream);
+ systemSource.connect(mixedDestination);
+ }
+
+ mixedAudioStream = mixedDestination.stream;
+ mediaRecorder = new MediaRecorder(mixedAudioStream);