bastimeyer · GitHub

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.

Read the original on github.com ↗