youtube-dl は、YouTube などの動画共有サービスから動画のダウンロードや音声の抽出を行うコマンドラインプログラムである。
Python で書かれているのでクロスプラットフォームである。Unlicense の下で配布されている。
youtube-dl - Wikipedia より
yt-dlp を推奨。
youtube-dl CUI
$ pip install youtube-dl
youtube-dl-gui GUI
$ pip install youtube-dl-gui
Youtube-DLG - YouTube や他の動画サイトから動画をダウンロード (Windows)
$ git clone https://github.com/ytdl-org/youtube-dl.git
$ git clone https://github.com/MrS0m30n3/youtube-dl-gui.git
youtube-dl-gui のバイナリインストーラは以下からダウンロードできる。
youtube-dlg
mp4 コンテナに最高画質/最高音質で保存する。
$ youtube-dl --format "bestvideo+bestaudio[ext=m4a]/bestvideo+bestaudio/best" --merge-output-format mp4 <url>
$ youtube-dl --format "bestvideo+bestaudio[ext=m4a]/bestvideo+bestaudio/best" --merge-output-format mp4 https://www.youtube.com/watch?v=PQhWrgVWHXU
[youtube] PQhWrgVWHXU: Downloading webpage [download] Destination: 吉幾三「百年桜」MV(2020年4月29日発売)-PQhWrgVWHXU.f137.mp4 [download] 100% of 101.66MiB in 00:18 [download] Destination: 吉幾三「百年桜」MV(2020年4月29日発売)-PQhWrgVWHXU.f140.m4a [download] 100% of 4.72MiB in 00:01 [ffmpeg] Merging formats into "吉幾三「百年桜」MV(2020年4月29日発売)-PQhWrgVWHXU.mp4" Deleting original file 吉幾三「百年桜」MV(2020年4月29日発売)-PQhWrgVWHXU.f137.mp4 (pass -k to keep) Deleting original file 吉幾三「百年桜」MV(2020年4月29日発売)-PQhWrgVWHXU.f140.m4a (pass -k to keep)
m4a コンテナに最高音質で音声のみ保存する。
youtube-dl が AtomicParsley を使用して m4a にサムネイル画像を埋め込むので、予め scoop などでインストールしておく。
Windows の場合は scoop コマンドで AtomicParsley をインストールしてから youtube-dl でダウンロードする。
$ scoop install atomicparsley
Installing 'atomicparsley' (0.9.0) [64bit] AtomicParsley-win32-0.9.0.zip (438.9 KB) [================================================] 100% Checking hash of AtomicParsley-win32-0.9.0.zip ... ok. Extracting AtomicParsley-win32-0.9.0.zip ... done. Linking ~\scoop\apps\atomicparsley\current => ~\scoop\apps\atomicparsley\0.9.0 Creating shim for 'AtomicParsley'. 'atomicparsley' (0.9.0) was installed successfully!
$ youtube-dl -f bestaudio[ext=m4a] --embed-thumbnail --add-metadata <url>
$ youtube-dl -f bestaudio[ext=m4a] --embed-thumbnail --add-metadata https://youtu.be/mzGo1Ar-f1w
[youtube] mzGo1Ar-f1w: Downloading webpage [youtube] mzGo1Ar-f1w: Downloading thumbnail ... [youtube] mzGo1Ar-f1w: Writing thumbnail to: ぜんぶ君のせいだ。「無題合唱」アニメーションMusicVideo-mzGo1Ar-f1w.webp [download] ぜんぶ君のせいだ。「無題合唱」アニメーションMusicVideo-mzGo1Ar-f1w.m4a has already been downloaded [download] 100% of 3.90MiB [ffmpeg] Correcting container in "ぜんぶ君のせいだ。「無題合唱」アニメーションMusicVideo-mzGo1Ar-f1w.m4a" [ffmpeg] Adding metadata to 'ぜんぶ君のせいだ。「無題合唱」アニメーションMusicVideo-mzGo1Ar-f1w.m4a' [ffmpeg] Converting thumbnail "ぜんぶ君のせいだ。「無題合唱」アニメーションMusicVideo-mzGo1Ar-f1w.webp" to JPEG [atomicparsley] Adding thumbnail to "ぜんぶ君のせいだ。「無題合唱」アニメーションMusicVideo-mzGo1Ar-f1w.m4a"
ダウンロード可能なフォーマットコードを調べる。
youtube-dl -F <url>
$ youtube-dl -F https://www.youtube.com/watch?v=PQhWrgVWHXU
[youtube] PQhWrgVWHXU: Downloading webpage [info] Available formats for PQhWrgVWHXU: format code extension resolution note 249 webm audio only tiny 54k , opus @ 50k (48000Hz), 1.79MiB 250 webm audio only tiny 72k , opus @ 70k (48000Hz), 2.37MiB 140 m4a audio only tiny 130k , m4a_dash container, mp4a.40.2@128k (44100Hz), 4.72MiB 251 webm audio only tiny 140k , opus @160k (48000Hz), 4.65MiB 394 mp4 256x144 144p 88k , av01.0.00M.08, 30fps, video only, 2.51MiB 278 webm 256x144 144p 97k , webm container, vp9, 30fps, video only, 3.20MiB 160 mp4 256x144 144p 112k , avc1.4d400c, 30fps, video only, 2.77MiB 395 mp4 426x240 240p 191k , av01.0.00M.08, 30fps, video only, 5.01MiB 242 webm 426x240 240p 223k , vp9, 30fps, video only, 5.82MiB 133 mp4 426x240 240p 293k , avc1.4d4015, 30fps, video only, 5.77MiB 396 mp4 640x360 360p 392k , av01.0.01M.08, 30fps, video only, 10.14MiB 243 webm 640x360 360p 409k , vp9, 30fps, video only, 10.61MiB 134 mp4 640x360 360p 658k , avc1.4d401e, 30fps, video only, 11.75MiB 397 mp4 854x480 480p 720k , av01.0.04M.08, 30fps, video only, 18.16MiB 244 webm 854x480 480p 758k , vp9, 30fps, video only, 17.61MiB 135 mp4 854x480 480p 858k , avc1.4d401f, 30fps, video only, 17.72MiB 398 mp4 1280x720 720p 1479k , av01.0.05M.08, 30fps, video only, 35.88MiB 247 webm 1280x720 720p 1511k , vp9, 30fps, video only, 33.09MiB 136 mp4 1280x720 720p 1836k , avc1.4d401f, 30fps, video only, 29.26MiB 248 webm 1920x1080 1080p 2673k , vp9, 30fps, video only, 77.89MiB 399 mp4 1920x1080 1080p 2689k , av01.0.08M.08, 30fps, video only, 63.94MiB 137 mp4 1920x1080 1080p 4568k , avc1.640028, 30fps, video only, 101.66MiB 18 mp4 640x360 360p 683k , avc1.42001E, 30fps, mp4a.40.2@ 96k (44100Hz), 24.91MiB (best)
フォーマットコードで形式を指定してダウンロードする。
youtube-dl -f <format code> <url>
$ youtube-dl -f 137 https://www.youtube.com/watch?v=PQhWrgVWHXU
[youtube] PQhWrgVWHXU: Downloading webpage [download] Destination: 吉幾三「百年桜」MV(2020年4月29日発売)-PQhWrgVWHXU.mp4 [download] 100% of 101.66MiB in 00:23
2021/6/17 頃から、サーバー側でスロットル制限が行なわれてランダムにダウンロード速度が低下している報告があがってましたが、2021/10/21 現在はすべてのダウンロード速度に規制がかかっている模様です🤔以下の文献などでも回避方法が議論されています😅💦
[YouTube] Randomly slow youtube download speed · Issue #29326 · ytdl-org/youtube-dl
Randomly slow youtube download speed · Issue #964 · fent/node-ytdl-core
VLC の本家でも議論されていますが、何点か回避方法が示されています🤤
YouTube Lua Video Lockup (#26174) · Issues · VideoLAN / VLC
$ youtube-dl -f bestaudio[ext=m4a] --embed-thumbnail --add-metadata https://youtu.be/mzGo1Ar-f1w
[youtube] mzGo1Ar-f1w: Downloading webpage [youtube] mzGo1Ar-f1w: Downloading thumbnail ... [youtube] mzGo1Ar-f1w: Writing thumbnail to: ぜんぶ君のせいだ。「無題合唱」アニメーションMusicVideo-mzGo1Ar-f1w.webp [download] Destination: ぜんぶ君のせいだ。「無題合唱」アニメーションMusicVideo-mzGo1Ar-f1w.m4a [download] 100% of 3.85MiB in 00:06 [ffmpeg] Correcting container in "ぜんぶ君のせいだ。「無題合唱」アニメーションMusicVideo-mzGo1Ar-f1w.m4a" [ffmpeg] Adding metadata to 'ぜんぶ君のせいだ。「無題合唱」アニメーションMusicVideo-mzGo1Ar-f1w.m4a' [ffmpeg] Converting thumbnail "ぜんぶ君のせいだ。「無題合唱」アニメーションMusicVideo-mzGo1Ar-f1w.webp" to JPEG ERROR: AtomicParsley was not found. Please install.
Windows の場合は scoop コマンドで AtomicParsley をインストールしてから youtube-dl でダウンロードする。
$ scoop install atomicparsley
Installing 'atomicparsley' (0.9.0) [64bit] AtomicParsley-win32-0.9.0.zip (438.9 KB) [================================================] 100% Checking hash of AtomicParsley-win32-0.9.0.zip ... ok. Extracting AtomicParsley-win32-0.9.0.zip ... done. Linking ~\scoop\apps\atomicparsley\current => ~\scoop\apps\atomicparsley\0.9.0 Creating shim for 'AtomicParsley'. 'atomicparsley' (0.9.0) was installed successfully!
$ youtube-dl https://www.youtube.com/watch?v=Hs-h6xmzaaU
[youtube] Hs-h6xmzaaU: Downloading webpage ERROR: unable to download video data: HTTP Error 403: Forbidden
youtube-dl のダウンロードキャッシュを削除する。
$ youtube-dl --rm-cache-dir
Removing cache dir C:\Users\tomoyan/.cache\youtube-dl ...
キャッシュ削除後に再度ダウンロードしなおす。
$ youtube-dl https://www.youtube.com/watch?v=Hs-h6xmzaaU
[youtube] Hs-h6xmzaaU: Downloading webpage [youtube] Hs-h6xmzaaU: Downloading js player vflset [youtube] Hs-h6xmzaaU: Downloading js player vflset [download] Destination: 高橋真梨子(たかはし まりこ) For You..( 歌詞付き).中日字幕.譚詠麟 霧之戀 - 原曲-Hs-h6xmzaaU.f248.webm [download] 100% of 19.66MiB in 00:06 [download] Destination: 高橋真梨子(たかはし まりこ) For You..( 歌詞付き).中日字幕.譚詠麟 霧之戀 - 原曲-Hs-h6xmzaaU.f251.webm [download] 100% of 4.46MiB in 00:01 [ffmpeg] Merging formats into "高橋真梨子(たかはし まりこ) For You..( 歌詞付き).中日字幕.譚詠麟 霧之戀 - 原曲-Hs-h6xmzaaU.webm" Deleting original file 高橋真梨子(たかはし まりこ) For You..( 歌詞付き).中日字幕.譚詠麟 霧之戀 - 原曲-Hs-h6xmzaaU.f248.webm (pass -k to keep) Deleting original file 高橋真梨子(たかはし まりこ) For You..( 歌詞付き).中日字幕.譚詠麟 霧之戀 - 原曲-Hs-h6xmzaaU.f251.webm (pass -k to keep)