Ubuntuにyt-dlpをインストール
事前準備(推奨)
ffmpegがないと、音声と動画の結合や、ファイル形式の指定などが期待通り動作しません。
sudo apt updatesudo apt install ffmpegsudo apt updatesudo apt install curl tar xz-utils
curl -L -O https://github.com/BtbN/FFmpeg-Builds/releases/download/latest/ffmpeg-master-latest-linux64-gpl.tar.xztar xf ffmpeg-master-latest-linux64-gpl.tar.xzsudo cp ffmpeg-master-latest-linux64-gpl/bin/ff* /usr/local/bin/rm -rf ffmpeg-master-latest-linux64-gpl*インストール
アップデート
pipxの場合:pipx upgrade yt-dlp- 公式バイナリの場合:
yt-dlp -U aptの場合:sudo apt update && sudo apt upgrade yt-dlp
動画をダウンロード
例として、「YOASOBI「アイドル」 Official Music Video」(https://www.youtube.com/watch?v=ZRtdQ81jPUQ)をダウンロードします。
yt-dlp -t mp4 -o '%(id)s_%(title)s.%(ext)s' 'https://www.youtube.com/watch?v=ZRtdQ81jPUQ'-o '%(id)s_%(title)s.%(ext)s'の指定により、
ZRtdQ81jPUQ_YOASOBI「アイドル」 Official Music Video.mp4のようなファイル名で出力されます。
詳細
最高品質の動画ファイル
yt-dlp -f "bv+ba/b" -o '%(id)s_%(title)s.%(ext)s' 'https://www.youtube.com/watch?v=ZRtdQ81jPUQ'フォーマット一覧を確認
yt-dlp -F 'https://www.youtube.com/watch?v=ZRtdQ81jPUQ'実行結果
[youtube] Extracting URL: https://www.youtube.com/watch?v=ZRtdQ81jPUQ[youtube] ZRtdQ81jPUQ: Downloading webpage[youtube] ZRtdQ81jPUQ: Downloading android vr player API JSON[youtube] ZRtdQ81jPUQ: Downloading web safari player API JSON[youtube] ZRtdQ81jPUQ: Downloading player fd1b5dc8-tv[youtube] [jsc:deno] Solving JS challenges using deno[youtube] ZRtdQ81jPUQ: Downloading m3u8 information[info] Available formats for ZRtdQ81jPUQ:ID EXT RESOLUTION FPS CH │ FILESIZE TBR PROTO │ VCODEC VBR ACODEC ABR ASR MORE INFO───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────sb3 mhtml 48x27 0 │ mhtml │ images storyboardsb2 mhtml 80x45 1 │ mhtml │ images storyboardsb1 mhtml 160x90 1 │ mhtml │ images storyboardsb0 mhtml 320x180 1 │ mhtml │ images storyboard139 m4a audio only 2 │ 1.31MiB 49k https │ audio only mp4a.40.5 49k 22k [ja] low, m4a_dash249 webm audio only 2 │ 1.31MiB 49k https │ audio only opus 49k 48k [ja] low, webm_dash140 m4a audio only 2 │ 3.49MiB 129k https │ audio only mp4a.40.2 129k 44k [ja] medium, m4a_dash251 webm audio only 2 │ 3.35MiB 124k https │ audio only opus 124k 48k [ja] medium, webm_dash91 mp4 256x144 24 │ ~ 4.60MiB 171k m3u8 │ avc1.4D400C mp4a.40.5 [ja]28行の折りたたみ
160 mp4 256x144 24 │ 1.80MiB 67k https │ avc1.4d400c 67k video only 144p, mp4_dash278 webm 256x144 24 │ 1.88MiB 70k https │ vp9 70k video only 144p, webm_dash394 mp4 256x144 24 │ 1.63MiB 61k https │ av01.0.00M.08 61k video only 144p, mp4_dash92 mp4 426x240 24 │ ~ 8.38MiB 311k m3u8 │ avc1.4D4015 mp4a.40.5 [ja]133 mp4 426x240 24 │ 3.76MiB 140k https │ avc1.4d4015 140k video only 240p, mp4_dash242 webm 426x240 24 │ 3.57MiB 133k https │ vp9 133k video only 240p, webm_dash395 mp4 426x240 24 │ 2.83MiB 105k https │ av01.0.00M.08 105k video only 240p, mp4_dash93 mp4 640x360 24 │ ~ 21.63MiB 803k m3u8 │ avc1.4D401E mp4a.40.2 [ja]134 mp4 640x360 24 │ 7.31MiB 272k https │ avc1.4d401e 272k video only 360p, mp4_dash18 mp4 640x360 24 2 │ ≈ 10.78MiB 401k https │ avc1.42001E mp4a.40.2 44k [ja] 360p243 webm 640x360 24 │ 7.44MiB 276k https │ vp9 276k video only 360p, webm_dash396 mp4 640x360 24 │ 5.24MiB 195k https │ av01.0.01M.08 195k video only 360p, mp4_dash94 mp4 854x480 24 │ ~ 36.46MiB 1353k m3u8 │ avc1.4D401E mp4a.40.2 [ja]135 mp4 854x480 24 │ 11.72MiB 435k https │ avc1.4d401e 435k video only 480p, mp4_dash244 webm 854x480 24 │ 11.75MiB 437k https │ vp9 437k video only 480p, webm_dash397 mp4 854x480 24 │ 8.55MiB 318k https │ av01.0.04M.08 318k video only 480p, mp4_dash95 mp4 1280x720 24 │ ~ 63.17MiB 2345k m3u8 │ avc1.4D401F mp4a.40.2 [ja]136 mp4 1280x720 24 │ 19.43MiB 722k https │ avc1.4d401f 722k video only 720p, mp4_dash247 webm 1280x720 24 │ 23.85MiB 886k https │ vp9 886k video only 720p, webm_dash398 mp4 1280x720 24 │ 15.10MiB 561k https │ av01.0.05M.08 561k video only 720p, mp4_dash96 mp4 1920x1080 24 │ ~126.46MiB 4694k m3u8 │ avc1.640028 mp4a.40.2 [ja]137 mp4 1920x1080 24 │ 70.55MiB 2621k https │ avc1.640028 2621k video only 1080p, mp4_dash248 webm 1920x1080 24 │ 43.28MiB 1608k https │ vp9 1608k video only 1080p, webm_dash399 mp4 1920x1080 24 │ 31.90MiB 1185k https │ av01.0.08M.08 1185k video only 1080p, mp4_dash271 webm 2560x1440 24 │ 205.00MiB 7618k https │ vp9 7618k video only 1440p, webm_dash400 mp4 2560x1440 24 │ 155.96MiB 5795k https │ av01.0.12M.08 5795k video only 1440p, mp4_dash313 webm 3840x2160 24 │ 443.00MiB 16462k https │ vp9 16462k video only 2160p, webm_dash401 mp4 3840x2160 24 │ 351.15MiB 13049k https │ av01.0.12M.08 13049k video only 2160p, mp4_dashID 91をダウンロード
yt-dlp -f 91 'https://www.youtube.com/watch?v=ZRtdQ81jPUQ'最高品質の音声ファイル
yt-dlp -f 'ba' -o '%(id)s_%(title)s.%(ext)s' 'https://www.youtube.com/watch?v=ZRtdQ81jPUQ'
# mp3 形式が欲しい場合# yt-dlp -x --audio-format mp3 --audio-quality 0 -o '%(id)s_%(title)s.%(ext)s' 'https://www.youtube.com/watch?v=ZRtdQ81jPUQ'# または# yt-dlp -t mp3 -o '%(id)s_%(title)s.%(ext)s' 'https://www.youtube.com/watch?v=ZRtdQ81jPUQ'Bot対策(Cookie)
以下のようなエラーが発生することがあります。
ERROR: [youtube] ZRtdQ81jPUQ: Sign in to confirm you’re not a bot. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies以下のような対策があります。どちらも、自身の非公開動画をダウンロードすることもできるようになります。
- 手軽:
--cookies-from-browser(そのマシンのブラウザから直接読む) - 使い回したい: Cookie ファイル(Netscape 形式)を用意して
--cookiesで読む
yt-dlp -t mp4 --cookies-from-browser brave 'https://www.youtube.com/watch?v=ZRtdQ81jPUQ'ここでは複数のマシンで使い回せるように、Cookie ファイルを使用する方法を試しました(https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies)。
ブラウザとしてBrave(Chromium ベース)を使用していたので、拡張機能Get cookies.txt LOCALLYを使って出力しました。(Firefox 系: cookies.txt)
以下のような Cookie ファイルが得られます(Netscape フォーマット)。
# Netscape HTTP Cookie File# https://curl.haxx.se/rfc/cookie_spec.html# This is a generated file! Do not edit.
.youtube.com TRUE / TRUE 1766226956 GPS 1.youtube.com TRUE / TRUE 1781777174 PREF f6=40000000&tz=Asia.Tokyo21行の折りたたみ
.youtube.com TRUE / TRUE 1781777171 __Secure-1PSIDTS sidts-XXXXXXXXXXXXXXXXX.youtube.com TRUE / TRUE 1781777171 __Secure-3PSIDTS sidts-XXXXXXXXXXXXXXXXX.youtube.com TRUE / FALSE 1781777171 HSID XXXXXXXXXXXXXXXXX.youtube.com TRUE / TRUE 1781777171 SSID XXXXXXXXXXXXXXXXX.youtube.com TRUE / FALSE 1781777171 APISID XXXXXXXXXXXXXXXXX.youtube.com TRUE / TRUE 1781777171 SAPISID XXXXXXXXXXXXXXXXX.youtube.com TRUE / TRUE 1781777171 __Secure-1PAPISID XXXXXXXXXXXXXXXXX.youtube.com TRUE / TRUE 1781777171 __Secure-3PAPISID XXXXXXXXXXXXXXXXX.youtube.com TRUE / FALSE 1781777171 SID XXXXXXXXXXXXXXXXX.youtube.com TRUE / TRUE 1781777171 __Secure-1PSID XXXXXXXXXXXXXXXXX.youtube.com TRUE / TRUE 1781777171 __Secure-3PSID XXXXXXXXXXXXXXXXX.youtube.com TRUE / TRUE 1781777171 LOGIN_INFO XXXXXXXXXXXXXXXXX.youtube.com TRUE / TRUE 1766225774 CONSISTENCY XXXXXXXXXXXXXXXXX.youtube.com TRUE / FALSE 1781777186 SIDCC XXXXXXXXXXXXXXXXX.youtube.com TRUE / TRUE 1781777186 __Secure-1PSIDCC XXXXXXXXXXXXXXXXX.youtube.com TRUE / TRUE 1781777186 __Secure-3PSIDCC XXXXXXXXXXXXXXXXX.youtube.com TRUE / TRUE 1781777155 __Secure-YNID XXXXXXXXXXXXXXXXX.youtube.com TRUE / TRUE 0 YSC XXXXXXXXXXXXXXXXX.youtube.com TRUE / TRUE 1781777177 VISITOR_INFO1_LIVE XXXXXXXXXXXXXXXXX.youtube.com TRUE / TRUE 1781777177 VISITOR_PRIVACY_METADATA XXXXXXXXXXXXXXXXX.youtube.com TRUE / TRUE 1781777156 __Secure-ROLLOUT_TOKEN XXXXXXXXXXXXXXXXXコマンドで--cookies www.youtube.com_cookies.txtのように指定します。
yt-dlp -t mp4 --cookies www.youtube.com_cookies.txt -o '%(id)s_%(title)s.%(ext)s' 'https://www.youtube.com/watch?v=ZRtdQ81jPUQ'オプションが長いので、
~/.config/yt-dlp/config~/yt-dlp.conf~/yt-dlp.conf.txt~/.yt-dlp/config~/.yt-dlp/config.txt
などの設定ファイルに記述しておくと便利です。
mkdir -p ~/.config/yt-dlp ~/.local/share/yt-dlpmv www.youtube.com_cookies.txt ~/.local/share/yt-dlp/chmod 600 ~/.local/share/yt-dlp/www.youtube.com_cookies.txt
cat > ~/.config/yt-dlp/config <<'EOF'--cookies ${HOME}/.local/share/yt-dlp/www.youtube.com_cookies.txt-o %(id)s_%(title)s.%(ext)sEOFyt-dlp -t mp4 ZRtdQ81jPUQおまけ
-
再取得防止
--download-archiveオプションを追加します。Terminal window yt-dlp --download-archive archive.txt -t mp4 "URL"archive.txtにはサービス名と ID が書き込まれます。youtube ZRtdQ81jPUQtiktok 76XXXXXXXXXXXXXXXXX一度ダウンロードした動画をダウンロードしようとすると、スキップしてくれます。
-
切り抜き
--download-sectionsオプションを追加します。動画の 55 秒から 1 分 7 秒までをダウンロードする場合は、
"*00:00:55-00:01:07"のように指定します。Terminal window yt-dlp -f "bv+ba/b" \--download-sections "*00:00:55-00:01:07" \-o "%(title)s_%(section_start)s-%(section_end)s.%(ext)s" \ZRtdQ81jPUQ動画の先頭に余分な映像(真っ黒)がついてくることがあります。
--force-keyframes-at-cutsにより改善することがありますが、エンコード処理に時間がかかります。Terminal window yt-dlp -f "bv+ba/b" \--download-sections "*00:00:55-00:01:07" \--force-keyframes-at-cuts \-o "%(title)s_%(section_start)s-%(section_end)s.%(ext)s" \ZRtdQ81jPUQ時間指定であれば全体をダウンロードしないので効率的で早いと思ったら、エンコード処理が足を引っ張りむしろ遅く感じる、みたいなこともあります。
超長い尺の動画から一瞬だけ切り抜くなら上記の時間指定がよいと思います。
-
ファイル名に使える文字を制限
--restrict-filenamesオプションを追加します。Restrict filenames to only ASCII characters, and avoid ”&” and spaces in filenames
環境によっては、ファイル名に日本語のような文字は避けた方がよいことがあります。
Terminal window yt-dlp --restrict-filenames -t mp4 "URL"他のオプションなしで、
--restrict-filenamesオプションを- 含めない場合はそのまま、
YOASOBI「アイドル」 Official Music Video [ZRtdQ81jPUQ].mp4 - 含める場合は日本語が消えて、
YOASOBI_Official_Music_Video-[ZRtdQ81jPUQ].mp4
- 含めない場合はそのまま、
-
TikTok
yt-dlpという名前ですが、TikTok にも対応しています。--user-agent "abc"のように、ユーザーエージェントとしてabcを指定すると、ブロックされることが減りました。一般的なユーザーエージェントだとあまり効果なかったです。エンジニアのデバッグ用?ダウンロード方法は YouTube と同様です。
Terminal window yt-dlp --user-agent "abc" https://www.tiktok.com/@yoasobi_ayase_ikura/video/7234009304888577287