I manage to achieve it using the below code. This logic would help us play a .wav audio file to peer/remote connection by replacing microphone input
outgoingSession.stateChange.addListener((newState) => {
console.log(`Session state changed to ${newState}`);
switch (newState) {
case SessionState.Establishing:
// Session is establishing.
break;
case SessionState.Established: {
const context = new AudioContext();
const gainNode = context.createGain();
gainNode.connect(context.destination);
// don't play for self
gainNode.gain.value = 0;
let audioFile = fetch("sample.wav").then(response => response.arrayBuffer()).then(buffer => context.decodeAudioData(buffer)).then(buffer => {
let track = context.createBufferSource();
track.buffer = buffer;
track.start(0, 0 / 1000);
track.connect(gainNode);
let destination = context.createMediaStreamDestination();
track.connect(destination);
track.connect(context.destination);
outgoingSession.sessionDescriptionHandler.setLocalMediaStream(destination.stream);
this.setupRemoteMedia(outgoingSession);
break;
}
case SessionState.Terminated:
this.cleanupMedia();
// Session has terminated.
break;
default:
break;
}
})