Download the best quality audio file with youtube-dl
AudioYoutubeYoutube DlAudio Problem Overview
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!
Audio Solutions
Solution 1 - Audio
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 https://stackoverflow.com/a/49067058/35070">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.
Solution 2 - Audio
To perform this command you need ffmpeg
installed (audio and video converter which youtube-dl uses for convertion)
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
It downloads only audio (without video) and converts it to mp3
.
Option --audio-quality 0
is very important there!
Without this option you lose some 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 original quality.
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"
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 opus which
is oryginally provided by youtube and is newer and better than mp3
or 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)
Solution 3 - Audio
Download best audio:
youtube-dl -f bestaudio https://www.youtube.com/watch?v=3_y2jVPmPBw --output "out.%(ext)s"
Solution 4 - Audio
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.
Solution 5 - Audio
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
Solution 6 - Audio
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.
Solution 7 - Audio
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 "Pipenv Crash Course-6Qmnh5C4Pmo.webm"
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)
Solution 8 - Audio
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=...
).
Solution 9 - Audio
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.
Solution 10 - Audio
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