2014年2月25日

使用 youtube-dl 備份 YouTube 影片,解決 1080p 高畫質影片無法下載問題

YouTube 近期有些改變,有許多影片備份軟體,無法正常下載 1080p 解析度以上的高畫質影片。這個問題並不是 YouTube 增加防堵措施,而是新的高畫質影片採用 MPEG-DASH 格式,影片與聲音檔案分開提供,所以過去的下載方式已不管用。

為了解決影片備份的問題,本篇介紹用「youtube-dl」與「mencoder」兩個工具來達成任務。

Mac OS X 可以使用 HomeBrew 安裝需要的軟體(mplayer 內建 mencoder 工具)。

brew install youtube-dl
brew install mplayer

Ubuntu 使用 APT 安裝:

apt-get install youtube-dl mencoder

假設要備份的 YouTube 影片網址是:

http://www.youtube.com/watch?v=VIDEO_ID

使用 youtube-dl 工具

先使用 -F 參數查詢有哪些格式可下載。

youtube-dl -F http://www.youtube.com/watch?v=VIDEO_ID

清單範例如下:

Available formats:
22 : mp4 [1280x720]
18 : mp4 [640x360]
43 : webm [640x360]
5 : flv [400x240]
36 : 3gp [320x240]
17 : 3gp [176x144]
137 : mp4 [1080p] (DASH Video)
136 : mp4 [720p] (DASH Video)
135 : mp4 [480p] (DASH Video)
134 : mp4 [360p] (DASH Video)
133 : mp4 [240p] (DASH Video)
160 : mp4 [192p] (DASH Video)
140 : m4a [128k] (DASH Audio)
171 : webm [128k] (DASH Audio)

可以看到 1080p 高畫質影片僅有 DASH Video 格式,代碼是 137,128k 的聲音檔(m4a)代碼則為 140。

先下載 1080p 的影片檔。

youtube-dl --no-playlist --max-quality 137 http://www.youtube.com/watch?v=VIDEO_ID

再下載 128k 的聲音檔。

youtube-dl --no-playlist --max-quality 140 http://www.youtube.com/watch?v=VIDEO_ID

直接下載的影片檔,某些播放軟體可以開啟,但是聲音檔需要另外指定,這樣並不方便。

使用 mencoder 合併影片與聲音

使用 mencoder 工具可以合併影片與聲音檔案,輸出成大多數播放軟體可以支援的 MP4 格式。

mencoder -oac copy -ovc copy -fafmttag 0x706d -of lavf -lavfopts format=mp4 VIDEO.mp4 -audiofile VIDEO.m4a -o VIDEO-MERGED.mp4

搭配 ffmpeg 自動合併影片與聲音

(感謝 Grey Lee 補充這個更簡單的方法)

先安裝 ffmpeg 工具。

brew install ffmpeg

使用 -f 137+140 下載 mp4 及 m4a 後自動使用 ffmpeg 合併檔案。

youtube-dl -f 137+140 http://www.youtube.com/watch?v=VIDEO_ID

暫時不用煩惱 YouTube 高畫質影片無法備份的問題了 : )

4 則留言:

  1. 其實也可以安裝 ffmpeg,然後用 youtube-dl -f 137+140 http://www.youtube.com/watch?v=VIDEO_ID

    回覆刪除
  2. homebrew 裝的 youtube-dl 2013.12.11.2 似乎還沒支援 auto merge

    回覆刪除
  3. 目前 homebrew 上的版本是 youtube-dl 2014.02.25.1,你很久沒有 update 了喔!
    https://github.com/Homebrew/homebrew/commit/ed1e97140be6b5a3ef62b46a50294fee5f59969b

    回覆刪除
  4. 真的太久沒 update 了... 一次更新200多個formulae XD

    回覆刪除

lyhcode by lyhcode
歡迎轉載,請務必註明出處!