diff options
| author | Max Isom <[email protected]> | 2022-03-17 19:17:22 -0400 |
|---|---|---|
| committer | GitHub <[email protected]> | 2022-03-17 18:17:22 -0500 |
| commit | b206254c77b383072d507d80b0cf46437e10cc1b (patch) | |
| tree | fbe658646bc850b9db1654da0b0dc9fe8a703046 /src | |
| parent | 5497b22e4946bfefc70022c88cad5eb99df94fe9 (diff) | |
| download | muse-b206254c77b383072d507d80b0cf46437e10cc1b.tar.xz muse-b206254c77b383072d507d80b0cf46437e10cc1b.zip | |
Kill FFMPEG after stream is closed (#582)
Diffstat (limited to 'src')
| -rw-r--r-- | src/services/player.ts | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/src/services/player.ts b/src/services/player.ts index b3ed34d..020c501 100644 --- a/src/services/player.ts +++ b/src/services/player.ts @@ -527,14 +527,18 @@ export default class { capacitor.createReadStream().pipe(cacheStream); } + const returnedStream = capacitor.createReadStream(); + let hasReturnedStreamClosed = false; + const stream = ffmpeg(url) .inputOptions(options?.ffmpegInputOptions ?? ['-re']) .noVideo() .audioCodec('libopus') .outputFormat('webm') .on('error', error => { - console.error(error); - reject(error); + if (!hasReturnedStreamClosed) { + reject(error); + } }) .on('start', command => { debug(`Spawned ffmpeg with ${command as string}`); @@ -542,7 +546,12 @@ export default class { stream.pipe(capacitor); - resolve(capacitor.createReadStream()); + returnedStream.on('close', () => { + stream.kill('SIGKILL'); + hasReturnedStreamClosed = true; + }); + + resolve(returnedStream); }); } } |
