作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想进行录音,我从不同的 mediaStream 对象(其中一些,远程)中获取多个音轨。使用 getAudioTracks() 方法并使用 addTrack() 将它们添加到 mediaStream 对象。在将最后一个对象作为 mediaRecorder 的参数传递的那一刻,我意识到它只记录位于位置 [0] 的音轨。这让我明白 mediaRecorder 能够按类型记录轨道,有没有办法将这些轨道合并为一个以使用 mediaRecorder 正确记录它们?如果可能并且如果存在,我将不胜感激任何解释这一点的页面
最佳答案
我为此奋斗了一段时间,花了很长时间才意识到 MediaStream 只记录了我添加的第一首轨道。我的解决方案是获取 Web Audio API涉及。此示例使用两个 UserMedia(例如麦克风和立体声混音)并将它们合并。 UserMedia 由其deviceId
标识。如您使用 await navigator.mediaDevices.enumerateDevices()
时所示.
总之:
AudioContext()
navigator.mediaDevices.getUserMedia()
获取您的媒体const audioContext = new AudioContext();
audioParams_01 = {
deviceId: "default",
}
audioParams_02 = {
deviceId: "7079081697e1bb3596fad96a1410ef3de71d8ccffa419f4a5f75534c73dd16b5",
}
mediaStream_01 = await navigator.mediaDevices.getUserMedia({ audio: audioParams_01 });
mediaStream_02 = await navigator.mediaDevices.getUserMedia({ audio: audioParams_02 });
audioIn_01 = audioContext.createMediaStreamSource(mediaStream_01);
audioIn_02 = audioContext.createMediaStreamSource(mediaStream_02);
dest = audioContext.createMediaStreamDestination();
audioIn_01.connect(dest);
audioIn_02.connect(dest);
const recorder = new MediaRecorder(dest.stream);
chunks = [];
recorder.onstart = async (event) => {
// your code here
}
recorder.ondataavailable = (event) => {
chunks.push(event.data);
}
recorder.onstop = async (event) => {
// your code here
}
关于javascript - 如何为 mediaRecorder API 将多个音轨合并为一个?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55165335/
我是一名优秀的程序员,十分优秀!