基于Python制作簡(jiǎn)易視頻播放器
先上效果圖:

這個(gè)就是用python-pyqt5-opencv做出來的簡(jiǎn)易視頻播放器,主要實(shí)現(xiàn)本地視頻文件播放、本地?cái)z像頭播放和遠(yuǎn)程攝像頭播放三個(gè)功能。
核心代碼:
def ShowCamera(self, url):
try:
if url == None:
self.cap = cv2.VideoCapture(0)
else:
self.cap = cv2.VideoCapture(url)
print('攝像頭是否開啟: {}'.format(self.cap.isOpened()))
if self.cap.isOpened:
self.cap.set(cv2.CAP_PROP_FRAME_WIDTH, 640)
self.cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 480)
self.cap.set(cv2.CAP_PROP_FPS, 25)
print(self.cap.get(3))
print(self.cap.get(4))
print(self.cap.get(5))
print('開始讀取攝像頭數(shù)據(jù)......')
while(True):
ret, color_frame = self.cap.read()
if ret == False:
return
if url == None:
color_frame = cv2.flip(color_frame, 1)
cv2.waitKey(1)
im = cv2.cvtColor(color_frame, cv2.COLOR_RGB2BGR)
a = QImage(im.data, im.shape[1], im.shape[0], QImage.Format_RGB888)
self.setPic(a)
self.cap.release()
else:
print('camera open failed')
except Exception as e:
print(str(e))三類播放使用的都是同一個(gè)showcamera()函數(shù),唯一的區(qū)別就是函數(shù)中的url參數(shù)不同。
文件播放:url=文件名
本地相機(jī):url=0
網(wǎng)絡(luò)串流:url=‘rtsp://……’
除了這個(gè)核心代碼,打開文件使用的是QFileDialog,打開網(wǎng)絡(luò)串流使用的是自定義的QinputDialog,兩個(gè)代碼如下:
def OpenFile(self):
fileName, filetype = QFileDialog.getOpenFileName(self, '選擇文件')
print(fileName, filetype)
self.ShowCamera(fileName)
def Remote(self):
input_dialog = QtWidgets.QInputDialog(self)
input_dialog.setInputMode(QInputDialog.TextInput)
input_dialog.setWindowTitle('打開網(wǎng)絡(luò)串流')
input_dialog.setLabelText('請(qǐng)輸入網(wǎng)絡(luò)串流地址rtsp://')
input_dialog.setFixedSize(500, 100)
input_dialog.show()
if input_dialog.exec_() == input_dialog.Accepted:
text = input_dialog.textValue()
if text != '':
print(text)
self.ShowCamera(text)
else:
print('地址錯(cuò)誤或空')
最后,是用Qlabel加載圖片的代碼:
def setPic(self, image):
self.label.setPixmap(QPixmap.fromImage(image))
剩下的就是UI界面的定義了
到此這篇關(guān)于基于Python制作簡(jiǎn)易視頻播放器的文章就介紹到這了,更多相關(guān)Python視頻播放器內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python3實(shí)現(xiàn)Dijkstra算法最短路徑的實(shí)現(xiàn)
這篇文章主要介紹了python3實(shí)現(xiàn)Dijkstra算法最短路徑的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-05-05
一篇文章從零開始創(chuàng)建conda環(huán)境、常用命令的使用及pycharm配置項(xiàng)目環(huán)境
在Conda中創(chuàng)建新環(huán)境是一個(gè)非常有用的做法,尤其是當(dāng)你需要為不同的項(xiàng)目安裝不同版本的軟件包時(shí),這篇文章主要給大家介紹了關(guān)于從零開始創(chuàng)建conda環(huán)境、常用命令的使用及pycharm配置項(xiàng)目環(huán)境的相關(guān)資料,需要的朋友可以參考下2024-07-07
Python調(diào)用edge-tts實(shí)現(xiàn)在線文字轉(zhuǎn)語音效果
edge-tts是一個(gè) Python 模塊,允許通過Python代碼或命令的方式使用 Microsoft Edge 的在線文本轉(zhuǎn)語音服務(wù),這篇文章主要介紹了Python調(diào)用edge-tts實(shí)現(xiàn)在線文字轉(zhuǎn)語音效果,需要的朋友可以參考下2024-03-03
使用Python實(shí)現(xiàn)跳一跳自動(dòng)跳躍功能
這篇文章主要介紹了使用Python實(shí)現(xiàn)跳一跳自動(dòng)跳躍功能,本文圖文并茂通過實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-07-07
謹(jǐn)慎使用Python進(jìn)行矩陣計(jì)算解析
這篇文章主要介紹了使用Python進(jìn)行矩陣計(jì)算原理解析,真正的單位矩陣,只有對(duì)角線元素為1,其他元素為0,用 np.identity(N) 生成單位矩陣,需要的朋友可以參考下2023-08-08
Python使用稀疏矩陣節(jié)省內(nèi)存實(shí)例
這篇文章主要介紹了Python使用稀疏矩陣節(jié)省內(nèi)存實(shí)例,矩陣中非零元素的個(gè)數(shù)遠(yuǎn)遠(yuǎn)小于矩陣元素的總數(shù),并且非零元素的分布沒有規(guī)律,則稱該矩陣為稀疏矩陣,需要的朋友可以參考下2014-06-06

