diff --git a/src/demux/transmuxer-worker.ts b/src/demux/transmuxer-worker.ts index 53a9d131d7a..91af57de223 100644 --- a/src/demux/transmuxer-worker.ts +++ b/src/demux/transmuxer-worker.ts @@ -30,8 +30,12 @@ function startWorker() { if (data.cmd === 'init') { const config = JSON.parse(data.config); const observer = new EventEmitter(); - observer.on(Events.FRAG_DECRYPTED, forwardMessage); - observer.on(Events.ERROR, forwardMessage); + observer.on(Events.FRAG_DECRYPTED, (event, data) => + forwardMessage(event, data, instanceNo), + ); + observer.on(Events.ERROR, (event, data) => + forwardMessage(event, data, instanceNo), + ); const logger = enableLogs(config.debug, data.id); forwardWorkerLogs(logger, instanceNo); transmuxers[instanceNo] = new Transmuxer( diff --git a/src/demux/transmuxer.ts b/src/demux/transmuxer.ts index bf88f7a6a34..2d1168e2a85 100644 --- a/src/demux/transmuxer.ts +++ b/src/demux/transmuxer.ts @@ -363,6 +363,9 @@ export default class Transmuxer { this.remuxer.destroy(); this.remuxer = undefined; } + if (this.observer) { + this.observer.removeAllListeners(); + } this.decryptionPromise = null; this.decrypter = this.observer = undefined; //@ts-ignore