diff --git a/lib/media/media_source_engine.js b/lib/media/media_source_engine.js index cd9881ac6b..e340a38f49 100644 --- a/lib/media/media_source_engine.js +++ b/lib/media/media_source_engine.js @@ -1839,12 +1839,17 @@ shaka.media.MediaSourceEngine = class { const totalOfBuffers = streamsByType.size; let numberOfSourceBufferAdded = 0; - this.eventManager_.listen(sourceBuffers, 'addsourcebuffer', (event) => { + const onSourceBufferAdded = () => { numberOfSourceBufferAdded++; if (numberOfSourceBufferAdded === totalOfBuffers) { sourceBufferAdded.resolve(); + this.eventManager_.unlisten(sourceBuffers, 'addsourcebuffer', + onSourceBufferAdded); } - }); + }; + + this.eventManager_.listen(sourceBuffers, 'addsourcebuffer', + onSourceBufferAdded); for (const contentType of streamsByType.keys()) { const stream = streamsByType.get(contentType);