在很久很久以前…呃~ 大約1年前自己有想要寫一個KTV的點歌系統,當時候在實驗室唱歌舒壓都是播放youtube上的歌曲! 於是想說結合KTV點歌系統的模式,變成youtube做音樂的來源,可以幫忙排歌,覺得是一件很有趣的事情。放一張自己當時layout 的介面給大家看看! 很可惜功能還是差很多呢!
廢話就不再多說了,馬上開始吧!
首先,fapy這個套件是專門拿來就串流使用的,但他也是會呼叫youtube-dl這個套件來協助,所以需要安裝youtube-dl套件。據說,當找不到youtube-dl的時候,就會使用內部的程式碼來進行串流,但是本怪之前就有安裝youtube-dl這個套件,所以就以這樣的環境來做教學吧!
I.安裝
首先,打開命令提示字元cmd利用 pip 指令來安裝。(記得使用管理員權限執行)
pip install youtube-dl
pip install papy
pip install python-vlc
II.Write Code
基本上的流程是,選定好URL、設定以高畫質串流、將資源帶入VLC播放器,沒錯就這幾行code就可以實現了!
youtube的網址會顯示成 https://www.youtube.com/watch?v={video_id}&ab_channel={channel_id} ,但其實並不用帶入channel_id的參數就可以串流,甚至如果按下網頁內的分享按鈕,還會以短網址的顯示格式,如https://youtu.be/{video_id} ,選擇這個顯示方式,讓URL可以比較精簡! 同時,想要換成別部影片的話,只需把{video_id}的部份換掉就可以了喔!
將下面的code貼到 jupyter notebook上,就會跳出一個視窗開始播放串流影片了。
import vlc import pafy # url of the video url = "https://youtu.be/P96cju35j54" video = pafy.new(url) #設定URL best = video.getbest() #選擇最高畫質播放 # print(best.resolution, best.extension) #可以看選擇到的畫質為多少 media = vlc.MediaPlayer(best.url) #創建播放器 # 開始串流播放 media.play()
執行後就會跳出youtube的影片了喔! 但是從這張圖就可以看得出來,畫質其實不高! 但在youtube上播可以達到1080p,但因為高畫質會將音訊與影像分開傳輸,所以如果程式沒有後製處理並無法以高畫質播出,但是有帶音訊的畫質最高可以到720p,所以後面會再介紹mpv的python 套件(這篇),利用這個套件的串流,可以串流到比較高的畫質哦!
Tip. 除了利用 video.getbest() 來指定最高畫質外,如果你不需要影像的話,也可以利用 video.getbestaudio() ,就會只有串流最高音質的音訊喔!
留言