2016年1月30日 星期六

Ubuntu / Linux Mint 17.3 中使用 Youtube-dl + FFMpeg 不需轉檔不用合併完美解決下載 Youtube 1080P 有影無聲

禿驢我最近迷上了某個電視劇又恰巧有提供高畫質影片,雖然很想下載回來保存以供日後觀看,然而只能抓取720P的影片,1080P的影片就是有影無聲。

終於在某個選舉完的夜裡當部分的人在歡欣鼓舞的時候,禿驢我靜靜的躲在一旁數螞蟻,其實真相是某個連續劇開始播放了!!

既然空下來了那免不了就開始試探如何解決的方法!

首先

當然是對目標影片展開搜身(探查所有提供的格式)

我們以

J.Y. Park(박진영) "Who's your mama?(어머님이 누구니) (feat. Jessi)" M/V



這支影片來做示範

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踢出套件庫的分支
請參照禿驢的另外一篇

如何在 Linux Mint 安裝 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囉!


 

沒有留言:

張貼留言