[Python教學]Pytube教學-下載Yotube影片、影片轉MP3(提供下載小工具)

#Pytube #Python下載Youtube影片 #影片轉MP3 #Youtube影片下載 #Python影片下載

[Python教學]Pytube教學-Python下載Yotube影片、影片轉MP3

11/15新增Yotube影片下載小工具:點我進入工具頁面

[Python教學]Pytube教學- 前言

最近為了練手前端技術,開始著手製作一些實用的小工具,向是前陣子的CSV合併小工具EXIF相片坐標轉地圖以及Nominatim地址轉經緯度工具,這次則簡單製作了Youtube影片下載器,後端採用Python+flask+pytube進行開發,本文則是介紹如何使用Python-Pytube模組進行Youtube影片(音檔)下載

1. Pytube教學下載

這邊就假定各位讀者已經安裝好Python環境,如果還沒安裝這邊建議可以直接下載Anaconda進行環境建置接著只需要利用PIP指令進行Pytube安裝即可。

pip install pytube

1.1 Pytube讀取Youtbue影片基本資訊

這邊先透過pytube引入Youtube物件,該物件接受Youtub URL作為參數,創造YT物件後可以透過.author以及.title屬性取得影片的基礎資訊

from pytube import YouTube
youtube_url = "https://www.youtube.com/watch?v=D4PgGNgGkXU"
yt = YouTube(youtube_url)
print("頻道資訊:",yt.author)
print("影片名稱:",yt.title)

1.2 Pytube下載影片為MP4

接下來我們可以透過.stream取的該影片的所有串流屬性標籤(媒體流),簡單透過for-loop將所有的stream-tags都打印出來並讀取filesize顯示檔案大小。相關的標籤說明可以參考以下:

  1. itag=”17″: 表示這個媒體流的識別碼或者類型。
  2. mime_type=”video/3gpp”: 描述媒體流的 Multipurpose Internet Mail Extensions (MIME) 類型。在這裡,它是 “video/3gpp”,表示這是一個3GPP格式的視訊檔案。
  3. res=”144p”: 表示視訊的解析度,這裡是 144p,通常是指 144 像素的垂直解析度。
  4. fps=”8fps”: 每秒的幀率(frames per second),這裡是 8fps。
  5. vcodec=”mp4v.20.3″: 視訊編碼器(video codec),這裡是使用 mp4v.20.3。
  6. acodec=”mp4a.40.2″: 音訊編碼器(audio codec),這裡是使用 mp4a.40.2。
  7. progressive=”True”: 表示這是一個漸進式下載,而非流媒體。
  8. type=”video”: 標示這是一個視訊檔案。
video_stream = yt.streams
for info in video_stream:
    print(info,f'影片大小:{info.filesize_mb}mb')
簡單透過for-loop將所有的stream-tags都打印出來並讀取filesize顯示檔案大小

透過上述的媒體流標籤,可以藉由內建的不同get函數進行資料選擇。

內建的不同get函數進行資料選擇

get_by…可以透過不同屬性進行篩選,以下採用解析度(get_by_resolution)進行資料篩選,並依靠.download函數進行下載預設輸出路徑為當前目錄,檔案名稱則是影片標題

video_stream.get_by_resolution("720p").download()
預設輸出路徑為當前目錄,檔案名稱則是影片標題

這邊可以透過以下參數指定輸出目錄和輸出檔名。

video_stream.get_by_resolution("720p").download(output_path='./download/',filename='test.mp4')

1.3 Pytube下載影片為Audio(輸出音訊mp3,mp4)

從上圖的媒體流標籤可以發現,除了影片檔(MP4)外,還顯示了mp3、mp4格式的音檔可以進行下載,因此可以使用.get_audio_only()取出audio的媒體流標籤並進行下載

audio=video_stream.get_audio_only()
audio.download()

2. Youtube影片下載小工具DEMO

這邊筆者透過上述的Pytube+flask做為後端,寫了一個簡易的Youtube下載器

這邊筆者透過上述的Pytube+flask做為後端,寫了一個簡易的Youtube下載器

點我進入工具頁面

5 更多教學

分享

2 則留言

發表迴響

%d