跳至內容
yt-dlp

下載 YouTube 字幕 — yt-dlp 指令產生器

產生一條只把字幕存成 .srt、不下載影片的 yt-dlp 指令。

選填。留空的話指令會以 URL 結尾,由你自己填。

你的指令

yt-dlp --write-subs --convert-subs srt --sub-langs en --write-auto-subs --no-playlist -s 'https://www.youtube.com/watch?v=dQw4w9WgXcQ'
基本

僅音訊會擷取聲音軌並捨棄影像串流。

影片與畫質

限制高度上限。yt-dlp 仍會挑該上限以下最好的一路串流。

把分離的影像與音訊串流合併進去的檔案類型。

進階選項(3)

會取代畫質下拉選單。給已經熟悉 format 語法的人用。

不重新編碼,只重新封裝。快而且無損。

重新編碼影片。慢而且有損 —— 只在 remux 行不通時才用。

音訊

音訊要轉換成的檔案類型。

VBR 的檔案大小與品質之比最好;固定 bitrate 比較好預估大小。

字幕

內嵌會把字幕放進影片裡;另存則在旁邊寫一個獨立的 .srt 檔。

用逗號分隔。想要所有可用語言就寫 all。

播放清單與頻道

當網址同時屬於一支影片和一份播放清單時該怎麼做。

範圍與清單都可以,例如 1-10,15,或用 -5::2 表示從尾端起每隔一項取一項。

進階選項(1)

記下已經下載過的項目,於是重新執行會跳過它們。這就是讓一個頻道保持同步的做法。

片段與章節
進階選項(2)

像 *00:01:30-00:03:00 這樣的時間範圍,或章節名稱。開頭的星號表示這是時間點。

中繼資料與封面
進階選項(3)
SponsorBlock

依 SponsorBlock 資料,把社群標記的片段直接從檔案裡剪掉。

進階選項(1)

片段保留,但會被標出來,讓你自己跳過。

檔案與資料夾

欄位名稱寫在 %(...)s 裡。斜線會建立資料夾。

進階選項(4)

檔案要寫到哪裡。搭配上面的範本可以產生子資料夾。

檔名最大長度,以字元計。

篩選
進階選項(5)

YYYYMMDD,或像 now-1month 這樣的相對日期。

YYYYMMDD,或相對日期。

跳過更小的檔案。可以寫 5M、500K 之類。

跳過更大的檔案。

停下來之前要下載的檔案數量。

網路

例如 2M 或 500K。當你需要把剩下的頻寬留給別的事情時很有用。

進階選項(5)

能加快分片串流的下載。從 4 開始比較合適。

失敗的片段要重試幾次。也可以寫 infinite。

HTTP、HTTPS 或 SOCKS proxy 的網址。

讓請求看起來來自真正的瀏覽器。突然出現 403 時,這是最常見的解法。

登入與 cookies

直接讀取你的登入工作階段。私人、年齡限制或會員專屬內容都需要它。

進階選項(1)

從瀏覽器匯出的 Netscape 格式 cookies.txt。

直播
進階選項(2)

反覆檢查直到預定的直播開始。MIN-MAX 是兩次檢查之間的秒數。

疑難排解
進階選項(3)

已淘汰,應改用 --add-headers。之所以保留,是因為很多舊教學還在用它。

已淘汰,應改用 --add-headers。

依網站區分的專用選項,例如 youtube:player_client=web。

輸出與除錯
進階選項(2)
重設

只要字幕不要影片

模擬執行會做除了寫入影片檔以外的一切,所以你留下字幕、省掉下載。轉成 SRT 需要 ffmpeg。

如果什麼都沒出現,最可能是這支影片根本沒有人工字幕 —— 自動產生的字幕是另一個開關,不打開它 yt-dlp 就找不到東西,而且也什麼都不說。

模擬執行是本頁承重的開關:不開,yt-dlp 會下載整支影片、順帶把字幕也存了——對一部電影長度的檔案來說,為了一條文字軌做這麼多傳輸很虧。開了,執行只取中繼資料、寫字幕檔案,完全不碰影片。代價是模擬執行也會跳過你可能習慣的縮圖與說明寫入——那些是影片執行的產物,不是字幕的。

語言選擇是字幕下載開始繁瑣的地方。--sub-langs en 只取標著「en」的那條軌;en-orig 是 YouTube 對自動生成那條的叫法,而作為模式的 en.* 會連兩者連同地區變體一起抓到。多語言用逗號分隔的清單。同一支影片對同一語言同時有人工軌和自動軌時,它們是兩個獨立項目,兩個都下載是正當的結果,不是 bug。

字幕檔案要進剪輯軟體時,格式就講究了:SRT 是安全的交換格式,VTT 帶著網頁播放器會顯示的樣式,YouTube 自家的 JSON3/_SRV 格式是給機器用的。轉 SRT 開關處理最常見的情況,需要 ffmpeg,並有意丟掉樣式——剪輯軟體要的是文字,不是標記。如果輸出看起來是空的,先確認檔案存在再認定轉換失敗:一個 0 位元組的 SRT 說明那條軌本來就是空的。

自動生成字幕值得一記警告:它是機器轉寫,隨之而來的是一切——錯的同音字、沒有標點、被攪碎的人名。對一支你讀得懂語言的影片,它是個搜尋索引;對任何要被引用的東西,值得留下的只有人工那條軌(如果有)。直播會即時生成自動字幕,只在直播結束後才能存下來——本站的直播錄製選項是給畫面用的,已結束直播的字幕用普通字幕選項下載。

常見問題

怎麼只下字幕、不下影片?
選 .srt 選項並打開模擬執行,它會跳過寫入影片檔,但仍然存下字幕。
為什麼沒有出現字幕檔?
這支影片很可能沒有人工字幕。打開自動產生的字幕,就能拿到機器產生的那一份。
怎麼挑字幕語言?
用逗號分隔,例如 en,zh。想要全部可用語言就寫 all,或用 en.* 這樣的樣式比對所有英文變體。
可以要 SRT 而不是 VTT 嗎?
可以 —— .srt 選項會轉換它們,這需要 ffmpeg。