# yt-dlp - 萬能網路影片下載器支援 YouTube Shorts, TikTok, Instagram, X, PornHub

# 介紹

支援的網站相當多可以參考這邊 (opens new window)的網站列表。

# 安裝

Mac 可以用 brew 安裝

brew install yt-dlp

# 安裝 ffmpeg

因為 yt-dlp 會透過 ffmpeg 把 YouTube 的 webm 轉成 mp4 ,所以也要安裝 ffmpeg

brew install ffmpeg

# 基本使用

只要輸入 YouTube 影片的網址就會開始下載。

yt-dlp https://www.youtube.com/watch?v=dhLQS_XCG0g

接著就會開始下載影片

[youtube] Extracting URL: https://www.youtube.com/watch?v=dhLQS_XCG0g
[youtube] dhLQS_XCG0g: Downloading webpage
[youtube] dhLQS_XCG0g: Downloading ios player API JSON
[youtube] dhLQS_XCG0g: Downloading android player API JSON
[youtube] dhLQS_XCG0g: Downloading m3u8 information
[info] dhLQS_XCG0g: Downloading 1 format(s): 22
[download] Destination: NEW: YouTube Create App [dhLQS_XCG0g].mp4
[download] 100% of   10.34MiB in 00:00:00 at 20.30MiB/s

# 下載 mp3 檔

除了下載影片之外,也可以只下載 mp3 檔,用 --extract-audio --audio-format mp3 參數

yt-dlp --extract-audio --audio-format mp3 https://www.youtube.com/watch?v=dhLQS_XCG0g

# 轉換成 mp4 檔

如果要將下載的影片轉換成 mp4 格式可以用 --recode mp4 這個參數,就會用 ffmpeg 轉成 mp4 格式(如果格式已經是 mp4 就不會再轉一次)

yt-dlp --recode mp4 https://www.youtube.com/watch?v=dhLQS_XCG0g

# 下載不同畫質與格式

預設會下載最高畫質的影片,如果要不同畫質或格式可以用 -F 這個參數看有哪些畫質與格式

yt-dlp -F https://www.youtube.com/watch?v=dhLQS_XCG0g

接著就會列出這個影片所有的畫質與格式

[youtube] Extracting URL: https://www.youtube.com/watch?v=dhLQS_XCG0g
[youtube] dhLQS_XCG0g: Downloading webpage
[youtube] dhLQS_XCG0g: Downloading ios player API JSON
[youtube] dhLQS_XCG0g: Downloading android player API JSON
[youtube] dhLQS_XCG0g: Downloading m3u8 information
[info] Available formats for dhLQS_XCG0g:
ID  EXT   RESOLUTION FPS CH │   FILESIZE   TBR PROTO │ VCODEC          VBR ACODEC      ABR ASR MORE INFO
───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
sb2 mhtml 48x27        0    │                  mhtml │ images                                  storyboard
sb1 mhtml 80x45        0    │                  mhtml │ images                                  storyboard
sb0 mhtml 160x90       0    │                  mhtml │ images                                  storyboard
233 mp4   audio only        │                  m3u8  │ audio only          unknown             [en] Default
234 mp4   audio only        │                  m3u8  │ audio only          unknown             [en] Default
599 m4a   audio only      21.11MiB   31k https │ audio only          mp4a.40.5   31k 22k [en] ultralow, m4a_dash
600 webm  audio only      21.24MiB   35k https │ audio only          opus        35k 48k [en] ultralow, webm_dash
139 m4a   audio only      21.76MiB   49k https │ audio only          mp4a.40.5   49k 22k [en] low, m4a_dash
249 webm  audio only      21.83MiB   51k https │ audio only          opus        51k 48k [en] low, webm_dash
250 webm  audio only      22.42MiB   67k https │ audio only          opus        67k 48k [en] low, webm_dash
140 m4a   audio only      24.67MiB  129k https │ audio only          mp4a.40.2  129k 44k [en] medium, m4a_dash
251 webm  audio only      24.81MiB  134k https │ audio only          opus       134k 48k [en] medium, webm_dash
17  3gp   176x144      8  12.34MiB   65k https │ mp4v.20.3           mp4a.40.2       22k [en] 144p
597 mp4   256x144     15892.99KiB   24k https │ avc1.4d400b     24k video only          144p, mp4_dash
602 mp4   256x144     15    │ ~  2.95MiB   80k m3u8  │ vp09.00.10.08   80k video only
598 webm  256x144     15704.70KiB   19k https │ vp9             19k video only          144p, webm_dash
394 mp4   256x144     301.19MiB   33k https │ av01.0.00M.08   33k video only          144p, mp4_dash
269 mp4   256x144     30    │ ~  4.04MiB  110k m3u8  │ avc1.4D400C    110k video only
160 mp4   256x144     30902.99KiB   24k https │ avc1.4D400C     24k video only          144p, mp4_dash
603 mp4   256x144     30    │ ~  5.67MiB  154k m3u8  │ vp09.00.11.08  154k video only
278 webm  256x144     301.77MiB   49k https │ vp09.00.11.08   49k video only          144p, webm_dash
395 mp4   426x240     301.37MiB   38k https │ av01.0.00M.08   38k video only          240p, mp4_dash
229 mp4   426x240     30    │ ~  5.11MiB  139k m3u8  │ avc1.4D4015    139k video only
133 mp4   426x240     301.36MiB   38k https │ avc1.4D4015     38k video only          240p, mp4_dash
604 mp4   426x240     30    │ ~  7.37MiB  200k m3u8  │ vp09.00.20.08  200k video only
242 webm  426x240     301.76MiB   49k https │ vp09.00.20.08   49k video only          240p, webm_dash
396 mp4   640x360     302.42MiB   67k https │ av01.0.01M.08   67k video only          360p, mp4_dash
230 mp4   640x360     30    │ ~ 10.41MiB  282k m3u8  │ avc1.4D401E    282k video only
134 mp4   640x360     302.27MiB   63k https │ avc1.4D401E     63k video only          360p, mp4_dash
18  mp4   640x360     30  212.55MiB  348k https │ avc1.42001E         mp4a.40.2       44k [en] 360p
605 mp4   640x360     30    │ ~ 14.84MiB  402k m3u8  │ vp09.00.21.08  402k video only
243 webm  640x360     302.85MiB   79k https │ vp09.00.21.08   79k video only          360p, webm_dash
397 mp4   854x480     303.75MiB  104k https │ av01.0.04M.08  104k video only          480p, mp4_dash
231 mp4   854x480     30    │ ~ 13.14MiB  356k m3u8  │ avc1.4D401F    356k video only
135 mp4   854x480     303.27MiB   91k https │ avc1.4D401F     91k video only          480p, mp4_dash
606 mp4   854x480     30    │ ~ 18.43MiB  500k m3u8  │ vp09.00.30.08  500k video only
244 webm  854x480     303.85MiB  107k https │ vp09.00.30.08  107k video only          480p, webm_dash
22  mp4   1280x720    30  2 │ ≈ 10.58MiB  287k https │ avc1.64001F         mp4a.40.2       44k [en] 720p
398 mp4   1280x720    306.58MiB  183k https │ av01.0.05M.08  183k video only          720p, mp4_dash
232 mp4   1280x720    30    │ ~ 19.58MiB  531k m3u8  │ avc1.4D401F    531k video only
136 mp4   1280x720    305.70MiB  158k https │ avc1.4D401F    158k video only          720p, mp4_dash
609 mp4   1280x720    30    │ ~ 28.05MiB  761k m3u8  │ vp09.00.31.08  761k video only
247 webm  1280x720    305.94MiB  165k https │ vp09.00.31.08  165k video only          720p, webm_dash
399 mp4   1920x1080   3011.89MiB  330k https │ av01.0.08M.08  330k video only          1080p, mp4_dash
270 mp4   1920x1080   30    │ ~ 68.55MiB 1859k m3u8  │ avc1.640028   1859k video only
137 mp4   1920x1080   3021.80MiB  605k https │ avc1.640028    605k video only          1080p, mp4_dash
614 mp4   1920x1080   30    │ ~ 51.13MiB 1387k m3u8  │ vp09.00.40.08 1387k video only
248 webm  1920x1080   3011.59MiB  322k https │ vp09.00.40.08  322k video only          1080p, webm_dash
616 mp4   1920x1080   30    │ ~125.54MiB 3405k m3u8  │ vp09.00.40.08 3405k video only          Premium

要下載不同格式只要使用 -f 'video code+audio code 就可以抓不同畫質與音質的影片,例如要抓 1280 x 720 的畫質,就選 video code 136 跟 audio code 140,這樣 yt-dlp 就會抓對應的畫質與音質的影片下來了

yt-dlp -f '136+140' https://www.youtube.com/watch?v=dhLQS_XCG0g

# 指定路徑

預設會下載到目前的資料夾,用 -P 可以指定下載的路徑,像院長為了保護 SSD 就會把路徑指定到 SD 卡 (opens new window)內,像是 -P /Volumes/SD/video

yt-dlp -P /Volumes/SD/video https://www.youtube.com/watch?v=dhLQS_XCG0g

# 疑難雜症

# 沒辦法下載 X - Twitter 影片

因為 X - Twitter 要登入才能觀看影片所以會出下面的錯誤

[twitter] Some metadata is missing without authentication. Use --cookies, --cookies-from-browser, --username and --password, --netrc-cmd, or --netrc (twitter) to provide account credentials

這可以透過 --cookies-from-browser 這個參數去讀取 browser 的 cookies ,搭配使用的瀏覽器像是 safari, firefox, chrome

yt-dlp --cookies-from-browser safari https://twitter.com/username/status/1234567890987654321

# Mac 要啟用完全取用磁碟

上面提到讀取 browser 的 cookies ,如果是使用 Mac 還要允許 iTrem 完全取用磁碟,在 系統設定隱私權與安全性完全取用磁碟 內允許 iTrem 完全取用磁碟。

yt-dlp - Mac 啟用完全取用磁碟

# 發生 File name too long 怎麼解決

預設檔名會是影片的名稱,但是像 X - Twitter 沒有影片名稱就會抓這篇推文所有的內容來當作名稱,有時候會遇到 ERROR: unable to open for writing: [Errno 36] File name too long: 問題。

這可以透過 -o 指定檔名來處理,像是 -o "%(id)s.%(ext)s" 就會用 X - Twitter 的 ID 作為檔名就可以解決檔名太長的問題

yt-dlp --cookies-from-browser safari -o "%(id)s.%(ext)s" https://twitter.com/username/status/1234567890987654321

# 參考資料

Cannot get cookies from Safari. · Issue #7392 · yt-dlp/yt-dlp · GitHub (opens new window) Unable to download videos due to "File name too long" · Issue #2329 · yt-dlp/yt-dlp · GitHub (opens new window) How to download an MP4 from YouTube, every time | Jeff Geerling (opens new window)

Last Updated: 2023-10-10 14:24:59
贊助商連結
    贊助商連結
    (adsbygoogle = window.adsbygoogle || []).push({});