youtube-dl DASH video and audio in highest quality without human intervention

With youtube-dl I first look what video quality is available and then in second step I download highest possible quality (in this example -f 137+140). Youtube-dl will automatically merge audio and video stream (DASH format)

How to automate that with shell script? With every URL, choose highest audio and video quality?

> youtube-dl -F ' [youtube] Downloading login page [youtube] Logging in [youtube] VAdRBLyjLRQ: Downloading webpage [youtube] VAdRBLyjLRQ: Downloading video info webpage [youtube] VAdRBLyjLRQ: Extracting video information [youtube] VAdRBLyjLRQ: Downloading DASH manifest [youtube] VAdRBLyjLRQ: Downloading DASH manifest [info] Available formats for VAdRBLyjLRQ: format code extension resolution note 249 webm audio only DASH audio , opus @ 50k 250 webm audio only DASH audio , opus @ 70k 251 webm audio only DASH audio , opus @160k 171 webm audio only DASH audio 117k , vorbis@128k (44100Hz), 7.68MiB 140 m4a audio only DASH audio 128k , m4a_dash container, aac @128k (44100Hz), 11.58MiB 160 mp4 256x144 DASH video 112k , avc1.4d400c, 15fps, video only, 9.94MiB 278 webm 256x144 DASH video 136k , webm container, VP9, 15fps, video only, 9.10MiB 133 mp4 426x240 DASH video 248k , avc1.4d4015, 30fps, video only, 22.27MiB 242 webm 426x240 DASH video 316k , vp9, 30fps, video only, 22.20MiB 243 webm 640x360 DASH video 557k , vp9, 30fps, video only, 41.05MiB 134 mp4 640x360 DASH video 609k , avc1.4d401e, 30fps, video only, 52.94MiB 244 webm 854x480 DASH video 1021k , vp9, 30fps, video only, 74.05MiB 135 mp4 854x480 DASH video 1115k , avc1.4d401f, 30fps, video only, 97.02MiB 247 webm 1280x720 DASH video 2011k , vp9, 30fps, video only, 150.61MiB 136 mp4 1280x720 DASH video 2282k , avc1.4d401f, 30fps, video only, 189.40MiB 248 webm 1920x1080 DASH video 3838k , vp9, 30fps, video only, 286.61MiB 137 mp4 1920x1080 DASH video 4209k , avc1.640028, 30fps, video only, 354.19MiB 17 3gp 176x144 36 3gp 320x240 5 flv 400x240 43 webm 640x360 18 mp4 640x360 22 mp4 1280x720 (best) > youtube-dl -f 137+140 ' [youtube] Downloading login page [youtube] Logging in [youtube] VAdRBLyjLRQ: Downloading webpage [youtube] VAdRBLyjLRQ: Downloading video info webpage [youtube] VAdRBLyjLRQ: Extracting video information (...) 
1

5 Answers

Just use -f bestvideo+bestaudio/best for highest resulting quality available.

If you wanted to prefer MP4 format containers instead of WebM, use:

-f bestvideo[ext!=webm]‌​+bestaudio[ext!=webm]‌​/best[ext!=webm].

4

I've found some weird cases where the default (see #5447, #5456) bestvideo+bestaudio/best would download 720p video even when a 1080p was available. The reason that the bitrate on the 720p was very slightly higher, therefore it seemed better quality for youtube-dl. I prefer the higher res, also all other fancy youtube downloader applications downloaded the 1080p (as control).

Therefore I propose and use this:

-f ("bestvideo[width>=1920]"/bestvideo)+bestaudio/best 

It will look for the best, at least 1920 wide video. If that's not available, it'll resort to what it would normally choose. The /best part at the end is part of the default config.

On a side note I recommend putting the %(format_id)s somewhere in the filename, so you know what that file is using. If you later want to re-download a bunch of videos without using archive, with --no-overwrites, a better/different quality will form a new filename next to the old one (so you can compare or whatever).

Or you could just use,

youtube-dl 

This will download the highest quality video and audio and merge them automatically. And I think I have heard somewhere that you need ffmpeg installed to have this automatic behavior. But I bet most systems have it already.

5
youtube-dl -f best 'youtube_URL'

or,

youtube-dl -f 'bestvideo+bestaudio/bestvideo+bestaudio' --merge-output-format mp4 'youtube_URL'

or,

youtube-dl -f 'bestvideo[ext=webm]+bestaudio[ext=m4a]/bestvideo+bestaudio' --merge-output-format mp4 'youtube_URL'

Hope it helps!

Since the numbers of format are limited I did:

youtube-dl -f 299+140 "" youtube-dl -f 137+140 "" youtube-dl -f best "" 

If the 299+140 has been downloaded the 137+140 won't be and if none of those have you'll have the best starting with 22. The only problem is that you'll have the best in webm as a duplicate but you can use the ext!=webm to avoid this.

Of course you can start at 313+140 or whatever higher format you want.

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

You Might Also Like