aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMax Isom <[email protected]>2022-03-17 19:17:22 -0400
committerGitHub <[email protected]>2022-03-17 18:17:22 -0500
commitb206254c77b383072d507d80b0cf46437e10cc1b (patch)
treefbe658646bc850b9db1654da0b0dc9fe8a703046 /src
parent5497b22e4946bfefc70022c88cad5eb99df94fe9 (diff)
downloadmuse-b206254c77b383072d507d80b0cf46437e10cc1b.tar.xz
muse-b206254c77b383072d507d80b0cf46437e10cc1b.zip
Kill FFMPEG after stream is closed (#582)
Diffstat (limited to 'src')
-rw-r--r--src/services/player.ts15
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);
});
}
}