39 lines
No EOL
1.1 KiB
TypeScript
39 lines
No EOL
1.1 KiB
TypeScript
const original = navigator.mediaDevices.getDisplayMedia;
|
|
async function getVirtmic() {
|
|
const getAudioDevice = async (deviceName: string|undefined) => {;
|
|
let devices = await navigator.mediaDevices.enumerateDevices();
|
|
let audioDevice = devices.find(({
|
|
label
|
|
}) => label === deviceName);
|
|
console.log(audioDevice);
|
|
return audioDevice;
|
|
}
|
|
|
|
var id: string|undefined;
|
|
try {
|
|
let myDiscordAudioSink = await getAudioDevice('virtmic');
|
|
id = myDiscordAudioSink?.deviceId;
|
|
console.log(id, "connected");
|
|
}
|
|
catch (error) {
|
|
id = 'default';
|
|
console.log("virtmic failed to connect");
|
|
}
|
|
return id;
|
|
};
|
|
navigator.mediaDevices.getDisplayMedia = async function() {
|
|
const id = await getVirtmic();
|
|
const stream = await original.apply(this);
|
|
|
|
const audio = await navigator.mediaDevices.getUserMedia({
|
|
audio: {
|
|
deviceId: {
|
|
exact: id
|
|
},
|
|
autoGainControl: false,
|
|
echoCancellation: false,
|
|
noiseSuppression: false
|
|
} });
|
|
audio.getAudioTracks().forEach(t => stream.addTrack(t));
|
|
return stream;
|
|
} |