[Mac] 使用 youtube-dl 工具,批次下載 Youtube 播放清單影片,並轉成音訊 MP3

[Mac] 使用 youtube-dl 工具,批次下載 Youtube 播放清單影片,並轉成音訊 MP3

最近迷上了 Youtube 上的古風歌曲,

把一堆影片都放到播放清單裡,

再利用之前介紹過的線上服務,把這些影片轉成 MP3 下載:

 

問題是,可以轉整個播放清單的線上服務很少,

好不容易找到的 Youtube-to-MP3,後來似乎都會出現轉換錯誤,

(感覺像是沒付錢,所以後來的都不給轉)

而像 Online Video Converter 等可以轉單一影片的線上服務很多,

但共通點都是有點麻煩,下載一首歌得要:

  • 貼上歌曲的 Youtube 連結
  • 按下網站上的「轉換」按鈕
  • 等轉換完,按下「下載」按鈕
  • 回到網站的首頁,準備重覆以上動作,來抓下一首歌

 

今天上網搜尋了一下,意外找到 youtube-dl 這個好物,

這是個命令列 (command line) 的工具,用法非常的簡單,

它可以一次下載播放清單裡所有的影片,還可以直接轉成 MP3,

等於是我執行一個指令,就可以等它把所有的歌曲都抓成 MP3 了,超級強大~

來看一下怎麼用吧~

 

1. 安裝 youtube-dl

在 Mac 上,可以直接用 Homebrew 安裝

(youtube-dl 官網上也有提供其他平台的安裝方法)~

打開終端機 (Terminal),執行下面的指令:

brew install youtube-dl

 

2. 安裝 ffmpeg

youtube-dl 可以下載影片,但轉成 MP3 的工作需要其他人幫忙,

如果它找不到適合的轉碼器的話,

在執行 youtube-dl 時可能會看到這樣的錯誤訊息:

ERROR: ffprobe or avprobe not found. Please install one. 

 

我們可以先安裝 ffmpeg 與 libav 來避免這個問題:

brew install ffmpeg libav

 

3. 使用 youtube-dl 下載播放清單中所有歌曲

youtube-dl 和 ffmepg 都裝好之後,

可以執行 youtube-dl -h 看一下說明~

它的參數非常的多,下面只把我可能會用到的列出來:

testuser@localhost ~ $ youtube-dl -h

Usage: youtube-dl [OPTIONS] URL [URL...]

Options:

  Video Selection:
    --no-playlist                    Download only the video, if the URL refers to a video and a playlist.

  Authentication Options:
    -u, --username USERNAME          Login with this account ID
    -p, --password PASSWORD          Account password. If this option is left out, youtube-dl will ask interactively.
    -2, --twofactor TWOFACTOR        Two-factor authentication code

  Post-processing Options:
    -x, --extract-audio              Convert video files to audio-only files (requires ffmpeg or avconv and ffprobe or avprobe)
    --audio-format FORMAT            Specify audio format: "best", "aac", "flac", "mp3", "m4a", "opus", "vorbis", or "wav"; "best" by default; No effect
                                     without -x    

 

先到 Youtube 上,切換到想下載的播放清單,

把播放清單的網址複製下來,接著執行:

youtube-dl --extract-audio --audio-format mp3 '<播放清單網址>'

記得播放清單的網址前後要用單引號框起來,

不然如果網址裡有像 & 這種字元的話,會變成 Mac/Linux 上的背景執行~

 

舉例來說,假設播放清單網址是

https://www.youtube.com/playlist?list=FaKePlAyLiStqIqrfM4lhUxMbEHEnNvU1J

在執行指令後,可以看到它成功的下載影片,

接著用 ffmpeg 將影片轉成 MP3,一氣呵成:

testuser@localhost ~ $ youtube-dl --extract-audio --audio-format mp3 https://www.youtube.com/playlist?list=FaKePlAyLiStqIqrfM4lhUxMbEHEnNvU1J

[youtube:playlist] FaKePlAyLiStqIqrfM4lhUxMbEHEnNvU1J: Downloading webpage
[download] Downloading playlist: Car
[youtube:playlist] playlist Car: Downloading 12 videos
[download] Downloading video 1 of 12
[youtube] 5a4OEnA01KQ: Downloading webpage
[youtube] 5a4OEnA01KQ: Downloading video info webpage
[youtube] 5a4OEnA01KQ: Extracting video information
[download] 相思賦 by 西瓜KUNE & 西瓜JUN-5a4OEnA01KQ.webm has already been downloaded
[download] 100% of 4.31MiB
[ffmpeg] Destination: 相思賦 by 西瓜KUNE & 西瓜JUN-5a4OEnA01KQ.mp3
Deleting original file 相思賦 by 西瓜KUNE & 西瓜JUN-5a4OEnA01KQ.webm (pass -k to keep)

[download] Downloading video 2 of 12
[youtube] bLdFKcXePlg: Downloading webpage
[youtube] bLdFKcXePlg: Downloading video info webpage
[youtube] bLdFKcXePlg: Extracting video information
[download] Destination: 【古风翻唱】浮生未歇——双笙-bLdFKcXePlg.webm
[download] 100% of 5.00MiB in 00:00
[ffmpeg] Destination: 【古风翻唱】浮生未歇——双笙-bLdFKcXePlg.mp3
Deleting original file 【古风翻唱】浮生未歇——双笙-bLdFKcXePlg.webm (pass -k to keep)
......
......

 

在這 youtube-dl 的指令裡面,我其實沒有用到 -u 之類的帳號認證參數,

這是因為 Youtube 的播放清單預設是公開的,

不需要登入,只要有播放清單的網址,就可以看到播放清單~

如果是非公開的播放清單,可能就要自己加上 -u/-p 之類的參數了:

 

4. 使用 youtube-dl 下載單一歌曲

有時候你只想要下載播放清單中的某一首歌曲,

但如果直接將那歌曲的網址,丟給 youtube-dl 的話,

因為網址裡其實還是帶著播放清單的資訊,

所以 youtube-dl 還是會將清單中所有的歌曲都下載下來~

 

要改變這個行為的話,只要加上 –no-playlist 就行了,例如:

youtube-dl --extract-audio --audio-format mp3 --no-playlist '<歌曲網址>'

 

這個工具真的是非常的方便,

再也不用一首歌一首歌的點按鈕,累的要命的下載了~

偉哉~youtube-dl 的作者,感謝您~^^/

 

2018/5/1 後註:youtube-dl 也可以用來抓 B 站的影片和 MP3 喔~

 

參考資料:stackoverflow: ffprobe or avprobe not found. Please install one

 

(本頁面已被瀏覽過 5,650 次)

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料