上一篇我写了显示播放图片的QLabel控件,本篇写显示控件的图片数据来源,涉及到了ffpyplayer的使用,它的官方API文档可参阅ffpyplayer · PyPI。大致的逻辑是:在python中引入ffpyplayer的MediaPlayer(媒体播放器),通过MediaPlayer的实例读取视频文件,获取视频图片和音频数据,然后将图片数据展示在QLabel中,音频数据由MediaPlayer播放。因为涉及到从视频文件的I/O读取操作,所以需要将该部分代码放在线程中执行。关于python的多线程编程我在后面的篇章再介绍,因为截至目前因为GIL的机制,python还没有真正实现线程的并行。上代码,代码中的注释写的比较详细了,其中self.changePixmap.emit(convertToQtFormat),就是将获取的图片数据通过信号的方式发给QLabel.
from PySide6 import QtCore, QtGui
from PySide6.QtCore import QObject
import time
import cv2
from PIL import Image, ImageQt
import os
from ffpyplayer.player import MediaPlayer
from com.xx.exceptions.FileNotFound import FileNotFound
import com.xx.log as logs
# log的作用域在当前模块
log = logs.get_logger(__name__)
"""
定义一个线程,用于视频的播放
"""
class VideoPlayerRun(QObject):
# 定义类变量。定义一个信号,用于发送图片文件,并将图片信息发送给用于显示的标签控件中。
changePixmap = QtCore.Signal(QtGui.QImage)

最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



