151

Can I directly download audio from a YouTube video instead of first downloading audio+video and then extracting the audio?

  • 5
    I don't think its a duplicate because that question clearly required the search facility. This question does not. I have also mentioned that in the answer. This question is useflu to people who already know what has to be downloaded. – DK Bose Feb 22 '14 at 4:45
  • The same answer there is applicable her – Maythux Feb 22 '14 at 4:46
  • 3
    That answer has to download the video first. This question and answer (1) does not want downloading of the video (2) does not want to search YouTube. I hope you understand. – DK Bose Feb 22 '14 at 5:35
  • 3
    That does not use youtube-dl. It uses another program called mps-youtube. Correct? This question is about using youtube-dl and not about using mps-youtube. I always try my answers myself before posting. If I don't, I will make it clear that it is only a suggestion :) – DK Bose Feb 22 '14 at 5:58
  • 4
    This is not a duplicate. You can use youtube-dl to do this, but I can't answer this question because people have marked this as a duplicate. – palswim Sep 8 '16 at 22:12
179

Here is a recent article in webupd8.org that explains how to use youtube-dl to directly download audio instead of first downloading video+audio and then extracting audio using -x. Unfortunately, the search facility that Maythux asked for here isn't offered. But it is still worth a look:
Video Downloader youtube-dl Gets Support For Separate Audio And Video YouTube DASH Streams

Basically, download the latest version of youtube-dl from source or from the ppa offered in the link above but not from the Software Center.

Then, if you already have the video link ...

Run, as example:

youtube-dl -F http://www.youtube.com/watch?v=HRIF4_WzU1w

This will list the various download formats available for this url (audio and video).

$ youtube-dl -F http://www.youtube.com/watch?v=HRIF4_WzU1w
[youtube] Setting language
[youtube] HRIF4_WzU1w: Downloading webpage
[youtube] HRIF4_WzU1w: Downloading video info webpage
[youtube] HRIF4_WzU1w: Extracting video information
[info] Available formats for HRIF4_WzU1w:
format code extension resolution  note 
171         webm      audio only  DASH webm audio , audio@ 48k (worst)
140         m4a       audio only  DASH audio , audio@128k
160         mp4       192p        DASH video 
133         mp4       240p        DASH video 
134         mp4       360p        DASH video 
135         mp4       480p        DASH video 
17          3gp       176x144     
36          3gp       320x240     
5           flv       400x240     
43          webm      640x360     
18          mp4       640x360     (best)

Now, choose desired audio format. I went for 140

Run:

youtube-dl -f 140 http://www.youtube.com/watch?v=HRIF4_WzU1w

$ youtube-dl -f 140 http://www.youtube.com/watch?v=HRIF4_WzU1w
[youtube] Setting language
[youtube] HRIF4_WzU1w: Downloading webpage
[youtube] HRIF4_WzU1w: Downloading video info webpage
[youtube] HRIF4_WzU1w: Extracting video information
[download] Destination: Martin Luther King - I Have a Dream on August 28, 1963 [Sous-titres & Subtitles] [FULL SPEECH]-HRIF4_WzU1w.m4a
[download] 100% of 15.19MiB in 00:04

That's it.

| improve this answer | |
  • 4
    Some audio players do not support DASH audio. For m4a, I had to demux it to make it a 'regular' m4a using ffmpeg. For example: ffmpeg -i input.m4a -vn -c:a copy output.m4a – Sun Nov 7 '14 at 8:14
  • 10
    @sunk818 and just a public announcement that: youtube-dl 2015.01.23.4 and newer will automatically correct the header of the m4a file if ffmpeg is present on the system. So, if ffmpeg is installed before youtube-dl is called now it will automatically fix the DASH container and you won't need to run sunk818's fix. – tsujp Apr 21 '15 at 16:15
  • 29
    youtube-dl -f bestaudio http://... if you don't want to select best audio manually. – Seppo Erviälä Nov 19 '15 at 13:27
  • 11
    be careful with -f bestaudio as best audio could be .webm and not .m4a Use -f m4a if you want best m4a quality audio. – Sun Apr 13 '16 at 23:31
  • 9
    youtube-dl -f 'bestaudio[ext=m4a]' "http://youtu.be/hTvJoYnpeRQ" – xiota May 9 '18 at 8:19
44

From @xiota's comment, to download the best audio in m4a format:

$ youtube-dl -f 'bestaudio[ext=m4a]' 'http://youtu.be/hTvJoYnpeRQ'

I've missed it on the first reading, so I've decided to post the comment as an answer to make it more visible.

| improve this answer | |
  • 1
    This gives 2 errors, one for format not available and the other for failing to parse the url, – Atte Juvonen Oct 24 '18 at 19:08
  • @AtteJuvonen the command works as is. – jfs Oct 24 '18 at 19:25
  • 1
    No it doesn't. WARNING: The url doesn't specify the protocol, trying with http ... Warning: Could not send HEAD request to http://'youtu.be/hTvJoYnpeRQ'. If I fix the url by removing the ' characters, then it gives ERROR: requested format not available. – Atte Juvonen Nov 21 '18 at 21:42
  • 1
    @AtteJuvonen try to copy the command as is If it is still failing for you, provide your OS, youtube-dl version. – jfs Nov 22 '18 at 4:33
  • 10
    @AtteJuvonen the site is "Ask Ubuntu". I tested the command on Ubuntu. Ubuntu is different from Windows. The command in the answer expects a bash-like shell. On Windows, for cmd.exe you could try to replace single quotes with doubles quotes (there could be other Windows related issues). – jfs Nov 23 '18 at 16:34
16

I have this alias to easily download any audio with better filenames:

$ alias | grep audio

alias youtube-dl-audio='youtube-dl --ignore-errors --output "%(title)s.%(ext)s" --extract-audio --audio-format mp3'

Audio quality: From the documentation: "By default youtube-dl tries to download the best available quality, i.e. if you want the best quality you don't need to pass any special options, youtube-dl will guess it for you by default.". So there's no need for --audio-quality 0 or -f bestaudio.

Updates: Download last version of youtube-dl. Avoid repo or ppa version so you can upgrade with youtube-dl -U (necessary quite often).

Albums: You can split the file into chunks/tracks with mp3split.

Error 403?: Add --rm-cache-dir.

Moreover

ytmdl: A simple script to get songs from YouTube in mp3 format with all tags from iTunes

MP3 Tagging: I’m still trying to find a reliable CLI tool to fix and tag all the generated mp3:

| improve this answer | |
  • 1
    Thank you, this was useful for me. – aaandre Jan 28 at 22:44
  • Ok, so what is the BITRATE of this? – PYK Aug 25 at 13:53

Not the answer you're looking for? Browse other questions tagged or ask your own question.