#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顯示檔案大小。相關的標籤說明可以參考以下:
- itag=”17″: 表示這個媒體流的識別碼或者類型。
- mime_type=”video/3gpp”: 描述媒體流的 Multipurpose Internet Mail Extensions (MIME) 類型。在這裡,它是 “video/3gpp”,表示這是一個3GPP格式的視訊檔案。
- res=”144p”: 表示視訊的解析度,這裡是 144p,通常是指 144 像素的垂直解析度。
- fps=”8fps”: 每秒的幀率(frames per second),這裡是 8fps。
- vcodec=”mp4v.20.3″: 視訊編碼器(video codec),這裡是使用 mp4v.20.3。
- acodec=”mp4a.40.2″: 音訊編碼器(audio codec),這裡是使用 mp4a.40.2。
- progressive=”True”: 表示這是一個漸進式下載,而非流媒體。
- type=”video”: 標示這是一個視訊檔案。
video_stream = yt.streams
for info in video_stream:
print(info,f'影片大小:{info.filesize_mb}mb')
透過上述的媒體流標籤,可以藉由內建的不同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下載器