YT-DLP 指令
YT-DLP 是一個開源的命令列工具,可以從 YouTube 等平台下載影片與音訊。
資訊
如需存取私人播放清單或需登入才能取得的畫質,可以用這個「Chrome 擴充套件」在已登入的狀態下匯出 Cookie 檔案,並在指令中加上:
--cookies "cookies.txt"
1. 先用 -F 查看可用格式
下載前先用 -F 列出所有可用格式,確認解析度、編碼與碼率後再指定要下載的格式。
yt-dlp -F "{影片網址}"
同一解析度常有 H.264(avc)、HEVC(hev)、AV1(av01)三種編碼,AV1 檔案最小、H.264 相容性最好。挑好格式 ID 後,用 -f "影片ID+音訊ID" 指定下載,比 bestvideo 自動挑更精準。
2. 下載 mp4 檔案
yt-dlp ^
-f "bestvideo[height<=1080]+bestaudio" ^
--merge-output-format mp4 ^
--embed-thumbnail ^
--add-metadata ^
"{播放清單/影片網址}"
| 參數 | 用途 |
|---|---|
bestvideo[height<=1080] | 最佳影片檔案,解析度在 1080p 內,自行調整 |
bestaudio | 最佳音訊檔案,不限格式,讓 yt-dlp 挑最高碼率 |
--merge-output-format | 強制輸出為 mp4 格式 |
--embed-thumbnail | 嵌入影片縮圖 |
--add-metadata | 將影片標題、作者等資訊嵌入檔案 metadata 中 |
3. 下載 mp3 檔案
yt-dlp ^
--extract-audio ^
--audio-format mp3 ^
--embed-thumbnail ^
--add-metadata ^
"{播放清單/影片網址}"
| 參數 | 用途 |
|---|---|
--extract-audio | 只取出音訊檔案 |
--audio-format | 轉換為 mp3 格式 |
--embed-thumbnail | 嵌入影片縮圖 |
--add-metadata | 將影片標題、作者等資訊嵌入檔案 metadata 中 |
4. 備份播放清單(輸出為 txt 檔案)
yt-dlp ^
--flat-playlist ^
--print-to-file "%(playlist_index)03d | %(title)s | %(url)s" "%(playlist_title)s.txt" ^
"{播放清單網址}"
| 參數 | 用途 |
|---|---|
--flat-playlist | 取得整個播放清單 |
--print-to-file | 輸出為文字檔 |
5. 下載播放清單縮圖
yt-dlp ^
--skip-download ^
--write-thumbnail ^
--convert-thumbnails jpg ^
-o "%(title)s.%(ext)s" ^
"{播放清單/影片網址}"
| 參數 | 用途 |
|---|---|
--skip-download | 不下載影片本體,只抓縮圖 |
--write-thumbnail | 輸出縮圖檔案 |
--convert-thumbnails jpg | 將縮圖轉為 jpg 格式(預設可能是 webp) |
-o "%(title)s.%(ext)s" | 以影片標題作為輸出檔名 |
接著用 ImageMagick 把資料夾內所有 jpg 統一縮放到 480x270:
magick mogrify -resize 480x270! *.jpg
mogrify:原地覆寫檔案,不會另存新檔(如果要保留原圖請改用convert)。480x270!:尾端的!表示強制拉伸到指定尺寸,忽略原始比例。
疑難排解:下載完卻損壞、合併失敗
來源限速或連線不穩時(例如 Bilibili),yt-dlp 內建下載器容易中途留下資料破洞,檔案下完卻損壞,ffmpeg 合併時報 Invalid NAL unit 或 Failed to parse temporal unit。改用 aria2c 當下載器可解決,它會分段下載並自動重試補齊。
先安裝:winget install aria2.aria2,再加上參數:
yt-dlp ^
--downloader aria2c ^
--downloader-args "aria2c:-x4 -s4 --max-tries=0 --retry-wait=3" ^
-k ^
--merge-output-format mkv ^
"{影片網址}"
| 參數 | 用途 |
|---|---|
--downloader aria2c | 改用 aria2c 下載,分段重試不留破洞 |
-x4 -s4 | 4 條連線分 4 段下載(限速來源開太多沒用) |
--max-tries=0 | 每段無限重試直到成功 |
-k | 合併失敗時保留原始影片、音訊檔,避免整包蒸發 |
--merge-output-format mkv | mkv 合併容錯高,不易發生 mp4 的封裝錯誤 |
驗證下載是否完整:ffmpeg -v error -i 檔案 -f null -,沒有輸出即代表無損壞。