本文将介绍如何使用 Qt 中的 Qt Multimedia 组件开发音视频播放器。
工程的仓库地址
Gitee:https://gitee.com/leqijishu/leqiyingyin
GitHub:https://github.com/leqijishu/leqiyingyin
播放器的名称为 乐其影音,最终运行效果示例如下
在 Qt 中使用 Qt Multimedia 组件需要通过 Qt Maintenance Tool(Qt 维护工具)安装此组件。默认是不安装的,除非在安装 Qt 时是自定义安装,并选择了此组件。
用 Qt Creator 创建一个 Qt Widgets Application,Build system 选择 CMake
注:选择 CMake 的好处是可以在其它编程工具中开发,比如 VS Code 。
在类信息中选择基类(Base Class)为 QWidget,不勾选 Generate form
创建好工程后,首先编写界面。播放器的界面一共分成三部分,标题栏、视频显示窗口和控制栏,分别对应的类为 LeqiTitleBar、LeqiVideoWidget 和 LeqiControlBar,其中 LeqiControlBar 又分为五个控制按钮和两个进度条加时间标签两个部分,五个控制按钮封装为了 LeqiControls 类。
工程中的类
在这里插入图片描述
主界面的关键代码
void LeqiYingYin::initMainWindow()
{
QVBoxLayout *mainLayout = new QVBoxLayout(this);
mainLayout->addWidget(createTitleBar());
mainLayout->addWidget(createVideoWidget());
mainLayout->addWidget(createControlBar());
mainLayout->setContentsMargins(0, 0, 0, 0);
resize(mainWindowSize);
setWindowFlag(Qt::FramelessWindowHint);
loadStyleSheet("dark");
setWindowIcon(QIcon(":/resources/logo/leqi.ico"));
connect(leqiVideoWidget, SIGNAL(fullScreenChanged(bool)),
leqiTitleBar, SLOT(setFullScreen(bool)));
connect(leqiVideoWidget, SIGNAL(fullScreenChanged(bool)),
leqiControlBar, SLOT(setFullScreen(bool)));
}
音视频播放的关键代码
LeqiVideoWidget* LeqiYingYin::createVideoWidget()
{
leqiVideoWidget = new