How to download 1080p + best audio using youtube-dl?

dragos picture dragos · Mar 1, 2018 · Viewed 21.4k times · Source

I'm trying to download 1920x1080 video with 192kb/s audio but I'm unable to extract both. For example:

        format code  extension  resolution note
    249          webm       audio only DASH audio   51k , opus @ 50k, 600.56KiB
    250          webm       audio only DASH audio   67k , opus @ 70k, 788.31KiB
    251          webm       audio only DASH audio  132k , opus @160k, 1.53MiB
    140          m4a        audio only DASH audio  134k , m4a_dash container, mp4a.40.2@128k, 1.52MiB
    171          webm       audio only DASH audio  135k , vorbis@128k, 1.53MiB
    160          mp4        256x144    144p  110k , avc1.42c00c, 12fps, video only, 1.30MiB
    278          webm       256x144    144p  134k , webm container, vp9, 12fps, video only, 1.18MiB
    133          mp4        426x240    240p  248k , avc1.4d4015, 24fps, video only, 2.91MiB
    242          webm       426x240    240p  254k , vp9, 24fps, video only, 2.30MiB
    243          webm       640x360    360p  475k , vp9, 24fps, video only, 4.17MiB
    134          mp4        640x360    360p  617k , avc1.4d401e, 24fps, video only, 5.00MiB
    244          webm       854x480    480p  861k , vp9, 24fps, video only, 7.31MiB
    135          mp4        854x480    480p 1110k , avc1.4d401e, 24fps, video only, 9.33MiB
    247          webm       1280x720   720p 1691k , vp9, 24fps, video only, 13.90MiB
    136          mp4        1280x720   720p 2220k , avc1.4d401f, 24fps, video only, 17.41MiB
    248          webm       1920x1080  1080p 3044k , vp9, 24fps, video only, 24.43MiB
    137          mp4        1920x1080  1080p 4160k , avc1.640028, 24fps, video only, 31.42MiB
    17           3gp        176x144    small , mp4v.20.3, mp4a.40.2@ 24k
    36           3gp        320x180    small , mp4v.20.3, mp4a.40.2
    43           webm       640x360    medium , vp8.0, vorbis@128k
    18           mp4        640x360    medium , avc1.42001E, mp4a.40.2@ 96k
    22           mp4        1280x720   hd720 , avc1.64001F, mp4a.40.2@192k (best)

I'm trying to merge the 1920x1080 video from 137 and 192kb/s audio from 22 (as it's the best available).

-f 'bestvideo[height<=1080]+bestaudio/best[height<=1080]' --merge-output-format mp4

But the audio bitrate of output file was 125kb/s. How can I download the required specifications?

EDIT 1: Link for the example video: https://www.youtube.com/watch?v=i-c-K3pNtj4

NOTE: I don't know too much about audio codecs but I want to select the best one so if possible, please provide the facts that can be used to identify the best audio if it outfactors the bitrate.

Answer

anon picture anon · Mar 2, 2018

First of all, a word about audio quality: As described on our sister site, mp3 becomes indistinguishable from lossless CD quality (transparent) at about 192kb/s with a constant bitrate. However, any modern encoder is using a variable bitrate (VBR), putting more quality in some sections than others. With VBR, the cutoff is likely a bit lower. With professional ears and equipment, it may be a little bit higher.

AAC and Vorbis are one generation farther than MP3. This seems to be the most comprehensive quality test - at least the one I could find. AAC and Vorbis have been claimed to be transparent at 128kb/s, although I'd guess 160kb/s is a more realistic threshold. Opus is yet another significant improvement, being reasonably good for music at 64kb/s and probably transparent at 128kb/s.

When youtube-dl lists the format quality for YouTube, the quality it lists is hardcoded. Other websites supported sometimes relay quality information in advance, but for YouTube we'd have to download at least the headers of each file.

I got bad news for your claim to be able to hear the difference between 192kb/s and 128kb/s on this video: All the audio formats offered for this video (namely, 251, 140, 171 and 22) are encoded with 128KB/s VBR. You can check so by downloading them (for 22, you need to split off the audio) and comparing file sizes: They're all 1.6MB = 12.8 Mb (conveniently, the video is 100 seconds long).

In particular, the codecs are opus(251), Vorbis(171), AAC(140 and 22). Of these, Opus definitely offers the highest quality. So why does youtube-dl pick Vorbis with bestaudio? The way I originally designed the youtube-dl format selection, it would have picked the Opus indeed. But there was significant user feedback that some formats may be of worse quality, but supported more broadly.

Even today, lots of applications are unable to handle Opus, or even Vorbis or AAC and their container. A high-quality music player such as VLC will support everything, but out of the box, many laptops will be limited; smartphones more so, and smartwatches or smart headphones even more so. This is why most podcasts will still serve mp3 files - it is a much worse user experience to be unable to play a file at all, than a slight degradation in audio quality and/or file size. In addition, some of these formats are also free, while others are not, bringing further problems on systems configured to use only free software.

If you value audio quality above all, you should pick format 251 here. Store your preferences in a configuration file to make them permanent.

Note that all of this discussion presumes that the original audio source is high-fidelity, if possible lossless. Since the uploader of that video is called MikeTheAnimeRunnerX2, I would not presume expert audio recording skills - although there is credit of the original singer, so he may have gotten a high-quality file in private. If the audio that was uploaded to YouTube was in a lossy format (especially one at the edge of transparency or lower), all the further reencoding by YouTube can do is minimize further artifacts.

Note that to non-experts, worse compression can sometimes sound better, especially when the original source is not that good, noisy, or has been degraded by lossy reencodings. This is because worse compression will remove some inaccuracies and may make the sound more "smooth".

Fortunately, youtube-dl gives you the option to test multiple formats. Just download all candidates (e.g. with youtube-dl -f 251 i-c-K3pNtj4, or -f bestvideo+251 to get a video file) and pick the one you like most.