更新於 2024/09/24閱讀時間約 20 分鐘

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

介紹

  • 名稱:yt-dlp
  • 描述:yt-dlp 是 command line 下載 YouTube, TikTok, Instagram, X, PornHub 影片的好幫手,可以避免使用一些有廣告下載網站
  • 網站:https://github.com/yt-dlp/yt-dlp

支援的網站相當多可以參考這邊的網站列表。

安裝

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

下載不同畫質與格式

預設會下載最高畫質的影片,如果要不同畫質或格式可以用 -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 CHFILESIZE TBR PROTOVCODEC 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 卡內,像是 -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 ,搭配使用的瀏覽器像是 safarifirefoxchrome 等

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

Mac 要啟用完全取用磁碟

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

發生 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

參考資料


如果你喜歡我的文章,你可以使用以下的方式支持我

👀 追蹤我的社群帳號

👏 Vocus 支持我

  1. 追蹤
  2. 留言、收藏、按喜歡
  3. 贊助

💰 使用下面的推薦連結註冊或申辦服務



分享至
成為作者繼續創作的動力吧!
© 2024 vocus All rights reserved.