add audio track to recorded video

This commit is contained in:
2022-04-24 23:17:58 +02:00
parent 2bf8938183
commit 4dd8c3b029
2 changed files with 18 additions and 4 deletions

View File

@@ -90,6 +90,9 @@ export default function MicroW8(screen, config = {}) {
keyboardElement.onkeydown = keyHandler;
keyboardElement.onkeyup = keyHandler;
}
let audioContext;
let audioNode;
async function runModule(data, keepUrl) {
if (cancelFunction) {
@@ -97,7 +100,7 @@ export default function MicroW8(screen, config = {}) {
cancelFunction = null;
}
let audioContext = new AudioContext({sampleRate: 44100});
audioContext = new AudioContext({sampleRate: 44100});
let keepRunning = true;
let abortController = new AbortController();
cancelFunction = () => {
@@ -114,7 +117,7 @@ export default function MicroW8(screen, config = {}) {
}
await audioContext.audioWorklet.addModule(audioWorkletUrl);
let audioNode = new AudioNode(audioContext);
audioNode = new AudioNode(audioContext);
let audioReadyFlags = 0;
let audioReadyResolve;
@@ -334,14 +337,25 @@ export default function MicroW8(screen, config = {}) {
let videoRecorder;
let videoStartTime;
let videoAudioSourceNode;
let videoAudioStreamNode;
function recordVideo() {
if(videoRecorder) {
videoRecorder.stop();
videoRecorder = null;
videoAudioSourceNode.disconnect(videoAudioStreamNode);
videoAudioSourceNode = null;
videoAudioStreamNode = null;
return;
}
let stream = screen.captureStream();
videoAudioStreamNode = audioContext.createMediaStreamDestination();
videoAudioSourceNode = audioNode;
audioNode.connect(videoAudioStreamNode);
stream.addTrack(videoAudioStreamNode.stream.getAudioTracks()[0]);
videoRecorder = new MediaRecorder(screen.captureStream(), {
videoRecorder = new MediaRecorder(stream, {
mimeType: 'video/webm',
videoBitsPerSecond: 25000000
});