基于Python制作简易视频播放器

 更新时间:2024年11月18日 09:27:08   作者:天飓  
本文将用python-pyqt5-opencv做出来的简易视频播放器,主要实现本地视频文件播放、本地摄像头播放和远程摄像头播放三个功能,需要的可以参考下

先上效果图:

 这个就是用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中过滤字符串列表的方法

    这篇文章主要介绍了Python中过滤字符串列表的方法,帮助大家更好的理解和使用python,感兴趣的朋友可以了解下
    2020-12-12
  • python数据爬下来保存的位置

    python数据爬下来保存的位置

    在本篇文章里小编给大家整理的是关于python数据爬下来保存的位置,需要的朋友们可以参考下。
    2020-02-02
  • python单线程下实现多个socket并发过程详解

    python单线程下实现多个socket并发过程详解

    这篇文章主要介绍了python单线程下实现多个socket并发过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-07-07
  • 执行Python程序时模块报错问题

    执行Python程序时模块报错问题

    这篇文章主要介绍了执行Python程序时模块报错问题及解决方法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-03-03
  • python3 selenium自动化测试 强大的CSS定位方法

    python3 selenium自动化测试 强大的CSS定位方法

    今天小编就为大家分享一篇python3 selenium自动化测试 强大的CSS定位方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-08-08
  • Python构建网页爬虫原理分析

    Python构建网页爬虫原理分析

    这篇文章主要给大家讲解了构建网页爬虫的技术原理以及实现的逻辑关系,有兴趣的朋友阅读下吧。
    2017-12-12
  • pytest之assert断言的具体使用

    pytest之assert断言的具体使用

    这篇文章主要介绍了pytest之assert断言的具体使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-04-04
  • Python爬虫分析汇总

    Python爬虫分析汇总

    这篇文章主要详细的介绍了Python爬虫的相关资料,需要的朋友可以参考下面文章内容,希望能帮助到你
    2021-09-09
  • Python cookbook(数据结构与算法)在字典中将键映射到多个值上的方法

    Python cookbook(数据结构与算法)在字典中将键映射到多个值上的方法

    这篇文章主要介绍了Python在字典中将键映射到多个值上的方法,涉及Python针对字典的相关映射与初始化相关操作技巧,需要的朋友可以参考下
    2018-02-02
  • python中Tkinter复选框Checkbutton是否被选中判断

    python中Tkinter复选框Checkbutton是否被选中判断

    这篇文章主要介绍了python中Tkinter复选框Checkbutton是否被选中判断方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-01-01

最新评论