当前位置: 首页 > 网络知识

Qt 项目实战:基于QMediaPlayer播放器

时间:2026-01-29 09:26:30

QMediaPlayer开发视频播放器

Q:我们为何不使用QMediaPlayer?

A:QMediaPlayer支持的编解码库太少;QMediaPlayer在windows中解码调用的是
DirectShow,在Linux中调用的是GStreamer;相对Windows而言GStreamer扩展编解
码库比较方便,但是windows中的DirectShow太老了,Demuxer Decoder都比较麻烦
较麻烦;
QtMultimediaDemo 这个例子为老师编写的基于QMediaPlayer的播放器,它可以播放
MPEG­4编码方式的视频

使用QMediaPlayer搭建最简单的播放器
step1:pro文件添加内容

QT += core gui multimedia multimediawidgets

step2:框架

step3:测试代码

1 #include "widget.h" 2 3 #include <QApplication> 4 #include <QMediaPlayer> 5 #include <QVideoWidget> 6 #include <QDebug> 7 8 int main(int argc, char *argv[]) 9

不支持格式

如何添加不是“非基本图形控件”的派生类

需求:需要在界面上直接拖一个 QVideoWidget,由于基本控件中没有QVideoWidget,所以需要想想办法

新建提升的类

因为QVideoWidget本身就继承于QWidget,所以这里选择QWidget作为基类

控件进行提升

成功播放视频

widget.h

1 #ifndef WIDGET_H 2 #define WIDGET_H 3 4 #include <QWidget> 5 #include <QMediaPlayer> 6 #include <QVideoWidget> 7 #include <QMenu> 8 #include <QFileDialog> 9 #include <QFile> 10 #include <QDir> 11 12 QT_BEGIN_NAMESPACE 13 namespace Ui 14 QT_END_NAMESPACE 15 16 class Widget : public QWidget 17 ; 48 #endif // WIDGET_H

widgetpp

1 #include "widget.h" 2 #include "ui_widget.h" 3 4 Widget::Widget(QWidget *parent) : 5 QWidget(parent), 6 ui(new Ui::Widget), 7 player(new QMediaPlayer) //创建一个MediaPlayer 8 15 16 /* 右键弹出 Menu & Action */ 17 void Widget::createRightPopActions() 18 44 45 void Widget::openLocalVideoSlot() 46 58 59 void Widget::openUrlVideoSlot() 60 64 65 66 /*右键菜单接口*/ 67 void Widget::contextMenuEvent(QContextMenuEvent *event) 68 81 82 83 84 Widget::~Widget() 85

无边框的视屏

布局器边框都设置为zero,设置widget的背景颜色为666



上一篇:Qt 解决中报错xxx.h:4:10: ‘QMainWindow‘ file not found
下一篇:FileZilla 免费的FTP软件工具下载与使用教程
Qt
  • 英特尔与 Vertiv 合作开发液冷 AI 处理器
  • 英特尔第五代 Xeon CPU 来了:详细信息和行业反应
  • 由于云计算放缓引发扩张担忧,甲骨文股价暴跌
  • Web开发状况报告详细介绍可组合架构的优点
  • 如何使用 PowerShell 的 Get-Date Cmdlet 创建时间戳
  • 美光在数据中心需求增长后给出了强有力的预测
  • 2027服务器市场价值将接近1960亿美元
  • 生成式人工智能的下一步是什么?
  • 分享在外部存储上安装Ubuntu的5种方法技巧
  • 全球数据中心发展的关键考虑因素
  • 英特尔与 Vertiv 合作开发液冷 AI 处理器

    英特尔第五代 Xeon CPU 来了:详细信息和行业反应

    由于云计算放缓引发扩张担忧,甲骨文股价暴跌

    Web开发状况报告详细介绍可组合架构的优点

    如何使用 PowerShell 的 Get-Date Cmdlet 创建时间戳

    美光在数据中心需求增长后给出了强有力的预测

    2027服务器市场价值将接近1960亿美元

    生成式人工智能的下一步是什么?

    分享在外部存储上安装Ubuntu的5种方法技巧

    全球数据中心发展的关键考虑因素