[youtube] Remove the nondash formats (fixes #5774)
Since we use fixed values for some fields like width and height they can be wrong, and would get picked by some formats filters. For example for https://www.youtube.com/watch?v=EQCrhbBxsjA the biggest height is 720 and for nondash formats it's set to 1440, so -f 'bestvideo[height>=1200]+bestaudio' would incorrectly pick the nondash format, instead it should report that the requested format is not available.
This commit is contained in:
parent
ba64547616
commit
04b3b3df05
|
@ -1126,12 +1126,13 @@ class YoutubeIE(YoutubeBaseInfoExtractor):
|
||||||
self.report_warning(
|
self.report_warning(
|
||||||
'Skipping DASH manifest: %r' % e, video_id)
|
'Skipping DASH manifest: %r' % e, video_id)
|
||||||
else:
|
else:
|
||||||
# Hide the formats we found through non-DASH
|
# Remove the formats we found through non-DASH, they
|
||||||
|
# contain less info and it can be wrong, because we use
|
||||||
|
# fixed values (for example the resolution). See
|
||||||
|
# https://github.com/rg3/youtube-dl/issues/5774 for an
|
||||||
|
# example.
|
||||||
dash_keys = set(df['format_id'] for df in dash_formats)
|
dash_keys = set(df['format_id'] for df in dash_formats)
|
||||||
for f in formats:
|
formats = [f for f in formats if f['format_id'] not in dash_keys]
|
||||||
if f['format_id'] in dash_keys:
|
|
||||||
f['format_id'] = 'nondash-%s' % f['format_id']
|
|
||||||
f['preference'] = f.get('preference', 0) - 10000
|
|
||||||
formats.extend(dash_formats)
|
formats.extend(dash_formats)
|
||||||
|
|
||||||
# Check for malformed aspect ratio
|
# Check for malformed aspect ratio
|
||||||
|
|
Loading…
Reference in New Issue