Downloading Music from YouTube
Beware of the YouTube video licensing, the terms you agreed to, and licensing laws where you live.
Programs used:
-
A command line tool to download a YouTube video in (one of) its various provided formats
To download the Opus audio track of the video
-
A feature rich audio and video encoder and muxer
To copy the audio (without reencoding) into the
.opus
format
Downloading the Audio
<URL>
will be replaced by the full video URL by you.
First, you will list the available formats.
youtube-dl -F <URL>
for example
youtube-dl -F https://www.youtube.com/watch?v=DXNJUbjf8Ms
The -F
parameter will list the available video and audio formats of the video.
For the example, that is
[info] Available formats for DXNJUbjf8Ms:
format code extension resolution note
249 webm audio only DASH audio 58k , opus @ 50k, 1.11MiB
250 webm audio only DASH audio 80k , opus @ 70k, 1.49MiB
140 m4a audio only DASH audio 127k , m4a_dash container, aac @128k (44100Hz), 2.70MiB
171 webm audio only DASH audio 132k , vorbis@128k (44100Hz), 2.67MiB
251 webm audio only DASH audio 146k , opus @160k, 2.91MiB
141 m4a audio only DASH audio 255k , m4a_dash container, aac @256k (44100Hz), 5.41MiB
242 webm 426x240 DASH video 98k , vp9, 30fps, video only, 805.08KiB
160 mp4 256x144 DASH video 112k , avc1.4d400c, 30fps, video only, 2.27MiB
[…]
You will be able to identify the audio-only files, and amongst them the best quality Opus one
251 webm audio only DASH audio 146k , opus @160k, 2.91MiB
That is the file (with ID 251
) we will download with the command
youtube-dl -f 251 https://www.youtube.com/watch?v=DXNJUbjf8Ms
Re-Muxing the webm audio to .opus
The process of packaging audio and video in a container is called muxing. We will copy the audio data from the webm file we downloaded to an .opus file.
ffmpeg -i "<Downloaded File>" -c copy "<Out File>.opus"
Although playing the webm
file will work in a lot of cases just as good, playing back the exact same audio data, the opus file format will specifically indicate its and opus audio (only) file, and audio players are more likely to recognize it as audio (they may filter out webm files expecting them to be videos).
Cutting the Audio
If the audio (video) has parts you do not want, you can simply drop those parts even without reencoding (which would lose data and as such quality – although probably unnoticable).
You can specify a start time and duration, or end time.
ffmpeg -ss <start time hh:mm:ss> -i in.webm -t <duration> -c copy out.opus
ffmpeg -ss <start time> -i in.webm -to <end time hh:mm:ss> -c copy out.opus`
ffmpeg -ss 00:03:45 -i in.webm -t 40 -c copy out.mp4