﻿# 介紹好用工具：yt-dlp (超強的影片下載工具)

這套 [yt-dlp](https://github.com/yt-dlp/yt-dlp) 工具是 [youtube-dl](https://github.com/ytdl-org/youtube-dl) 的替代品，功能不但變的更多、更完整，命令列的參數選項也多到爆炸，強到沒辦法完整介紹。今天這篇文章我就來簡單分享幾個常用的命令就好。

![](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/104bf71add8d8a30a75e-8587150e-d4b5-4f91-b596-168dce691356.webp)

### 安裝與升級

[yt-dlp](https://github.com/yt-dlp/yt-dlp) 工具是一套跨平台的工具，安裝方式有很多種，這邊我就簡單用 Windows 平台的 [Chocolatey](https://chocolatey.org/) 來介紹安裝及升級就好，其他平台請自行看官網說明。

-   安裝
    
    ```bash
    choco install yt-dlp -y
    ```
    
    因為 `yt-dlp` 是一個變動很快、積極發展的開源，若是遇到有問題發生，建議更新到 `nightly` 版本：
    
    ```bash
    yt-dlp --update-to nightly
    ```
    
    你也可以用 Python 的 `pip` 安裝最新版本：
    
    ```bash
    python3 -m pip install -U --pre yt-dlp
    ```
    
-   升級
    
    ```bash
    choco upgrade yt-dlp -y
    ```
    

### 常用命令

-   下載影片 (也可下載整個播放清單)
    
    這個簡單的命令背後，背後可支援下載高達 `1,800` 個不同的影音網站，知名的像是 YouTube, Twitter, Bilibili, ... 都是支援的！
    
    ```bash
    yt-dlp <url>
    ```
    
    你可以用以下命令列出所有支援的網站
    
    ```bash
    yt-dlp --list-extractors
    ```
    
    下載時指定檔名 (`video`) 但保留下載影片的副檔名
    
    ```bash
    yt-dlp -o "video.%(ext)s" <url>
    ```
    
-   下載字幕
    
    僅下載字幕，不下載影片
    
    ```bash
    yt-dlp --no-download --write-subs <url>
    ```
    
    下載 YouTube 自動產生的字幕
    
    ```bash
    yt-dlp --no-download --write-auto-sub <url>
    ```
    
-   下載影片和字幕，並且把字幕寫入到影片中
    
    ```bash
    yt-dlp --embed-subs <url>
    ```
    
-   下載影片並轉換為 MP3 聲音格式
    
    加入 `-x` 就是要擷取音訊部分，`--audio-format mp3` 就是要轉換為 MP3 格式：
    
    ```bash
    yt-dlp -x --audio-format mp3 <url>
    ```
    
    如果想在轉檔後同時保留影片檔，可以加入 `-k` 參數：
    
    ```bash
    yt-dlp -x --audio-format mp3 -k <url>
    ```
    
-   限制下載速度: 限制下載速度至 `500KB/s`
    
    ```bash
    yt-dlp -r 500K <url>
    ```
    
-   下載影片的特定部分 (裁剪影片)（例如前 90 秒）
    
    ```bash
    yt-dlp --downloader ffmpeg --downloader-args "-ss 00:00:00 -to 00:01:30" <url>
    ```
    
-   從文字檔案中批次下載多個影片
    
    ```bash
    yt-dlp -a file.txt
    ```
    
-   選擇下載 4K 影片 (如果有的話)
    
    ```bash
    yt-dlp -f 'bestvideo[height=2160]+bestaudio/best[height=2160]' <url>
    ```
    
    如果想查詢影片網址有提供哪些可用的格式，可以用以下命令：
    
    ```bash
    yt-dlp --list-formats <url>
    ```
    
    ```bash
    yt-dlp -F <url>
    ```
    
-   下載一組播放清單中特定日期之後釋出的影片
    
    ```bash
    yt-dlp --date 20240306 <url>
    ```
    
-   如果遇到錯誤則跳過繼續下載 (下載多部影片時可用)
    
    ```bash
    yt-dlp -i <url>
    ```
    
-   取得下載影片的副檔名
    
    ```bash
    yt-dlp.exe --print "ext" <url>
    ```
    
    ```bash
    yt-dlp.exe --print "%(.{ext})j" <url>
    ```
    
-   使用 JSON 格式取得影片的詳細資訊
    
    ```bash
    yt-dlp.exe -j <url>
    ```
    
-   不要顯示下載進度
    
    ```bash
    yt-dlp --no-progress <url>
    ```
    
-   忽略 [yt-dlp](https://github.com/yt-dlp/yt-dlp) 的 `config` 設定檔
    
    預設 `yt-dlp` 的設定檔位於 `%APPDATA%\yt-dlp\config` 路徑下，如果要避免被現有設定影響，可以加入 `--ignore-config` 排除預設設定檔的載入。
    
    ```bash
    yt-dlp --ignore-config <url>
    ```
    
    > 詳見 [CONFIGURATION](https://github.com/yt-dlp/yt-dlp?tab=readme-ov-file#configuration)
    
-   下載 Twitter 影片
    
    因為 `yt-dlp` 預設的輸出檔名為 `%(title)s.%(ext)s` 格式，在下載 Twitter 影片時，可能會遇到檔名不合法的問題，這時可以用以下命令來解決：
    
    ```bash
    yt-dlp --output "%(uploader)s_%(upload_date)s_%(id)s.%(ext)s" --merge-output-format mp4 --embed-thumbnail <url>
    ```
    

### 相關連結

-   [yt-dlp/yt-dlp](https://github.com/yt-dlp/yt-dlp): A youtube-dl fork with additional features and fixes
-   [影片下載轉檔筆記 ( Youtube 、 Twitch 、 TwitCasting 、 Twitter Spaces 音訊空間、 fc2 live 、 ffmpeg 、 yt-dlp )](https://blog.maki0419.com/2022/01/youtube-download-ytdlp-ffmpeg.html)
