想在Electron中实现录制当前窗口的视频+系统声音+麦克风声音。试了N种方式,总是不能同时获取系统声音和麦克风声音。
有没有做过类似程序的朋友,给个思路。先谢过了。
想在Electron中实现录制当前窗口的视频+系统声音+麦克风声音。试了N种方式,总是不能同时获取系统声音和麦克风声音。
有没有做过类似程序的朋友,给个思路。先谢过了。
const { remote } = require('electron');
......
stream = await navigator.mediaDevices.getUserMedia({
// 桌面的声音
audio: {
mandatory: {
chromeMediaSource: 'desktop',
}
},
// 获取指定窗口视频
video: {
mandatory: {
chromeMediaSource: 'desktop',
chromeMediaSourceId: remote.getCurrentWindow().getMediaSourceId(),
}
}
})
// 使用Web Audio API来捕获系统声音和麦克风声音,将它们合并到同一个MediaStream中。
const audioCtx = new (window.AudioContext || window.webkitAudioContext)();
const systemSoundSource = audioCtx.createMediaStreamSource(stream);
const systemSoundDestination = audioCtx.createMediaStreamDestination();
systemSoundSource.connect(systemSoundDestination);
const micStream = await navigator.mediaDevices.getUserMedia({ audio: true });
const micSoundSource = audioCtx.createMediaStreamSource(micStream);
micSoundSource.connect(systemSoundDestination);
// 合并音频流与视频流
const combinedSource = new MediaStream([...stream.getVideoTracks(), ...systemSoundDestination.stream.getAudioTracks()]);
//开始录制
recorder = new MediaRecorder(combinedSource, {
mimeType: 'video/webm;codecs=vp9,opus',
videoBitsPerSecond: 1.5e6,
})
......
实测可以哦!
10 回答11.1k 阅读
6 回答3k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
3 回答2.3k 阅读✓ 已解决
3 回答2.1k 阅读✓ 已解决