2025-02-23

用yt-dlp下載Youtube影片

 1. 安裝yt-dlp

開啟Windows終端機或Powershell

輸入指令安裝yt-dlp和ffmpeg : winget install yt-dlp ffmpeg

日後更新指令:winget upgrade yt-dlp

ffmpeg會安裝到C:\Users\你的使用者名稱\AppData\Local\Microsoft\WinGet\Packages\Gyan.FFmpeg_Microsoft.Winget.Source_8wekyb3d8bbwe

搜尋編輯系統環境變數















點選環境變數 → 系統變數 → 對Path點二下

點選新增環境變數,輸入路徑。把你的使用者名稱換成你的帳號名稱,並請注意ffmpeg-後面的版本號碼
C:\Users\你的使用者名稱\AppData\Local\Microsoft\WinGet\Packages\Gyan.FFmpeg_Microsoft.Winget.Source_8wekyb3d8bbwe\ffmpeg-7.0.1-full_build\bin

設定後如圖所示



















重新開啟Windows終端機,輸入ffmpeg version看有沒有跳出版本資訊,有的話就是設定成功了











2. yt-dlp下載

yt-dlp必須透過終端機打指令下載,你要餵給它「影片網址」,並加上「參數」告訴yt-dlp要怎麼處理影片。

yt-dlp格式如下:
yt-dlp [參數1...參數2...參數3] "影片網址1" "影片網址2" "影片網址3"

yt-dlp至少得填入一個影片網址,其餘參數可以隨意組合,控制具體下載的內容。不過你也可以不填參數,只給網址,讓yt-dlp用預設值下載影片。

yt-dlp指令完整說明文件請參閱Github

yt-dlp指令是跨平台通用的,只要在終端機輸入yt-dlp指令就可以下載影片。

Windows用戶可以在下載資料夾按右鍵+SHIFT,開啟Windows終端機,再跑yt-dlp。這樣下載的影片都會跑到這個資料夾。






















在終端機執行以下指令,會把影片下載到目前的資料夾
yt-dlp --merge-output-format mp4 "https://www.youtube.com/watch?v=duZDsG3tvoA"
加上--merge-output-format mp4指定轉檔為.mp4格式(也可以用.mkv格式)

yt-dlp預設會下載最高畫質的影片。如果你想下載特定畫質影片,比方說1080p,那就加上-f "bestvideo[height<=1080]+bestaudio[ext=m4a]"的參數,指定影片最大高度。至於其他畫質,2160為4K,1080為1080p,720為720p,以此類推。

Youtube現在影片多採用AV1編碼,部份播放器可能沒辦法解碼。你可以指定參數-S vcodec:h264,把影片轉成H.264編碼。

範例,下載影片時限制畫質最高選取到1080p,並轉檔為H.264編碼。
yt-dlp -f "bestvideo[height<=1080]+bestaudio[ext=m4a]" -S vcodec:h264 --merge-output-format mp4 "https://www.youtube.com/watch?v=duZDsG3tvoA"

下載純音訊

yt-dlp下載時會自動選取最高音質。yt-dlp可以將Youtube影片的音訊轉檔成mp3、flac、opus、aac、wav等格式
yt-dlp --extract-audio --audio-format mp3 --audio-quality 320K "https://www.youtube.com/watch?v=duZDsG3tvoA"
備註:Youtube音訊最多到256kbps AAC而已,轉成常見的320Kbps MP3就夠了,轉成FLAC沒有太大意義

下載影片播放清單

跟下載影片一樣,餵給yt-dlp播放清單的網址就會開始下載。

建議使用完整播放清單網址:https://www.youtube.com/playlist?list=播放清單ID,否則yt-dlp可能只會抓到一部影片

下載會員限定影片/私人影片

為了讓yt-dlp可以存取會員限定影片的網址,請使用--cookies-from-browser參數,將瀏覽器cookie(表示你的帳號登入狀態)餵給yt-dlp。

例如讀取Google Chrome的cookie,並下載影片:
yt-dlp --cookies-from-browser chrome --merge-output-format mp4 "會員限定影片網址"

P.S 新版的Chrome有對cookie加密, 會抓不到, 可改用Edge

如果抓不到瀏覽器,在Chrome安裝EditThisCookie擴充功能, 匯出單一cookie檔案
EditThisCookie 
選項 > 最下面 cookies匯出格式 選Netscape 
打開YT 
打開EditThisCookie 按匯出 
貼到空白文件裡存起來 
第一行必須要是 # Netscape HTTP Cookie File 
假設存到 X:\STREAM\youtube.com_cookies.txt 下載的時候 用指令的話是 youtube-dl --cookies "X:\STREAM\youtube.com_cookies.txt" 
DLG的話只需要後面的參數 Options > Extra 加上 --cookies "X:\STREAM\youtube.com_cookies.txt"

再餵給yt-dlp:yt-dlp --cookies "cookies.txt" --merge-output-format mp4 "會員限定影片網址"

下載直播影片

yt-dlp可以在直播開始之後從頭下載,使用--live-from-start參數。

例如:yt-dlp --live-from-start --merge-output-format mp4 "直播網址"

如果直播是預定日期的,那麼也可以用--wait-for-video參數延遲yt-dlp抓取時間,單位為秒。
yt-dlp --wait-for-video 60 --live-from-start --merge-output-format mp4 "網址"

批次大量下載Youtube影片

如果你要下載的影片不在同一個播放清單,或者你想要自動化下載多部影片,那麼就把多個影片存成單一txt檔,每行一個網址。

例如urls.txt,內容是這樣:
https://www.youtube.com/watch?v=MKNrnSsIwf8 
https://www.youtube.com/watch?v=H7hpK6cm-6k 
https://www.youtube.com/watch?v=_trE3M24kQY

再使用--batch-file引數,讓yt-dlp逐一讀取urls.txt檔案的網址,下載影片。
yt-dlp --batch-file urls.txt --merge-output-format mp4



參考網站


沒有留言:

張貼留言