😊
MediaStreamから音声ストリームを取り出して左右に振り分けたストリームを作成する
WebRTCなどで利用するMediaStream
から音声ストリームを取り出して左右(LR)に振り分けたストリームを作成するコード(スニペット)。
function getAudioStream(stream, channel){
const audioCtx = new AudioContext();
const dest = audioCtx.createMediaStreamDestination();
const merger = audioCtx.createChannelMerger(2);
stream.getAudioTracks().forEach((track, index) => {
const stream = new MediaStream([track]);
const mutedAudio = new Audio();
mutedAudio.muted = true;
mutedAudio.srcObject = stream;
mutedAudio.play();
const source = audioCtx.createMediaStreamSource(stream);
source.connect(merger, 0, channel);
})
merger.connect(dest);
return dest.stream;
}
channel = 0 で左(Left)に振る
getAudioStream(stream, 0)
channel = 1 で右(Right)に振る
getAudioStream(stream, 1)
もっとスマートな方法があるかも?
参考
以下のサイトを参考にしました。
Discussion