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 'https://www.youtube.com/watch?v=VAdRBLyjLRQ&feature=youtu.be&t=8m14s' [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 'https://www.youtube.com/watch?v=VAdRBLyjLRQ&feature=youtu.be&t=8m14s' [youtube] Downloading login page [youtube] Logging in [youtube] VAdRBLyjLRQ: Downloading webpage [youtube] VAdRBLyjLRQ: Downloading video info webpage [youtube] VAdRBLyjLRQ: Extracting video information (...)
If you don't have ffmpeg installed, youtube-dl will by default select the highest quality format that has both audio and video. This maxes out at 720p (and is usually specified by format code 22 so you would download with -f 22 ).
Yes it is different (in the special case of using youtube-dl ) which can be seen by the fact that the traffic while watching on youtube.com website uses a https:// transfer and the traffic generated by youtube-dl is using an unencrypted http://. Can't youtube-dl be made to use an https connection?
Download only audio with youtube-dl If you only want to download audio from a YouTube video, you can use the -x option with youtube-dl. This extract-audio option converts the video files to audio-only files. The file is saved in the same directory from where you ran the youtube-dl command.
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]
.
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).
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With