python:youtube-dl

youtube-dl - YouTube や他の動画サイトから動画をダウンロード

Python youtube-dl format mp4
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"

エクスプローラで m4a のサムネイルをプレビューした様子。
エクスプローラ m4a サムネイル 001

ダウンロード可能なフォーマットコードを調べる。
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)
  • python/youtube-dl.txt
  • 最終更新: 2022/05/08 08:02
  • by ともやん