Repository: yt-dlp
Issue: [youtube] premature download termination with --live-from-start
Labels: bug,core:downloader

### Checklist

- [X] I'm reporting a bug unrelated to a specific site
- [X] I've verified that I'm running yt-dlp version **2022.02.04**. ([update instructions](https://github.com/yt-dlp/yt-dlp#update))
- [X] I've checked that all provided URLs are alive and playable in a browser
- [X] I've checked that all URLs and arguments with special characters are [properly quoted or escaped](https://github.com/ytdl-org/youtube-dl#video-url-contains-an-ampersand-and-im-getting-some-strange-output-1-2839-or-v-is-not-recognized-as-an-internal-or-external-command)
- [X] I've searched the [bugtracker](https://github.com/yt-dlp/yt-dlp/issues?q=) for similar issues including closed ones. DO NOT post duplicates
- [X] I've read the [guidelines for opening an issue](https://github.com/yt-dlp/yt-dlp/blob/master/CONTRIBUTING.md#opening-an-issue)

### Description

(URLs are no longer playable.)
Unfortunately I did not have an HLS download, but no playback issue was noticed in the browser.

Generally speaking, it seems possible for --live-from-start to prematurely terminating the download of each stream, resulting in a truncated or corrupted file.

First download, video lasted longer than the audio, 01:19:23.000 vs 00:52:58.998 (I believe the video is full-length). On playback in mpv, the following warning is logged, at the 53 minute mark:
```
[lavf] Too many packets in the demuxer packet queues:
[lavf]   video/0: 16054 packets, 157294896 bytes
[lavf]   audio/1: 0 packets, 0 bytes
```
Seeking beyond that point is considerably slower. 

Second download, video and audio downloads terminated even earlier, at 00:43:38:00. The fragments after that point were never downloaded.

I suspect the reworking of --live-from-start may be at fault. It may also be another issue somewhere in the downloader as well, I do not know.

I do know, however, that based on the logs the interruption seems tied to a spontaneous webpage download in the middle of downloading the fragments. Presumably when this happens the stream download is permanently interrupted.

### Verbose log

```shell
# First download
date; ytdlp -v --write-thumbnail --write-description --write-info-json  --live-from-start --wait-for-video=2-3 -N4 J5c7fJOMeXk; date
Sat Feb 26 02:00:06 AM EST 2022
[debug] Command-line config: ['-v', '--write-thumbnail', '--write-description', '--write-info-json', '--live-from-start', '--wait-for-video=2-3', '-N4', 'J5c7fJOMeXk']
[debug] Encodings: locale UTF-8, fs utf-8, out utf-8, err utf-8, pref UTF-8
[debug] yt-dlp version 2022.02.04 [c1653e9ef] (source)
[debug] Lazy loading extractors is disabled
[debug] Plugins: ['SamplePluginIE', 'SamplePluginPP']
[debug] Git HEAD: f0734e119
[debug] Python version 3.10.2 (CPython 64bit) - Linux-5.15.25-1-lts-x86_64-with-glibc2.35
[debug] exe versions: ffmpeg 5.0 (setts), ffprobe 5.0, rtmpdump 2.4
[debug] Optional libraries: Cryptodome, mutagen, sqlite, websockets
[debug] Proxy map: {}
[debug] [youtube] Extracting URL: J5c7fJOMeXk
[youtube] J5c7fJOMeXk: Downloading webpage
[youtube] J5c7fJOMeXk: Downloading android player API JSON
WARNING: [youtube] This live event will begin in 15 minutes.
[wait] Waiting for 00:00:03 - Press Ctrl+C to try now
[wait] Wait period ended; Re-extracting data                 
[debug] [youtube] Extracting URL: J5c7fJOMeXk
[youtube] J5c7fJOMeXk: Downloading webpage
[youtube] J5c7fJOMeXk: Downloading android player API JSON
WARNING: [youtube] This live event will begin in 15 minutes.
[wait] Waiting for 00:00:03 - Press Ctrl+C to try now
[wait] Wait period ended; Re-extracting data                 
<cut...>
[youtube] J5c7fJOMeXk: Downloading webpage
[youtube] J5c7fJOMeXk: Downloading android player API JSON
WARNING: [youtube] This live event will begin in a few moments.
WARNING: Release time of video is not known
[wait] Waiting for 00:00:02 - Press Ctrl+C to try now
[wait] Wait period ended; Re-extracting data                 
[debug] [youtube] Extracting URL: J5c7fJOMeXk
[youtube] J5c7fJOMeXk: Downloading webpage
[youtube] J5c7fJOMeXk: Downloading android player API JSON
WARNING: [youtube] This live event will begin in a few moments.
WARNING: Release time of video is not known
[wait] Waiting for 00:00:02 - Press Ctrl+C to try now
[wait] Wait period ended; Re-extracting data                 
[debug] [youtube] Extracting URL: J5c7fJOMeXk
[youtube] J5c7fJOMeXk: Downloading webpage
[youtube] J5c7fJOMeXk: Downloading android player API JSON
[youtube] J5c7fJOMeXk: Downloading MPD manifest
[debug] Sort order given by extractor: quality, res, fps, hdr:12, source, codec:vp9.2, lang, proto
[debug] Formats sorted by: hasvid, ie_pref, quality, res, fps, hdr:12(7), source, vcodec:vp9.2(10), acodec, lang, proto, filesize, fs_approx, tbr, vbr, abr, asr, vext, aext, hasaud, id
[debug] Default format spec: best/bestvideo+bestaudio
[info] J5c7fJOMeXk: Downloading 1 format(s): 299+140
[info] Writing video description to: 【KARAOKE】Off COLLAB(Fauna, Mumei, Ina, Kronii) IKZ [J5c7fJOMeXk].description
[info] Downloading video thumbnail 46 ...
[info] Writing video thumbnail 46 to: 【KARAOKE】Off COLLAB(Fauna, Mumei, Ina, Kronii) IKZ [J5c7fJOMeXk].webp
[info] Writing video metadata as JSON to: 【KARAOKE】Off COLLAB(Fauna, Mumei, Ina, Kronii) IKZ [J5c7fJOMeXk].info.json
[debug] Invoking downloader on "https://manifest.googlevideo.com/api/manifest/dash/expire/1645881617/ei/sdQZYtmOJeOA2LYPtcufyA8/ip/<IP_ADDR>/id/J5c7fJOMeXk.1/source/yt_live_broadcast/requiressl/yes/hfr/1/as/fmp4_audio_clear%2Cwebm_audio_clear%2Cwebm2_audio_clear%2Cfmp4_sd_hd_clear%2Cwebm2_sd_hd_clear/vprv/1/pacing/0/itag_bl/376%2C377%2C384%2C385%2C612%2C613%2C617%2C619%2C623%2C628%2C655%2C656%2C660%2C662%2C666%2C671/keepalive/yes/fexp/24001373%2C24007246/itag/0/playlist_type/LIVE/sparams/expire%2Cei%2Cip%2Cid%2Csource%2Crequiressl%2Chfr%2Cas%2Cvprv%2Citag%2Cplaylist_type/sig/AOq0QJ8wRAIgfR6yUNDocKcpqwWm3rXlVaUPRJzTOQAGbQC4M880p44CIBEZWRSHiK-oMYi-c5d4BsaJnZd48LBQU1DZLJNPB83D", "https://manifest.googlevideo.com/api/manifest/dash/expire/1645881617/ei/sdQZYtmOJeOA2LYPtcufyA8/ip/<IP_ADDR>/id/J5c7fJOMeXk.1/source/yt_live_broadcast/requiressl/yes/hfr/1/as/fmp4_audio_clear%2Cwebm_audio_clear%2Cwebm2_audio_clear%2Cfmp4_sd_hd_clear%2Cwebm2_sd_hd_clear/vprv/1/pacing/0/itag_bl/376%2C377%2C384%2C385%2C612%2C613%2C617%2C619%2C623%2C628%2C655%2C656%2C660%2C662%2C666%2C671/keepalive/yes/fexp/24001373%2C24007246/itag/0/playlist_type/LIVE/sparams/expire%2Cei%2Cip%2Cid%2Csource%2Crequiressl%2Chfr%2Cas%2Cvprv%2Citag%2Cplaylist_type/sig/AOq0QJ8wRAIgfR6yUNDocKcpqwWm3rXlVaUPRJzTOQAGbQC4M880p44CIBEZWRSHiK-oMYi-c5d4BsaJnZd48LBQU1DZLJNPB83D"
[dashsegments] Total fragments: unknown (live)
[download] Destination: 【KARAOKE】Off COLLAB(Fauna, Mumei, Ina, Kronii) IKZ [J5c7fJOMeXk].f299.mp4
[dashsegments] Total fragments: unknown (live)
[download] Destination: 【KARAOKE】Off COLLAB(Fauna, Mumei, Ina, Kronii) IKZ [J5c7fJOMeXk].f140.mp4
WARNING: The download speed shown is only of one thread. This is a known issue and patches are welcome
WARNING: The download speed shown is only of one thread. This is a known issue and patches are welcome
[download] 1.60GiB at  1.62MiB/s (52:53) (frag 3177)[youtube] J5c7fJOMeXk: Downloading webpage
[download] 1.60GiB at  2.59MiB/s (52:53) (frag 3179)
[download] 65.68MiB at 147.60KiB/s (52:53) (frag 3179)[youtube] J5c7fJOMeXk: Downloading android player API JSON
[youtube] J5c7fJOMeXk: Downloading MPD manifest
[download] 2.43GiB at  2.59MiB/s (01:19:19) (frag 4763)[download] Got server HTTP error: The read operation timed out. Retrying (attempt 1 of 10) ...
[youtube] J5c7fJOMeXk: Downloading webpage
[youtube] J5c7fJOMeXk: Downloading android player API JSON
[youtube] J5c7fJOMeXk: Downloading m3u8 information
[youtube] J5c7fJOMeXk: Downloading MPD manifest
[youtube] J5c7fJOMeXk: Downloading m3u8 information
[youtube] J5c7fJOMeXk: Downloading MPD manifest
[download] Got server HTTP error: HTTP Error 502: Bad Gateway. Retrying (attempt 2 of 10) ...
[download] Got server HTTP error: IncompleteRead(227304 bytes read). Retrying fragment 4764 (attempt 1 of 10) ...
[download] Got server HTTP error: HTTP Error 404: Not Found. Retrying fragment 4764 (attempt 2 of 10) ...
[download] Got server HTTP error: HTTP Error 503: Service Unavailable. Retrying (attempt 1 of 10) ...
[download] 2.43GiB at  5.30KiB/s (01:20:31) (frag 4763)[download] Got server HTTP error: The read operation timed out. Retrying (attempt 2 of 10) ...
[download] Got server HTTP error: HTTP Error 404: Not Found. Retrying fragment 4764 (attempt 3 of 10) ...
[download] 2.43GiB at  3.99KiB/s (01:21:10) (frag 4763)[download] Got server HTTP error: The read operation timed out. Retrying (attempt 1 of 10) ...
[download] Got server HTTP error: HTTP Error 404: Not Found. Retrying fragment 4764 (attempt 4 of 10) ...
[download] 2.43GiB at  3.50KiB/s (01:21:34) (frag 4763)[download] Got server HTTP error: The read operation timed out. Retrying (attempt 1 of 10) ...
[download] Got server HTTP error: HTTP Error 503: Service Unavailable. Retrying (attempt 2 of 10) ...
[download] Got server HTTP error: IncompleteRead(1000 bytes read). Retrying fragment 4764 (attempt 5 of 10) ...
[download] Got server HTTP error: IncompleteRead(1000 bytes read). Retrying fragment 4764 (attempt 6 of 10) ...
[download] Got server HTTP error: The read operation timed out. Retrying (attempt 1 of 10) ...
[download] Got server HTTP error: HTTP Error 503: Service Unavailable. Retrying (attempt 2 of 10) ...
[download] Got server HTTP error: The read operation timed out. Retrying (attempt 3 of 10) ...
[download] Got server HTTP error: HTTP Error 404: Not Found. Retrying fragment 4764 (attempt 7 of 10) ...
[download] Got server HTTP error: The read operation timed out. Retrying (attempt 1 of 10) ...
[download] Got server HTTP error: HTTP Error 503: Service Unavailable. Retrying (attempt 2 of 10) ...
[download] Got server HTTP error: The read operation timed out. Retrying (attempt 3 of 10) ...
[download] Got server HTTP error: HTTP Error 404: Not Found. Retrying fragment 4764 (attempt 8 of 10) ...
[download] Got server HTTP error: HTTP Error 403: Forbidden. Retrying fragment 4764 (attempt 9 of 10) ...
[download] Got server HTTP error: HTTP Error 404: Not Found. Retrying fragment 4764 (attempt 10 of 10) ...
[download] fragment not found; Skipping fragment 4764 ...
[download] 100% of 2.43GiB in 01:24:24

[Merger] Merging formats into "【KARAOKE】Off COLLAB(Fauna, Mumei, Ina, Kronii) IKZ [J5c7fJOMeXk].mp4"
[debug] ffmpeg command line: ffmpeg -y -loglevel repeat+info -i 'file:【KARAOKE】Off COLLAB(Fauna, Mumei, Ina, Kronii) IKZ [J5c7fJOMeXk].f299.mp4' -i 'file:【KARAOKE】Off COLLAB(Fauna, Mumei, Ina, Kronii) IKZ [J5c7fJOMeXk].f140.mp4' -c copy -map 0:v:0 -map 1:a:0 -movflags +faststart 'file:【KARAOKE】Off COLLAB(Fauna, Mumei, Ina, Kronii) IKZ [J5c7fJOMeXk].temp.mp4'
Deleting original file 【KARAOKE】Off COLLAB(Fauna, Mumei, Ina, Kronii) IKZ [J5c7fJOMeXk].f140.mp4 (pass -k to keep)
Deleting original file 【KARAOKE】Off COLLAB(Fauna, Mumei, Ina, Kronii) IKZ [J5c7fJOMeXk].f299.mp4 (pass -k to keep)
Sat Feb 26 03:44:55 AM EST 2022


# download 2, started late
date; ytdlp -v --write-thumbnail --write-description --write-info-json  --live-from-start --wait-for-video=2-3 -N4 --keep-fragments J5c7fJOMeXk;date
Sat Feb 26 02:47:58 AM EST 2022
[debug] Command-line config: ['-v', '--write-thumbnail', '--write-description', '--write-info-json', '--live-from-start', '--wait-for-video=2-3', '-N4', '--keep-fragments', 'J5c7fJOMeXk']
[debug] Encodings: locale UTF-8, fs utf-8, out utf-8, err utf-8, pref UTF-8
[debug] yt-dlp version 2022.02.04 [c1653e9ef] (source)
[debug] Lazy loading extractors is disabled
[debug] Plugins: ['SamplePluginIE', 'SamplePluginPP']
[debug] Git HEAD: f0734e119
[debug] Python version 3.10.2 (CPython 64bit) - Linux-5.15.25-1-lts-x86_64-with-glibc2.35
[debug] exe versions: ffmpeg 5.0 (setts), ffprobe 5.0, rtmpdump 2.4
[debug] Optional libraries: Cryptodome, mutagen, sqlite, websockets
[debug] Proxy map: {}
[debug] [youtube] Extracting URL: J5c7fJOMeXk
[youtube] J5c7fJOMeXk: Downloading webpage
[youtube] J5c7fJOMeXk: Downloading android player API JSON
[youtube] J5c7fJOMeXk: Downloading MPD manifest
[youtube] J5c7fJOMeXk: Downloading MPD manifest
[debug] Sort order given by extractor: quality, res, fps, hdr:12, source, codec:vp9.2, lang, proto
[debug] Formats sorted by: hasvid, ie_pref, quality, res, fps, hdr:12(7), source, vcodec:vp9.2(10), acodec, lang, proto, filesize, fs_approx, tbr, vbr, abr, asr, vext, aext, hasaud, id
[debug] Default format spec: best/bestvideo+bestaudio
[info] J5c7fJOMeXk: Downloading 1 format(s): 299+140
[info] Writing video description to: 【KARAOKE】Off COLLAB(Fauna, Mumei, Ina, Kronii) IKZ [J5c7fJOMeXk].description
[info] Downloading video thumbnail 46 ...
[info] Writing video thumbnail 46 to: 【KARAOKE】Off COLLAB(Fauna, Mumei, Ina, Kronii) IKZ [J5c7fJOMeXk].webp
[info] Writing video metadata as JSON to: 【KARAOKE】Off COLLAB(Fauna, Mumei, Ina, Kronii) IKZ [J5c7fJOMeXk].info.json
[debug] Invoking downloader on "https://manifest.googlevideo.com/api/manifest/dash/expire/1645883280/ei/MNsZYs7SOM-T2LYPvYe78A4/ip/<IP_ADDR>/id/J5c7fJOMeXk.1/source/yt_live_broadcast/requiressl/yes/hfr/1/as/fmp4_audio_clear%2Cwebm_audio_clear%2Cwebm2_audio_clear%2Cfmp4_sd_hd_clear%2Cwebm2_sd_hd_clear/vprv/1/pacing/0/itag_bl/376%2C377%2C384%2C385%2C612%2C613%2C617%2C619%2C623%2C628%2C655%2C656%2C660%2C662%2C666%2C671/keepalive/yes/fexp/24001373%2C24007246/itag/0/playlist_type/LIVE/sparams/expire%2Cei%2Cip%2Cid%2Csource%2Crequiressl%2Chfr%2Cas%2Cvprv%2Citag%2Cplaylist_type/sig/AOq0QJ8wRQIhAKoe926iCe39_YhUkoRbQG1XMuW-Anh26o2epLvoUXLvAiBhg_iObCdPsStDTZ-KHX7IxPMGkjVzB31WSD7tNfIhpQ%3D%3D", "https://manifest.googlevideo.com/api/manifest/dash/expire/1645883280/ei/MNsZYs7SOM-T2LYPvYe78A4/ip/<IP_ADDR>/id/J5c7fJOMeXk.1/source/yt_live_broadcast/requiressl/yes/hfr/1/as/fmp4_audio_clear%2Cwebm_audio_clear%2Cwebm2_audio_clear%2Cfmp4_sd_hd_clear%2Cwebm2_sd_hd_clear/vprv/1/pacing/0/itag_bl/376%2C377%2C384%2C385%2C612%2C613%2C617%2C619%2C623%2C628%2C655%2C656%2C660%2C662%2C666%2C671/keepalive/yes/fexp/24001373%2C24007246/itag/0/playlist_type/LIVE/sparams/expire%2Cei%2Cip%2Cid%2Csource%2Crequiressl%2Chfr%2Cas%2Cvprv%2Citag%2Cplaylist_type/sig/AOq0QJ8wRQIhAKoe926iCe39_YhUkoRbQG1XMuW-Anh26o2epLvoUXLvAiBhg_iObCdPsStDTZ-KHX7IxPMGkjVzB31WSD7tNfIhpQ%3D%3D"
[dashsegments] Total fragments: unknown (live)
[download] Destination: 【KARAOKE】Off COLLAB(Fauna, Mumei, Ina, Kronii) IKZ [J5c7fJOMeXk].f299.mp4
[dashsegments] Total fragments: unknown (live)
[download] Destination: 【KARAOKE】Off COLLAB(Fauna, Mumei, Ina, Kronii) IKZ [J5c7fJOMeXk].f140.mp4
WARNING: The download speed shown is only of one thread. This is a known issue and patches are welcome
WARNING: The download speed shown is only of one thread. This is a known issue and patches are welcome
[download] 1.30GiB at 379.93KiB/s (15:48) (frag 2608)[youtube] J5c7fJOMeXk: Downloading webpage
[download] 1.30GiB at  2.67MiB/s (15:49) (frag 2610)
[download] 1.30GiB at  2.09MiB/s (15:49) (frag 2611)[youtube] J5c7fJOMeXk: Downloading MPD manifest
[youtube] J5c7fJOMeXk: Downloading MPD manifestg 2617)
[download] 100% of 1.30GiB in 15:52
[download] 100% of 54.09MiB in 15:51
[Merger] Merging formats into "【KARAOKE】Off COLLAB(Fauna, Mumei, Ina, Kronii) IKZ [J5c7fJOMeXk].mp4"
[debug] ffmpeg command line: ffmpeg -y -loglevel repeat+info -i 'file:【KARAOKE】Off COLLAB(Fauna, Mumei, Ina, Kronii) IKZ [J5c7fJOMeXk].f299.mp4' -i 'file:【KARAOKE】Off COLLAB(Fauna, Mumei, Ina, Kronii) IKZ [J5c7fJOMeXk].f140.mp4' -c copy -map 0:v:0 -map 1:a:0 -movflags +faststart 'file:【KARAOKE】Off COLLAB(Fauna, Mumei, Ina, Kronii) IKZ [J5c7fJOMeXk].temp.mp4'
Deleting original file 【KARAOKE】Off COLLAB(Fauna, Mumei, Ina, Kronii) IKZ [J5c7fJOMeXk].f140.mp4 (pass -k to keep)
Deleting original file 【KARAOKE】Off COLLAB(Fauna, Mumei, Ina, Kronii) IKZ [J5c7fJOMeXk].f299.mp4 (pass -k to keep)
Sat Feb 26 03:04:06 AM EST 2022
```