Download the best quality audio file with youtube-dl [closed]
Asked Answered
U

10

75

I have just download youtube-dl so I can download video and audio files from youtube.

I want to download the best audio from the following video: https://www.youtube.com/watch?v=uWusmdmc0to

When I do a search for all formats with youtube-dl I get the following results:

format code  extension  resolution note
249          webm       audio only DASH audio   58k , opus @ 50k, 18.99MiB
250          webm       audio only DASH audio   75k , opus @ 70k, 25.20MiB
140          m4a        audio only DASH audio  131k , m4a_dash container, mp4a.40.2@128k, 52.40MiB
251          webm       audio only DASH audio  147k , opus @160k, 50.95MiB
171          webm       audio only DASH audio  149k , vorbis@128k, 52.64MiB
278          webm       256x144    144p  109k , webm container, vp9, 25fps, video only, 34.62MiB
160          mp4        256x144    144p  117k , avc1.4d400c, 25fps, video only, 37.86MiB
242          webm       426x240    240p  245k , vp9, 25fps, video only, 75.13MiB
133          mp4        426x240    240p  258k , avc1.4d4015, 25fps, video only, 81.39MiB
243          webm       640x360    360p  492k , vp9, 25fps, video only, 142.99MiB
134          mp4        640x360    360p  673k , avc1.4d401e, 25fps, video only, 215.29MiB
244          webm       854x480    480p  828k , vp9, 25fps, video only, 256.58MiB
135          mp4        854x480    480p 1516k , avc1.4d401e, 25fps, video only, 408.56MiB
247          webm       1280x720   720p 1882k , vp9, 25fps, video only, 526.18MiB
136          mp4        1280x720   720p 3012k , avc1.4d401f, 25fps, video only, 803.36MiB
248          webm       1920x1080  1080p 3622k , vp9, 25fps, video only, 938.81MiB
137          mp4        1920x1080  1080p 4724k , avc1.640028, 25fps, video only, 1.44GiB
271          webm       2560x1440  1440p 9253k , vp9, 25fps, video only, 2.86GiB
313          webm       3840x2160  2160p 18685k , vp9, 25fps, video only, 6.33GiB
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)

What is the best choice to get the best audio file? The first five are audio only. Do I need to pick one here? Or is the last one MP4 HD720 the best option and then convert it to MP3?

Thanks!

Unlettered answered 12/4, 2018 at 19:55 Comment(2)
The option 171 vorbis@128k is the best audio available for this video. It can be different for others. Rencoding will loose more data, no matter in what or at what birate! Why not make your very own test, compare outputs, in an headphone, in your car, etc. See what suits your needsAdcock
The format code 251 "opus@160k" is the best audio quality in this situation. The Opus codec is a decade newer than Vorbis and is more efficient at representing audible sounds.Banda
S
101

If you want mp3, just tell youtube-dl that:

youtube-dl -x --audio-format mp3 https://www.youtube.com/watch?v=uWusmdmc0to

will get you an audio version (-x, short for --extract-audio) in or converted to mp3 (that's the --audio-format option). youtube-dl will automatically pick the best quality and most appropriate format.

Note that the listed qualities are just guesses. In practice, opus is superior to anything else, but vorbis is picked for compatibility (refer to this related answer of mine for more details), so that will be picked.

While you can use -f to select a particular format, this is intended for people who want lower quality because of limited bandwidth or storage space, or for debugging. By default, youtube-dl already downloads the highest quality.

Springy answered 12/4, 2018 at 20:49 Comment(8)
Thanks for your reply. I read on more sites that Opus is the best. But why does youtube-dl download the Vorbis file when I use: youtube-dl -f bestaudio youtube.com/watch?v=uWusmdmc0to ?? It's not the best one available.Unlettered
As laid out in the linked answer, that's because of compatibility concerns. If you can play/convert opus, you can pass in -f 'bestaudio[format="opus"]/bestaudio/best'.Springy
@phihag this gave me the error ValueError: Invalid filter specification u'format="opus"'Argillaceous
@ColinD Please ask a separate question instead, or maybe file a youtube-dl bug . You can notify me of the question via email or so. Don't forget to include the entire output of youtube-dl when called with the -v option (plus all of the options you have). Also make sure you are using a recent version of youtube-dl, at least 2018.12.17.Springy
I wonder why --audio-format don't work with -f bestaudio?Enact
@Enact Works fine for me. Both options are unrelated. What error message do you get? Can you post your complete command, maybe in a new question or better at yt-dl.org/bug ?Springy
"By default, youtube-dl already downloads the highest quality." Not at all. It downloads best quality format that requires no further manipulation. Best audio and best video streams are usually separate, require ffmpeg to merge, and are not chosen as "best quality".Gerigerianna
It seems that this method downloads both the audio and video and then extracts the audio. Is it possible to save bandwidth by downloading only the audio?Cayuse
M
57

If you want to download audio in opus format - with best possible quality and without any conversion

In most of the cases best quality audio is oryginally provided by youtube in opus format. You can download it in highest possible quality using this command:

youtube-dl -f "bestaudio/best" -ciw -o "%(title)s.%(ext)s" -v --extract-audio https://www.youtube.com/watch?v=c29tZVZpZGVvUGxheWxpc3RQYXJ0

However opus format might be inconvenient for many reasons. For example some media players especially in cars and telephones might not support it. Probably you just want to have audio in mp3 file. Below there is a solution on how to (using one command) download audio and convert it to probably most popular mp3 format with lossing as little quality as possible.

If you want to download audio and convert it to mp3 or any other lossy format.

To download audio from a single movie:

youtube-dl -f "bestaudio/best" -ciw -o "%(title)s.%(ext)s" -v --extract-audio --audio-quality 0 --audio-format mp3  https://www.youtube.com/watch?v=c29tZVZpZGVvUGxheWxpc3RQYXJ0

To perform this command you need ffmpeg installed (audio and video converter which youtube-dl uses for convertion)

It downloads only audio (without video) and converts it to mp3.

Option --audio-quality 0 is very important there!
Without this option you lose a lot of sound quality during mp3 compression.

--audio-quality 0 tells youtube-dl to save audio file in the best quality (when converting to mp3).
Without this option mp3 audio-quality is set by default to 5 in 0-9 scale where 0 is the best quality and 9 the worst quality. So by default quality is worse. Youtube streams for nonpremium users with variable bitrate up to 160kbps in opus format. Opus format is newer than mp3 and has better compression than mp3 preserving the same quality. So 160kbps opus = ~256kbps mp3. When audio-quality is default (5 in 0-9 scale) mp3 bitrate is limited to 160kbps which means that some sound quality is lost during compression. When audio-quality is set to 0 mp3 goes up to 300kbps preserving almost original quality. Almost original quality because mp3 is a lossy format so something is lost when converting to it. By using --audio-quality 0 option we just make sure that we loose as little as possible during this conversion. So difference between original opus audio file and audio file converted to mp3 is so small that it might be hard to spot by ear.

To download audio from all movies from a channel:

Command is the same, but you should put link to the channel instead of link to a single video:

youtube-dl -f "bestaudio/best" -ciw -o "%(title)s.%(ext)s" -v --extract-audio --audio-quality 0 --audio-format mp3 https://www.youtube.com/c/someChannelName1232143/videos

To download audio from a playlist:

You have to add --yes-playlist option.
You can put a link to a playlist (link with playlist word):

youtube-dl -f "bestaudio/best" -ciw -o "%(title)s.%(ext)s" -v --extract-audio --audio-format mp3 --audio-quality 0  --yes-playlist https://www.youtube.com/playlist?list=c29tZVZpZGVvVVJMUGFy

Or the link to one of the songs from playlist while playing playlist (link with list word):

youtube-dl -f "bestaudio/best" -ciw -o "%(title)s.%(ext)s" -v --extract-audio --audio-format mp3 --audio-quality 0  --yes-playlist "https://www.youtube.com/watch?v=c29tZVZpZGVvUGxheWxpc3RQYXJ0&list=c29tZVZpZGVvTGlzdFBhcnRzc29tZVZpZGVvTGlzdFBhcnRz&index=4"

If you want to download audio and convert it to flac or any other lossless format

In this case you don't have to specify --audio-quality option as it is ignored by youtube-dl during conversion to lossless formats.

To download audio from a single movie:

youtube-dl -f "bestaudio/best" -ciw -o "%(title)s.%(ext)s" -v --extract-audio --audio-format flac  https://www.youtube.com/watch?v=c29tZVZpZGVvUGxheWxpc3RQYXJ0

To download audio from all movies from a channel:

youtube-dl -f "bestaudio/best" -ciw -o "%(title)s.%(ext)s" -v --extract-audio --audio-format flac https://www.youtube.com/c/someChannelName1232143/videos

To download audio from a playlist:

youtube-dl -f "bestaudio/best" -ciw -o "%(title)s.%(ext)s" -v --extract-audio --audio-format flac --yes-playlist https://www.youtube.com/playlist?list=c29tZVZpZGVvVVJMUGFy

or

youtube-dl -f "bestaudio/best" -ciw -o "%(title)s.%(ext)s" -v --extract-audio --audio-format flac --yes-playlist "https://www.youtube.com/watch?v=c29tZVZpZGVvUGxheWxpc3RQYXJ0&list=c29tZVZpZGVvTGlzdFBhcnRzc29tZVZpZGVvTGlzdFBhcnRz&index=4"

Command options explanation:

-f "bestaudio/best" <- Choose the best audio format.
As there is only audio format listed only the audio is downloaded.

-c <- (--continue) Force resume of partially downloaded files.
By default, youtube-dl will resume downloads if possible.
As docs state maybe it is default, but I put it to make sure it is set.

-i <- (--ignore-errors) Continue on download errors,
for example to skip unavailable videos in a playlist.

-w <- (--no-overtwrites) Do not overwrite files
(If something was already downloaded
and is present in the directory then continue with the next video)

-o "%(title)s.%(ext)s" <- (--output) Output filename template,
in this case it gives you file named movieTitle.mp3
where movieTitle is the title of the video on youtube.

-v <- (--verbose) Print various debugging information

--extract-audio <- (-x) Convert video files to audio-only files
(requires ffmpeg or avconv and ffprobe or avprobe)

--audio-quality 0 <- Specify ffmpeg/avconv audio quality,
insert a value between 0 (better) and 9 (worse) for VBR or a specific
bitrate like 128K (default 5).
Youtube streams for nonpremium users with variable bitrate up to 160kbps in opus format.
Opus format is newer than mp3 and has better compression than mp3
preserving the same quality. So 160kbps opus = ~ 256kbps mp3.  
When audio-quality is default (5 in 0-9 scale) mp3 bitrate
is limited to 160kbps which means that some sound quality is lost during compression.
When audio-quality is set to 0 mp3 goes up to 300kbps preserving original quality.

--audio-format mp3 <-  Specify audio format: "best", "aac", "flac", "mp3", "m4a",
"opus", "vorbis", or "wav"; "best" by default; No effect without -x (--extract-audio).
In this case we choose mp3.
Alternatively you could choose for example flac which is loseless codec.

All links that I provided there are fake. I just put some random words encoded by base64 in them. So you have to replace them by your own links to make it work.

Hint:

Youtube-dl gives you opportunity to use your own youtube account to download stuff.
If your account is a premium account you can get
higher 320kbps opus bitrate which is equivalent of ~512kbps mp3.
Using your own account might be possible by setting --username and --pasword
(See Authentication Options in --help)

Note:

All of the above should be relevant for version 2021.12.17 of youtube-dl. Newer versions might change something, so be aware of that.

Marlin answered 25/10, 2020 at 17:42 Comment(7)
Wouldn't --audio-quality 0 re-encode the audio, thus degrading the quality? We want the original stream (even though it's lossy), not a lossy-to-lossy transcode, right?Fourinhand
--audio-quality 5 is only used when you specify an incompatible output format (e.g. you want the output to be .mp3, but there are only .opus streams available). If you don't do that, it will not use that flag. You're saying that a lossy-to-lossy transcode sounds better than an untampered lossy file. That makes no sense. It will be lossy no matter what (it's already lossy on the YouTube/Soundcloud/etc servers), you're only making things worse by re-encoding them all over again. It also has absolutely nothing to do with combining audio and video. In short: --audio-quality 0 degrades quality.Fourinhand
@Fourinhand Thanks for your comments. You are right. Some statements in my answer weren't true. I revised my answer according to your comments. It is still focused on conversion to mp3 (which I assume is the most convenient format for most people) but now it tells also how to prevent the best quality by not converting it to other format and that conversion to mp3 no matter how accurate will result in some loss of data. I deleted my previous comments as in general they doesn't make sense. Cheers :)Marlin
I voted for this answer b/c it is very differentiated (what arguments for what goal) and also explains all the arguments.Weldon
@Fourinhand I'm a bit confused by the discussion above. Is there any way with this library to obtain effective audio quality better than default 128kbps that it outputs? I find that adding --audio-quality 0 results in file sizes twice the size and 256kbps, which given the nature of compression must mean more information. Are you saying that is somehow false information?Jemimah
@Jemimah by doing what you're suggesting you end up with a larger filesize and lower quality. Worst of both worlds. You can't create something out of nothing. If the copy on the server is a 128kbps mp3 track, but you somehow end up with a 256kpbs one, where do you reckon the extra information came from? I suggest you read up on how lossy and lossless encoding and compression work.Fourinhand
I appreciate some of what you're saying. But how do we know the server's version is 128kbps? WRT compression any fournier-type of transform would be expected to factor the available information as efficiently as possible, so doubling the bit rate would not necessarily double the file size..Jemimah
E
14

Download best audio:

youtube-dl -f bestaudio https://www.youtube.com/watch?v=3_y2jVPmPBw --output "out.%(ext)s"
Enact answered 23/7, 2019 at 15:30 Comment(0)
G
13

This should give you the best sound quality:

youtube-dl --extract-audio "https://www.youtube.com/watch?v=uWusmdmc0to"

I'd recommend not to specify any audio format. If you specify an audio format then that probably is different from the original encoding and you will lose sound quality.

Goldfarb answered 17/7, 2019 at 22:58 Comment(1)
Good explanation.Claudio
B
4

I use a bat file in windows, which passes the youtube url through to a preset list of arguments to download the highest quality audio stream and save it as MP3.

batch file contains:

youtube-dl -f bestaudio -x --audio-format mp3 %*

save the batch file in the same dir as youtube-dl (I save it as youtube-mp3.bat) in the same directory have ffmpeg installed

Whenever I want to download audio (Usually for me a youtube DJ Mix) I just pass the (youtube) URL to the batch file. Saves having to remember what arguments to use each time.

youtube-mp3 https://www.youtube.com/?v=xxxxxx   
Blastocyst answered 29/11, 2020 at 23:55 Comment(0)
T
3

I personally currently use

youtube-dl -f bestaudio --extract-audio --audio-format mp3 --audio-quality 0

which is a nice combination of all the other answers. I created the alias youtube-dl-music by typing

alias youtube-dl-music='youtube-dl -f bestaudio --extract-audio --audio-format mp3 --audio-quality 0'

Hopefully this helps those in a need for a quick command to copy and paste.

Tellurian answered 17/10, 2021 at 10:37 Comment(2)
but why reencode the audo to mp3? just keep it as opusBasilbasilar
@Basilbasilar because this works best for me on the devices I use for playback other than my pcTellurian
I
3

Although you can get the best audio like this:

$ youtube-dl -f bestaudio https://www.youtube.com/watch?v=7E-cwdnsiow

You can also get the worst video with the best audio like this:

$ youtube-dl -f worstvideo+bestaudio https://www.youtube.com/watch?v=7E-cwdnsiow

Or you can separate the best audio and best video into two separate files like this:

$ youtube-dl -f bestvideo,bestaudio https://www.youtube.com/watch?v=7E-cwdnsiow

Better yet, you can seek out the best video within what you would consider reasonable and combine it with the audio:

$ youtube-dl -f 'bestvideo[height<=480]+bestaudio/best[height<=480]' https://www.youtube.com/watch?v=7E-cwdnsiow
Interferometer answered 20/11, 2021 at 12:51 Comment(0)
U
2

You can try to download audio with desired format by

youtube-dl -f m4a https://www.youtube.com/watch\?v\=ZtrEWtk9kbo 

command.

Sometimes ffmpeg is required.

Uncial answered 27/5, 2020 at 2:43 Comment(0)
I
1

Check whether you have ffmpeg package installed from your side by below methods.

sudo apt install ffmpeg
sudo pip install ffmpeg

After above i got like below:

youtube-dl https://www.youtube.com/watch?v=6Qmnh5C4Pmo
[youtube] 6Qmnh5C4Pmo: Downloading webpage
[download] Destination: Pipenv Crash Course-6Qmnh5C4Pmo.f248.webm
[download] 100% of 33.19MiB in 00:26
[download] Destination: Pipenv Crash Course-6Qmnh5C4Pmo.f251.webm
[download] 100% of 15.15MiB in 00:09
[ffmpeg] Merging formats into &quot;Pipenv Crash Course-6Qmnh5C4Pmo.webm&quot;
Deleting original file Pipenv Crash Course-6Qmnh5C4Pmo.f248.webm (pass -k to keep)
Deleting original file Pipenv Crash Course-6Qmnh5C4Pmo.f251.webm (pass -k to keep)
Inspirational answered 3/5, 2020 at 2:15 Comment(0)
M
0

This works for me for sites providing audio in the M4A (MPEG-4 audio) format (e.g. YouTube, Facebook video):

youtube-dl -f "bestaudio[ext=m4a]/best[ext=mp4]" -x "https://..."

Since it doesn't specify --audio-format, youtube-dl won't do any reencoding, thus it doesn't lose audio quality. However, it may happen the video is available in a better quality (with a different ext=...).

Manage answered 15/12, 2020 at 9:40 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.