[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