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 | |
| parent | 5497b22e4946bfefc70022c88cad5eb99df94fe9 (diff) | |
| download | muse-b206254c77b383072d507d80b0cf46437e10cc1b.tar.xz muse-b206254c77b383072d507d80b0cf46437e10cc1b.zip | |
Kill FFMPEG after stream is closed (#582)
| -rw-r--r-- | CHANGELOG.md | 2 | ||||
| -rw-r--r-- | src/services/player.ts | 15 |
2 files changed, 14 insertions, 3 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md index 63fa116..ad547ef 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). ## [Unreleased] +### Fixed +- There are no longer FFMPEG orphan processes after listening to a livestream ## [1.6.1] - 2022-03-15 ### Fixed 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); }); } } |
