Skip to content

[Tool] yt-dlp 常用的影片類型與下載工具指令應用指南

Published: at 03:24 AM (4 min read)

Table of Contents

Open Table of Contents

🚨 注意事項

Youtube 官方有明訂 服務條款,請務必遵守相關規定,並尊重影片製作者的版權。

不得進行以下事項,存取、重製、下載、發布、傳輸、播送、顯示、出售、授權、修改、變更或以任何其他方式使用本「服務」的任何部分或任何「內容」,除非您 (a) 取得本「服務」的明確授權;或是 (b) 取得 YouTube 和相關著作權人 (如適用) 的事先書面許可。

https://www.youtube.com/static?template=terms

🪧 以下指令皆為 研究學術 用途,並未推廣任何 “下載”“分享” 影片致違反 著作權法版權 等行為,若有個人行為造成侵權,請自行負責。

簡介

yt-dlp

yt-dlp 是一個非常熱門的影片下載開源工具,如果你也有一點前端工程的基礎,有能力從頁面找出影片的網址,那麼 yt-dlp 絕對是幫你實現 「看得到就抓得到」 的好幫手。

這篇會紀錄面對不同類型的情境,你可以如何調整指令與參數內容等,可以順利抓取影片。

安裝

可以直接到 yt-dlp 下載執行檔,或是透過 Homebrew 安裝:

brew install yt-dlp

影片類型與指令指南

1. Youtube 公開影片或播放清單

將帶有 https://www.youtube.com/watch?v=... 的網址,直接帶入 yt-dlp 指令

# 預設是帶 `-f bestvideo*+bestaudio/best` 參數,自動下載最佳畫質與音質。
yt-dlp "https://www.youtube.com/watch?v=PldGjHwhdtE"

# 列出可下載的格式
yt-dlp --list-formats "https://www.youtube.com/watch?v=PldGjHwhdtE"

# 下載指定格式(可用參考格式請參考 `--list-formats`)
# yt-dlp -f #{format id} "https://www.youtube.com/watch?v=PldGjHwhdtE"
yt-dlp -f 22 "https://www.youtube.com/watch?v=PldGjHwhdtE"

2. Youtube 私人影片或登入後才能觀看的影片

請先在對應的瀏覽器登入 Youtube 帳號,並取得 cookie,再執行下列指令。

# 填寫你已登入的瀏覽器名稱,可以是 brave, chrome, chromium, edge, firefox, opera, safari, vivaldi, whale
yt-dlp --cookies-from-browser chrome "https://www.youtube.com/watch?v=9Kz5vf_uNfs"

3. HLS 串流影片

找到 video source 的網址,直接帶入 yt-dlp 指令 通常會是 .m3u8 或是 m3u 的檔案網址,另外要注意的是這類的影片可能會有加密的問題。

📌 如果影片有加密,會需要先在檔案中補上對應的解密資訊,再執行以下指令,

例如: video.m3u8 檔案內容如下

#EXTM3U
#EXT-X-VERSION:3
#EXT-X-TARGETDURATION:12
#EXT-X-MEDIA-SEQUENCE:0
#EXT-X-PLAYLIST-TYPE:VOD
👇 若影片有加密,請先確定有這行資訊的存在
#EXT-X-KEY:METHOD=AES-128,URI="data:application/octet-stream;base64,dGVzdA==",IV=0x5ee252b312f057d3deab6f98b5e48407
👆 從 devtool 及 network 追 code 可以找到對應的 key URI 與 IV 值
#EXTINF:12.000000,
https://example.com/video.ts
# 不是會員系統的公開影片網址
yt-dlp "https://example.com/video.m3u8"

# 需要會員系統登入後才能觀看的影片網址
yt-dlp --cookies-from-browser chrome "https://example.com/video.m3u8"

參考資料


Previous Post
[LeetCode] 19. Remove Nth Node From End of List
Next Post
[LeetCode] 17. Letter Combinations of a Phone Number