From 6d09a042e6c2d47a369c7761d9e82d56ebe42140 Mon Sep 17 00:00:00 2001 From: wm4 Date: Fri, 21 Feb 2020 11:50:58 +0100 Subject: ytdl_hook: replace skip_muxed with force_all_formats option I don't think the skip_muxed option was overlay useful. While it was nice to filter out the low quality muxed versions (as it happens on the alphabetic site, I suspect it's compatibility stuff), it's not really necessary, and just makes for another tricky and rarely used configuration option. (This was different before muxed tracks were also delay-loaded, and including the muxed versions slowed down loading.) Add the force_all_formats option instead, which handles the HLS case. Set it to true because they are also delay-loaded now, and don't slow down startup as much. --- DOCS/man/options.rst | 49 +++++++++++++++++++++++++++++++++---------------- 1 file changed, 33 insertions(+), 16 deletions(-) (limited to 'DOCS') diff --git a/DOCS/man/options.rst b/DOCS/man/options.rst index d181279a41..fb98a04def 100644 --- a/DOCS/man/options.rst +++ b/DOCS/man/options.rst @@ -814,7 +814,6 @@ Program Behavior ``--script-opts`` option (using ``ytdl_hook-`` as prefix): ``try_ytdl_first=`` - If 'yes' will try parsing the URL with youtube-dl first, instead of the default where it's only after mpv failed to open it. This mostly depends on whether most of your URLs need youtube-dl parsing. @@ -855,22 +854,40 @@ Program Behavior slow, which can't be really fixed.) In general, this option is not useful, and was only added to show that it's possible. - ``skip_muxed=`` + There are two cases that must be considered when doing quality/bandwidth + selection: + + 1. Completely separate audio and video streams (DASH-like). Each of + these streams contain either only audio or video, so you can + mix and combine audio/video bandwidths without restriction. This + intuitively matches best with the concept of selecting quality + by track (what ``all_formats`` is supposed to do). + + 2. Separate sets of muxed audio and video streams. Each version of + the media contains both an audio and video stream, and they are + interleaved. In order not to waste bandwidth, you should only + select one of these versions (if, for example, you select an + audio stream, then video will be downloaded, even if you selected + video from a different stream). + + mpv will still represent them as separate tracks, but will set + the title of each track to ``muxed-N``, where ``N`` is replaced + with the youtube-dl format ID of the originating stream. + + Some sites will mix 1. and 2., but we assume that they do so for + compatibility reasons, and there is no reason to use them at all. + + ``force_all_formats=`` If set to 'yes', and ``all_formats`` is also set to 'yes', this will - skip formats that have both audio and video streams (default: yes). - - Some sites that provide multiple qualities will do so with separated - audio and video streams (which is what ``all_formats`` is supposed to - make use of), still provide formats that include both audio and video. - We assume that they do so for compatibility reasons, and ``skip_muxed`` - filters them out. This will make loading faster, and potentially avoid - wasting bandwidth by using only one stream of a muxed stream. On the - other hand, if muxed streams are present, but the separate streams lack - either video or audio or do not exist at all, then the stream selection - as done by youtube-dl (via ``--ytdl-format``) is used. - - This appears to terribly break with some sites that provide a HLS master - playlist on the lowest level. + try to represent all youtube-dl reported formats as tracks, even if + mpv would normally use the direct URL reported by it (default: yes). + + It appears this normally makes a difference if youtube-dl works on a + master HLS playlist. + + If this is set to 'no', this specific kind of stream is treated like + ``all_formats`` is set to 'no', and the stream selection as done by + youtube-dl (via ``--ytdl-format``) is used. ``use_manifests=`` Make mpv use the master manifest URL for formats like HLS and DASH, -- cgit v1.2.3