diff --git a/stream/stream.c b/stream/stream.c index 99e871d5a0..5eee953bf6 100644 --- a/stream/stream.c +++ b/stream/stream.c @@ -394,16 +394,22 @@ stream_t *open_output_stream(const char *filename, struct mpv_global *global) static int stream_reconnect(stream_t *s) { #define MAX_RECONNECT_RETRIES 5 -#define RECONNECT_SLEEP_MS 1000 +#define RECONNECT_SLEEP_MAX_MS 500 if (!s->streaming) return 0; if (!(s->flags & MP_STREAM_SEEK_FW)) return 0; int64_t pos = s->pos; + int sleep_ms = 5; for (int retry = 0; retry < MAX_RECONNECT_RETRIES; retry++) { MP_WARN(s, "Connection lost! Attempting to reconnect (%d)...\n", retry + 1); - if (stream_check_interrupt(retry ? RECONNECT_SLEEP_MS : 0)) + if (retry) { + mp_sleep_us(sleep_ms * 1000); + sleep_ms = MPMIN(sleep_ms * 2, RECONNECT_SLEEP_MAX_MS); + } + + if (stream_check_interrupt(0)) return 0; s->eof = 1;