Skip to content

stream.ffmpegmux: close sub-streams concurrently #4634

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged

Conversation

bastimeyer
Copy link
Member

Resolves #3137

The FFMPEGMuxer was closing its substreams sequentially, which is bad when closing a substream takes a bit of time. This is especially the case now that the SegmentedStreamReader waits for its worker and writer threads to terminate.

DASH streams need #4630 to be merged in order to close without any unnecessary additional delay.

One issue still remains though, and that is that HTTP requests don't get cancelled when a segmented stream gets closed, so if a segmented stream (eg. one of the substreams of a muxed stream) still has ongoing HTTP requests, then these need to finish first because the SegmentedStreamWriter waits for all of its thread-pool threads to terminate first. The wait=True parameter is set there intentionally, for being able to run tests deterministically. This wasn't the case until two years ago when I changed it in 3b5a2cb, because the original implementation was done only with Streamlink's CLI in mind, where it doesn't matter much that streams get closed ungracefully.

@bastimeyer bastimeyer requested a review from back-to July 1, 2022 22:49
@back-to back-to merged commit 49178c5 into streamlink:master Jul 2, 2022
@bastimeyer bastimeyer deleted the stream/ffmpegmux/close-concurrently branch July 2, 2022 07:02
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Delay in closing of Muxed Streams
2 participants