創用 CC 授權條款
除非另有註明,本網站的著作Fygul Hether製作,以創用CC 姓名標示-非商業性-禁止改作 4.0 國際 授權條款釋出。

2019年1月12日 星期六

視頻下載利器youtube-dl

相信大多數人都有在YouTube上看影片的經驗,有時你可能想取得影片直接存在硬碟中重複觀看,有一些瀏覽器的附加元件提供下載影片的功能,但在新式瀏覽器有些使用限制,不若以往般好用。之前介紹過uGet也可以下載YouTube上的影片,不過這方面有些較細的工作有更好用的工具,如Youtube Downloader HD,可在Windows上使用。本文要介紹的youtube-dl,則是個命令行程式,雖然不像Youtube Downloader HD有美美的圖形界面,乍看並不起眼,但它實際上功能強大,不只支援YouTube,還有其他站台,可在主流作業系統平台上使用,是以Python開發的開放原始碼軟體。

youtube-dl的下載與使用方法[2]在官網上都有。不過命令選項很多,對剛接觸的人,可能會有難入手的感覺。本文就做點簡單的使用介紹,主要是在Ubuntu上安裝與使用youtube-dl來下載YouTube影片時的使用範例。

下載安裝

  1. 若是Ubuntu的機器,可用apt install:
    sudo apt install youtube-dl
  2. 或是其他Linux,可用curl或wget取得檔案:
    sudo curl -L https://yt-dl.org/downloads/latest/youtube-dl -o /usr/local/bin/youtube-dl
    或是:
    sudo wget https://yt-dl.org/downloads/latest/youtube-dl -O /usr/local/bin/youtube-dl
    下載後記得設置成可執行:
    sudo chmod a+rx /usr/local/bin/youtube-dl
  3. 也可用pip
    pip install youtube-dl
個人建議第2種的人工下載安裝方式,方便往後自行更新版本,不必依靠apt或pip做更新,後者的更新方式可能要等上一段時間才會有新版可用。

至於Windows版,有單一.exe檔可下載使用,可放在PATH變數中,%SYSTEMROOT%\System32以外的位置;還需要有Microsoft Visual C++ 2010 Redistributable Package (x86),詳見下載頁說明。如果執行時覺得啟動很慢,請調整Windows Defender設置,排除youtube-dl.exe。

使用範例

基本的命令形式

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

幾個基本用途的選項

顯示幫助

youtube-dl -h

顯示版號

youtube-dl --version

更新版本

youtube-dl --update
這種更新方式,可適用於前述所建議的安裝方式。Linux上的更新記得要前置sudo,除非是直接使用root帳號。

下載影片

模擬下載

在真正下載影片之前,先介紹一下模擬功能,也就是-s或是--simulate選項,它可讓你看一下命令行執行時顯示的訊息,但不會真的下載影片或是儲存任何檔案,這在尚不確定該命令行是否正確,想先試行一下但又不想浪費頻寬時就很有用。以下的範例,如果你想照著做,但不想實際下載影片,都可以加上此選項。像:
youtube-dl -s URL

最簡單的下載方式

youtube-dl URL
這個URL可以是:
  1. 影片網址:看Youtube影片時,可在撥放畫面上按右鍵後“複製影片網址”取得。
  2. 看影片時,在瀏覽器網址列所顯示的網址。
  3. 播放清單的網址:這可方便下載播放清單中的所有影片。
例如:
youtube-dl https://youtu.be/OfIaU9Tyt-E
可利用複製/貼上的方式把URL輸入命令行中,不必逐字打,這樣也可避免打錯字。

這個YouTube影片的例子,其實也可以簡化成:
youtube-dl OfIaU9Tyt-E
下載的影片會放在你當前所在的路徑。若要加上前述的模擬選項會像:
youtube-dl -s https://youtu.be/OfIaU9Tyt-E
這裡提醒一下,有時候因為URL中含有某些字元特殊如&,可能導致整個命令行的解析出錯,最保險的做法就是URL前後以半形雙引號括住,像:
youtube-dl "https://youtu.be/OfIaU9Tyt-E"
從前面提到的基本的命令形式來看,可以指定一個以上的URL,意即一命令行可下載一個以上的影片,如:
youtube-dl https://youtu.be/OfIaU9Tyt-E https://youtu.be/He3IJmbdwFY

取得影片格式與品質

以YouTube與vimeo而言,一部影片一般會提供不同格式與品質的檔案。可以先取得這方面資料後再決定要下載哪個檔案,此時使用-F選項,如:
youtube-dl -F https://youtu.be/OfIaU9Tyt-E
執行時顯示如下:
[youtube] OfIaU9Tyt-E: Downloading webpage
[youtube] OfIaU9Tyt-E: Downloading video info webpage
[info] Available formats for OfIaU9Tyt-E:
format code  extension  resolution note
140          m4a        audio only DASH audio  130k , m4a_dash container, mp4a.40.2@128k, 2.19MiB
160          mp4        256x144    144p  108k , avc1.4d400b, 24fps, video only
134          mp4        640x360    360p  184k , avc1.4d401e, 24fps, video only, 894.42KiB
133          mp4        426x240    240p  242k , avc1.4d400c, 24fps, video only
136          mp4        1280x720   720p  549k , avc1.4d401f, 24fps, video only, 2.14MiB
135          mp4        854x480    480p 1155k , avc1.4d4014, 24fps, video only
17           3gp        176x144    small   56k , mp4v.20.3, mp4a.40.2@ 24k (22050Hz), 978.19KiB
36           3gp        320x180    small  125k , mp4v.20.3, mp4a.40.2 (22050Hz), 2.12MiB
43           webm       640x360    medium , vp8.0, vorbis@128k, 2.03MiB
18           mp4        640x360    medium  241k , avc1.42001E, mp4a.40.2@ 96k (44100Hz), 4.07MiB
22           mp4        1280x720   hd720  256k , avc1.64001F, mp4a.40.2@192k (44100Hz) (best)
假定要下載format code為22的那個影片,使用-f選項來指定:
youtube-dl -f 22 https://youtu.be/OfIaU9Tyt-E

下載整個撥放清單

YouTube上創作者所提供的影片撥放清單,其網址的形式像:
https://www.youtube.com/playlist?list=PLxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

要一次下載撥放清單中所有影片的方式其實就與前述下載單一影片的一樣:
youtube-dl https://www.youtube.com/playlist?list=PLxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
也可以簡化為:
youbube-dl PLxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
不過如果撥放清單以後做了更新,下回如何只下載新的影片,而不要整個重新下載呢?

--download-archive FILE選項可以辦到這點。第一次下載時就啟用此功能,會把下載的影片記錄在FILE檔案中,下回再下載時可略過這些影片。例如:
youbube-dl --download-archive archive.txt PLxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
執行一次後,會記錄下載的影片資訊在archive.txt中。往後執行相同命令行時,就只下載新的影片並記錄到archive.txt中。

以上只是幾個簡單的使用範例,詳細的使用請見官方使用說明文件[2]。

參考

  1. https://itsfoss.com/download-youtube-linux/
  2. https://github.com/rg3/youtube-dl/blob/master/README.md#readme

沒有留言:

張貼留言