Youtube-dl

From Leo's Notes
Last edited on 30 December 2021, at 02:30.

Youtube-dl is a python based utility that downloads Youtube videos. As of 2021, there is a fork called yt-dlp (https://github.com/yt-dlp/yt-dlp) which includes additional features such as SponsorBlock integration as well as fixes that is causing youtube-dl to download at a slow speed (~50kb/s).

Basic Usage[edit | edit source]

To download a video with youtube-dl, just pass the YouTube URL as an argument. This will download the video in the highest quality.

$ youtube-dl "http://youtube.com/watch?v=xxx"

Listing All Available Formats[edit | edit source]

$ youtube-dl -F "http://youtube.com/watch?v=xxx"

Download a Specific Format[edit | edit source]

Say you want to download just the DASH audio from a video:

$ youtube-dl -f 141 "http://youtube.com/watch?v=xxx"

Downloading Audio[edit | edit source]

When downloading DASH audio using youtube-dl, you must convert the audio in order to play it using an audio player using ffmpeg.

$ ffmpeg -i input.m4a -vn -acodec copy output.m4a

This is needed since the MP4 container from youtube is set to dash rather than m4a and isn't recognized by most players.

Download with (auto-generated) subtitles[edit | edit source]

List all subtitles that are available for a video with:

$ youtube-dl --list-subs "http://youtube.com/watch?v=xxx"
Available automatic captions for xxx
Language formats
af       vtt, ttml, srv3, srv2, srv1
...

To retrieve autogenerated subtitles, specify the desired language(s) and pass in the --write-auto-sub:

$ youtube-dl --write-auto-sub --sub-lang de,en "http://youtube.com/watch?v=xxx"

You may also download a subtitle after the fact separately, but you may want to also convert the .vtt file to a .srt with ffmpeg:

$ youtube-dl --write-sub --sub-lang de "http://youtube.com/watch?v=xxx"
## This creates a .vtt subtitle. Convert with:
$ ffmpeg -i *vtt out.srt

Other[edit | edit source]

Merging Audio / Video[edit | edit source]

This is the command youtube-dl invokes in order to merge audio and video.

$ ffmpeg command line: ffmpeg -y -i 'file:V.webm' -i 'file:A.m4a' -c copy -map 0:v:0 -map 1:a:0 'file:AV.mkv'

Troubleshooting[edit | edit source]

Youtube-dl is downloading videos very slowly[edit | edit source]

This is a known issue which has recently started happening. Users report that this issue is fixed by using yt-dlp (https://github.com/yt-dlp/yt-dlp).