您当前的位置:首页 > IT编程 > python
| C语言 | Java | VB | VC | python | Android | TensorFlow | C++ | oracle | 学术与代码 | cnn卷积神经网络 | gnn | 图像修复 | Keras | 数据集 | Neo4j | 自然语言处理 | 深度学习 | 医学CAD | 医学影像 | 超参数 | pointnet | pytorch | 异常检测 | Transformers | 情感分类 | 知识图谱 |

自学教程:基于Python制作简易视频播放器

51自学网 2025-02-05 12:15:06
  python
这篇教程基于Python制作简易视频播放器写得很实用,希望能帮到您。

先上效果图:

 这个就是用python-pyqt5-opencv做出来的简易视频播放器,主要实现本地视频文件播放、本地摄像头播放和远程摄像头播放三个功能。

核心代码:

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('开始读取摄像头数据......')             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))

三类播放使用的都是同一个showcamera()函数,唯一的区别就是函数中的url参数不同。

文件播放:url=文件名

本地相机:url=0

网络串流:url=‘rtsp://……’

除了这个核心代码,打开文件使用的是QFileDialog,打开网络串流使用的是自定义的QinputDialog,两个代码如下:

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('打开网络串流')    input_dialog.setLabelText('请输入网络串流地址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('地址错误或空')

最后,是用Qlabel加载图片的代码:

def setPic(self, image):    self.label.setPixmap(QPixmap.fromImage(image))

剩下的就是UI界面的定义了

到此这篇关于基于Python制作简易视频播放器的文章就介绍到这了,更多相关Python视频播放器内容请搜索本站以前的文章或继续浏览下面的相关文章希望大家以后多多支持本站!


使用Python绘制实时的动态折线图
Python+QTimer计时器实现摄像头视频的播放和暂停
万事OK自学网:51自学网_软件自学网_CAD自学网自学excel、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。