跳至內容
yt-dlp

用 yt-dlp 把 YouTube 轉成 MP3

產生那條能把 YouTube 影片變成帶標籤與封面的 MP3 的 yt-dlp 指令。

怎麼得到一個真正好用的 MP3

擷取音訊是一次轉換,所以一定要有 ffmpeg —— 這就是指令在全新安裝上失敗的原因。最佳(VBR)是正確的預設:它的大小與品質之比最好,而更高的固定 bitrate 也補不上來源本來就沒有的品質。

封面與中繼資料能把一個裝滿無名檔案的資料夾,變成音樂播放器可以整理的東西。這裡的檔名範本把演出者放在前面,標籤裡沒有演出者時退回用上傳者。

--audio-quality 0 是最多人誤解的設定。它不是「零品質」——它是可變位元率裡最好的一檔,平均大約 245 kbps,而且這條刻度是反著走的:0 最好,9 最差。可變位元率會把更多位元花在音樂密集的段落、在安靜處少花,所以同樣大小的檔案,VBR 通常比固定位元率更好聽。如果某個裝置非要固定位元率不可,就直接寫明——--audio-quality 320K——而不是在 0–9 這條刻度上猜一個數字。

更值得問的是:到底要不要轉換。YouTube 提供的音訊是 Opus 或 AAC,兩者都不是 MP3,所以要 MP3 就一定意味著重新編碼:檔案被解碼再壓縮一次,每轉一次都會損失一些品質。如果你手上沒有哪樣東西非要 .mp3 這個副檔名不可,就選「最佳(不轉換)」。它更快,完全用不到 ffmpeg,而且結果比任何一個 MP3 版本都更接近來源。只有當車用音響、DJ 軟體或舊手機不給你別的選擇時才去轉。

要整個播放清單的話,打開播放清單並加上封存檔案。封存會記錄已經下載過什麼,所以下週再跑同一條指令時只會取新增的部分,而不是從頭再來一遍——再搭配「出錯繼續」,一首地區受限或已刪除的曲子就不會把其餘兩百首一起拖垮。如果曲目順序重要,就在輸出樣板裡加上播放清單序號;不加的話播放器會按字母順序排列資料夾,整張專輯的次序就亂了。

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

你的指令

yt-dlp -x --audio-format mp3 --audio-quality 0 --no-playlist --embed-thumbnail --embed-metadata -o '%(artist,uploader)s - %(title)s.%(ext)s' 'https://www.youtube.com/watch?v=dQw4w9WgXcQ'
基本

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

音訊

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

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

播放清單與頻道

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

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

進階選項(1)

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

中繼資料與封面
進階選項(3)
檔案與資料夾

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

進階選項(4)

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

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

疑難排解
進階選項(3)

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

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

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

重設

常見問題

該選哪種 MP3 品質?
多數情況下選最佳(VBR)—— 它的大小與品質之比最好。只有當後續某個環節堅持要固定 bitrate 時,320 kbps 才有意義。兩者都不會增加來源本來沒有的品質。
為什麼擷取 MP3 會失敗?
轉換音訊需要 ffmpeg。裝好後用 ffmpeg -version 檢查。
VBR 還是固定 bitrate?
VBR 把位元率花在真正需要的地方,在聽感相同的情況下檔案更小。只有裝置或軟體硬性要求時才用固定 bitrate。
能把整份播放清單轉成 MP3 嗎?
可以 —— 音訊輸出加上整份播放清單模式。再加上紀錄檔,這樣重新執行不會把轉換重做一遍。