在很久很久以前…呃~ 大約1年前自己有想要寫一個KTV的點歌系統,當時候在實驗室唱歌舒壓都是播放youtube上的歌曲! 於是想說結合KTV點歌系統的模式,變成youtube做音樂的來源,可以幫忙排歌,覺得是一件很有趣的事情。放一張自己當時layout 的介面給大家看看! 很可惜功能還是差很多呢!
youtube KTV
廢話就不再多說了,馬上開始吧!
首先,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() ,就會只有串流最高音質的音訊喔!
 

最後修改日期: 2022 年 4 月 17 日

作者

留言

撰寫回覆或留言

發佈留言必須填寫的電子郵件地址不會公開。