禿驢我最近迷上了某個電視劇又恰巧有提供高畫質影片,雖然很想下載回來保存以供日後觀看,然而只能抓取720P的影片,1080P的影片就是有影無聲。
終於在某個選舉完的夜裡當部分的人在歡欣鼓舞的時候,禿驢我靜靜的躲在一旁數螞蟻,其實真相是某個連續劇開始播放了!!
既然空下來了那免不了就開始試探如何解決的方法!
首先
當然是對目標影片展開搜身(探查所有提供的格式)
我們以
這支影片來做示範
youtube-dl -F https://www.youtube.com/watch?v=kUGQ7Tz4os0
得出這個MV全部提供的影音格式如下:
youtube-dl -F https://www.youtube.com/watch?v=kUGQ7Tz4os0[youtube] kUGQ7Tz4os0: Downloading webpage
[youtube] kUGQ7Tz4os0: Downloading video info webpage
[youtube] kUGQ7Tz4os0: Extracting video information
[youtube] kUGQ7Tz4os0: Downloading js player en_US-vfl66BZ3R
[youtube] kUGQ7Tz4os0: Downloading DASH manifest
[info] Available formats for kUGQ7Tz4os0:
format code extension resolution note
140 m4a audio only DASH audio 128k , m4a_dash container, mp4a.40.2@128k (44100Hz), 3.45MiB
141 m4a audio only DASH audio 255k , m4a_dash container, mp4a.40.2@256k (44100Hz), 6.92MiB
160 mp4 256x144 DASH video 110k , avc1.4d400c, 12fps, video only, 2.96MiB
133 mp4 426x240 DASH video 248k , avc1.4d4015, 24fps, video only, 6.65MiB
134 mp4 640x360 DASH video 610k , avc1.4d401e, 24fps, video only, 14.19MiB
135 mp4 854x480 DASH video 1128k , avc1.4d401e, 24fps, video only, 26.50MiB
136 mp4 1280x720 DASH video 2234k , avc1.4d401f, 24fps, video only, 48.40MiB
137 mp4 1920x1080 DASH video 4193k , avc1.640028, 24fps, video only, 84.06MiB
17 3gp 176x144 small , mp4v.20.3, mp4a.40.2@ 24k
36 3gp 320x240 small , mp4v.20.3, mp4a.40.2@ 32k
5 flv 400x240 small , h263, mp3 @ 64k
43 webm 640x360 medium , vp8.0, vorbis@128k
18 mp4 640x360 medium , avc1.42001E, mp4a.40.2@ 96k
22 mp4 1280x720 hd720 , avc1.64001F, mp4a.40.2@192k (best)
其中紅字的部份就是系統預設提供的最高畫質影片所以當不加上任何參數的情況下youtube-dl會自動選取這個格式的影片
當然禿驢我並不可能因為這是系統預設提供的畫質就滿足了!咱要得可是1080P的影片是吧!
可是客官您注意一下藍色及紫色這兩排對應的相關影片參數,會發現原來這就是YouTube 對於720P以上的高畫質影片採取影音分離的政策,所造成的影響
所以用 Youtube-dl 不加任何參數只會自動抓取完整影音且最高畫質的單一影片格式 : 22
當然禿驢在寫這篇筆記之前都是使用 抓取137的影片還有140的聲音檔案
然後利用 mencoder 把抓下來的影片還有聲音轉換成大多設備能夠播放的MP4檔案
當然如果一次只有一集那倒還好但是禿驢有時候經常忙到很久才有空所以會有很多集沒有看到,這時候 mencoder可能就沒有這麼方便了!當然也不會有這篇祕技的產生。
所以當然得找大神問問最後得出的答案就是 ffmpeg這個神器了!
首先先不管系統是否已經把 ffmpeg 給安裝了!我們就當沒有安裝來個完整的吧!
以下操作只限定Ubuntu 若您使用 LinuxMint 或者其他已經將ffmpeg踢出套件庫的分支
請參照禿驢的另外一篇
sudo apt-get install ffmpeg
安裝完成了以後再利用 Youtube-dl 同時下載格式檔案的特性以及 ffmpeg 完美的自動合併神力來完成影片的影像和聲音並且自動合併成MP4的神奇魔力囉!
由上面的影片資訊得知想要擁有完整的1080P影片以及聲音必須得下載 :
137 的DASH影像檔案
以及 140 或 141 的 DASH 聲音檔案
在這裡我們以 137 及 140 這兩個 影音格式檔案做示範
youtube-dl -f 137+140 https://www.youtube.com/watch?v=kUGQ7Tz4os0
然後你會看到 YouTube-Dl 很認真地幫你下載 137 及 140 這兩個檔案
[youtube] kUGQ7Tz4os0: Downloading webpage
[youtube] kUGQ7Tz4os0: Downloading video info webpage
[youtube] kUGQ7Tz4os0: Extracting video information
[youtube] kUGQ7Tz4os0: Downloading js player en_US-vfl66BZ3R
[youtube] kUGQ7Tz4os0: Downloading js player en_US-vfl66BZ3R
[youtube] kUGQ7Tz4os0: Downloading DASH manifest
[download] Destination: J.Y. Park(박진영) 'Who's your mama(어머님이 누구니) (feat. Jessi)' M_V-kUGQ7Tz4os0.f137.mp4
[download] 100% of 84.06MiB in 00:02
[download] Destination: J.Y. Park(박진영) 'Who's your mama(어머님이 누구니) (feat. Jessi)' M_V-kUGQ7Tz4os0.f140.m4a
[download] 100% of 3.45MiB in 00:00
但是當你發現兩個檔案都下載完成了但是系統好像沒有動作或者跑很慢!<尤其在比較低階的設備>
不要擔心!!因為這是 ffmpeg 正在合併影音所以稍等一下唄!
[ffmpeg] Merging formats into "J.Y. Park(박진영) 'Who's your mama(어머님이 누구니) (feat. Jessi)' M_V-kUGQ7Tz4os0.mp4"
最後您看到下面的訊息
Deleting original file J.Y. Park(박진영) 'Who's your mama(어머님이 누구니) (feat. Jessi)' M_V-kUGQ7Tz4os0.f137.mp4 (pass -k to keep)
Deleting original file J.Y. Park(박진영) 'Who's your mama(어머님이 누구니) (feat. Jessi)' M_V-kUGQ7Tz4os0.f140.m4a (pass -k to keep)
這表示 ffmpeg 幫你合併檔案完成並刪除剛剛下載的兩個檔案最後你會發現在資料夾裡面只有
Who's your mama(어머님이 누구니) (feat. Jessi)' M_V-kUGQ7Tz4os0.f137.mp4
沒錯!這不是抓下來的1080P的無聲影片,這是真正的1080P DASH MPEG格式的影音MP4囉!