QFFPlayer播放器__整体框架(QT+ffplay+opengl)

前言

ffplay是一款功能强大的播放器,qt是目前流行的跨平台界面框架,本文在QT环境下,用ffplay的功能实现了一个简易的播放器。视频显示用QT模块QOpenGLWidget的shader方式显示,该方式能直接渲染yuv图片,降低cpu占用率

一、界面框架   

1、MainWindow

最外层部分是MainWindow,继承了QMainWindow。这也是大部分应用的主体框架结构,因为QMainWindow自带菜单栏、工具栏以及状态栏,开发相对方便。

2、CentralWidget

CentralWidget是第二层,MainWindow的中心widget。该层包括三部分,HVideoWidget负责显示视频,HSeekWidget负责进度条的显示,HControlWidget负责视频控制。

3、HVideoWidget

该层是视频业务Widget,里面包含GLWnd(继承于QOpenGLWidget),是QFFPlayer的核心显示Widget,同时也包含视频的业务处理类MyFFplay。

4、HSeekWidget

该层负责视频播放进度条的显示,通过点击进度条能实现播放指定时间的视频,同时显示播放的时长和总时长

5、HControlWidget

负责视频控制部分的功能,比如暂停,快进,快退,逐帧模式,全屏等。

二、HVideoWidget类

该类根据视频的原始宽高比信息,计算出视频的显示区域,并负责视频控制的业务逻辑

1、GLWnd类

GLWnd继承于QOpenGLWidget,负责渲染YUV视频的显示。

2、MyFFplay类

基于原生ffplay,封装的MyFFplay类,包括ffplay的音频播放功能,音视频同步功能,解码功能等。通过MyFFplay的成员函数调用原生ffplay的静态函数,实现视频的控制,播放功能。

3、HFullScreenControlWidget类

窗口在全屏模式时,视频操作的控制面板。鼠标移动时自动出现,鼠标4秒未移动后自动消失

三、进度条控制类HSeekWidget

1、HSeekWidget.ui文件

左右有两个QLabel,分别显示已经播放的时长和视频总时长,中间的MySlider是进度条,负责显示视频的播放进度,点击进度条可以跳转到指定的时间点播放。

运行时效果图 

四、视频控制HControlWidget类

1、HControlWidget.ui文件

该类主要负责视频控制,目前的按钮有暂停,恢复播放,停止播放,快进,快退,逐帧模式,全屏模式。

界面如下:

下载链接:

https://download.youkuaiyun.com/download/pinghe2024/92085640

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值