QT视频播放器项目实战


文档顶部

2 02_视频播放器项目实战


目录



2.1 01_功能


文档顶部   本章顶部

2.1.1 01_介绍

功能。

在视频播放器界面中, 主体是一个视频输出画面, 底部左侧有几个控制按钮, 中间是当前播放进度和视频总时长, 右侧是可拖动的滑块。 拖动滑块时视频播放器将调整播放进度。

2.2 02_设计


文档顶部   本章顶部

2.2.1 01_介绍

设计。

视频播放器软件界面没有使用QT界面设计器, 而是使用C++代码创建所有界面控件。 使用开源音视频软件命令行工具ffmpeg获取视频总时长。 使用QT框架的多媒体模块Multimedia、 多媒体界面模块MultimediaWidgets。

2.3 03_实现


文档顶部   本章顶部

2.3.1 01_窗口定义

窗口定义。

在窗口类型MainWindow中, 定义了按钮ID的枚举类型。 定义了一些槽函数, 用于处理一些信号, 按钮点击、 视频回放状态发生变化、 媒体状态变化、 播放进度变化、 滑块按下了、 滑块释放了。 还定义了一些控件类型的变量, player:视频播放器。 videoWidget:视频输出窗口。 buttonPlay:播放按钮。 buttonPause:暂停按钮。 buttonStop:停止按钮。 labelProgress:进度标签。 slider:滑块。 duration:总时长信息。 group:按钮分组。 sliderDragging: 滑块是否正被拖动。 playerPausedBySlider: 播放器是否因为拖动滑块而暂停播放了。


文档顶部   本章顶部

2.3.2 02_辅助函数

辅助函数。

获取视频的总时长函数 get_duration_of_mp4。 通过运行音视频开源软件 命令行工具ffmpeg 并读取和分析输出信息来获取总时长。


文档顶部   本章顶部

2.3.3 03_构造函数

构造函数。

在构造函数中, 首先创建了主布局QVBoxLayout。 随后创建了视频输出窗口QVideoWidget, 并加入到主布局中。 然后创建了底部水平布局QHBoxLayout。 接着创建了按钮分组QButtonGroup。 然后创建了几个按钮, 并加入到按钮分组中。 接着创建了进度标签。 然后创建了滑块控件。 这些控件都加入到水平布局中。 接着将水平布局加入到主布局中。 随后创建了一个QWidget窗口, 布局设定为主布局, 并将这个窗口作为中心窗口。 随后创建了视频播放器对象。 设定音频输出为QAudioOutput。 设定视频输出为QVidieoWidget。 最后还建立了信号和槽的连接。


文档顶部   本章顶部

2.3.4 04_加载视频

加载视频。

Duration类型 用于表示音视频的时长。 load函数首先了加载视频的功能。 首先调用函数 get_duration_of_mp4 获取视频总时长。 在标签控件中显示视频总时长。 调用player的setSource函数 设定视频URL, 调用play函数播放视频。


文档顶部   本章顶部

2.3.5 05_播放处理

播放处理。

播放控制按钮槽函数 controlButtonClicked。 如果点击了播放按钮, 而且播放状态不是正在播放状态, 则调用play函数进行播放。 如果点击了暂停按钮, 而且播放状态是正在播放状态, 则调用pause按钮暂停播放。 如果点击了停止按钮, 而且播放状态不是已停止播放, 则调用stop按钮停止播放。


文档顶部   本章顶部

2.3.6 06_进度处理

进度处理。

播放进度变化处理槽函数 positionChanged。 根据播放进度计算时长信息。 然后在标签控件上更新当前进度和总时长信息。 计算播放进度百分比, 据此修改滑块控件的位置。 滑块按下处理槽函数 sliderPressed。 设定sliderDragging标记为true, 表示滑块已被按下。 为了滑块拖动过程中滑块 不受播放进度变化的影响, 如果是正在播放状态, 则暂停播放, 并设定playerPausedBySlider标记为true, 表示播放器已经因为滑块拖动而暂停播放了。 滑块释放处理槽函数 sliderReleased。 根据滑块位置计算播放进度, 然后调用setPosition函数修改播放器的播放进度。 将滑块拖动标记设定为false。 如果playerPausedBySlider标记为true, 播放器在拖动过程中暂停播放了, 则恢复播放, 同时恢复该标记为false。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值