除了先前介紹的python-pafy套件可以用來串聯youtube影片以外,今天再介紹另一個套件 python-mpv,可以用來進行串聯喔! mpv本身就是一款容物整合的輕量化播放器,除了功能簡單還支援許多常見的格式! 而且還是開源的喔,值得深入研究!

MPV player

MPV player UI (source:https://mpv.io/)


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出視窗,所以還可以調整視窗的大小喔!

成功串流以後,大家會想要怎麼利用與變化呢?

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

作者

留言

撰寫回覆或留言

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