diff --git a/src/adapters/WHEPAdapter.ts b/src/adapters/WHEPAdapter.ts index e037889..2075a34 100644 --- a/src/adapters/WHEPAdapter.ts +++ b/src/adapters/WHEPAdapter.ts @@ -94,7 +94,7 @@ export class WHEPAdapter implements Adapter { if (opusCodecId !== null) { offer.sdp = offer.sdp.replace( 'opus/48000/2\r\n', - 'opus/48000/2\r\na=rtcp-fb:" + opusCodecId[1] + " nack\r\n' + 'opus/48000/2\r\na=rtcp-fb:' + opusCodecId[1] + ' nack\r\n' ); } } diff --git a/src/index.ts b/src/index.ts index 81375eb..9470a27 100644 --- a/src/index.ts +++ b/src/index.ts @@ -196,7 +196,7 @@ export class WebRTCPlayer extends EventEmitter { private onTrack(event: RTCTrackEvent) { for (const stream of event.streams) { - if (stream.id === 'feedbackvideomslabel' || this.videoElement.srcObject) { + if (stream.id === 'feedbackvideomslabel') { continue; } @@ -207,7 +207,16 @@ export class WebRTCPlayer extends EventEmitter { ' video ' + stream.getVideoTracks().length ); - this.videoElement.srcObject = stream; + + // Create a new MediaStream if we don't have one + if (!this.videoElement.srcObject) { + this.videoElement.srcObject = new MediaStream(); + } + + // We might have one stream of both audio and video, or separate streams for audio and video + for (const track of stream.getTracks()) { + (this.videoElement.srcObject as MediaStream).addTrack(track); + } } }