除了先前介紹的python-pafy套件可以用來串聯youtube影片以外,今天再介紹另一個套件 python-mpv,可以用來進行串聯喔! mpv本身就是一款容物整合的輕量化播放器,除了功能簡單還支援許多常見的格式! 而且還是開源的喔,值得深入研究!
python-mpv這個套件也是需要使用youtube-dl這個套件來進行串流,所以我們也必需安裝這個套件。 且當juputer notebook 在執行的時後還需要 mpv的DLL檔! 所以下面會手把手教學,教大家如何把python-mpv環境建起來。
I.安裝
首先,先安裝python會用到的套件,打開命令提示字元cmd。(記得使用管理員權限執行)
pip install youtube-dl
pip install python-mpv
接著需要去下載mpv-1.dll這個檔案,前往https://sourceforge.net/projects/mpv-player-windows/files/libmpv/
1.選擇 mpv-dev-x86_64 的版本
2.把 mpv-1.dll 這個檔案解壓縮到python的Scripts資料夾底下,如果你跟本怪一樣用anaconda安裝的話路徑會在 C:\Users\{user_name}\anaconda3\Scripts\,解壓縮進去就完成了!
II.Write Code
基本的mpv串流比pafy還容易,選好URL、設定打開ytdl(youtube-dl),就可以串聯上了。將下面的code貼到 jupyter notebook上並執行,就會跳出一個視窗開始播放串流影片了。
import mpv # enable youtube-dl player = mpv.MPV(ytdl=True) # input a URL from youtube and play it. player.play('https://youtu.be/79RLkH3T8hg') player.wait_for_playback()
沒有錯誤的話就可以看到串流成功的影片囉!! 大家實際比較看看,會發現比 pafy的畫質好上許多喔!
但是,當關掉視窗的時候 jupyter 會報出錯誤,因為執行緒被我們終止掉了! 要解決這樣的錯誤我們可以利用一些程式界面的視窗來處理,像是PyQt ,以下就用PyQt5生成一個視窗。
如果還沒有安裝PyQt5 的話要先用 pip install pyqt5 的指令安裝(詳細的說明可以參考這篇)
#!/usr/bin/env python3 import mpv import sys from PyQt5.QtWidgets import * from PyQt5.QtCore import * class Test(QMainWindow): def __init__(self, parent=None): super().__init__(parent) self.container = QWidget(self) self.setCentralWidget(self.container) self.container.setAttribute(Qt.WA_DontCreateNativeAncestors) self.container.setAttribute(Qt.WA_NativeWindow) player = mpv.MPV(wid=str(int(self.container.winId())), log_handler=print, loglevel='debug') player.play('https://youtu.be/P96cju35j54') app = QApplication(sys.argv) # This is necessary since PyQT stomps over the locale settings needed by libmpv. # This needs to happen after importing PyQT before creating the first mpv.MPV instance. import locale locale.setlocale(locale.LC_NUMERIC, 'C') win = Test() win.show() sys.exit(app.exec_())
接著執行程式就可以看到如下的效果了! 而且因為是有 layout出視窗,所以還可以調整視窗的大小喔!
成功串流以後,大家會想要怎麼利用與變化呢?
留言