diff --git a/webrtc/RTCRtpSender-replaceTrack.https.html b/webrtc/RTCRtpSender-replaceTrack.https.html index 2f632e9fb4e6d7..a4b5548caaa67b 100644 --- a/webrtc/RTCRtpSender-replaceTrack.https.html +++ b/webrtc/RTCRtpSender-replaceTrack.https.html @@ -298,14 +298,16 @@ pc2.ontrack = (e) => { v.srcObject = new MediaStream([e.track]); }; - const metadataToBeLoaded = new Promise((resolve) => { - v.addEventListener('loadedmetadata', () => { + const metadataToBeLoadedAndPlaying = new Promise((resolve) => { + v.addEventListener('loadedmetadata', async () => { + await v.play(); + // note: calling v.play() is required in some browsers, not all. resolve(); }); }); exchangeIceCandidates(pc1, pc2); exchangeOfferAnswer(pc1, pc2); - await metadataToBeLoaded; + await metadataToBeLoadedAndPlaying; await detectSignal(t, v, 20); await sender.replaceTrack(track2); await detectSignal(t, v, 250); @@ -328,14 +330,16 @@ pc2.ontrack = (e) => { v.srcObject = new MediaStream([e.track]); }; - const metadataToBeLoaded = new Promise((resolve) => { - v.addEventListener('loadedmetadata', () => { + const metadataToBeLoadedAndPlaying = new Promise((resolve) => { + v.addEventListener('loadedmetadata', async () => { + await v.play(); + // note: calling v.play() is required in some browsers, not all. resolve(); }); }); exchangeIceCandidates(pc1, pc2); exchangeOfferAnswer(pc1, pc2); - await metadataToBeLoaded; + await metadataToBeLoadedAndPlaying; await detectSignal(t, v, 20); await sender.replaceTrack(null); await sender.replaceTrack(track2);