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


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 调试器常见异常

下一篇:Qt 解决中报错xxx.h:4:10: ‘QMainWindow‘ file not found


Qt
Copyright © 2002-2019 k262电脑网 www.k262.cn 皖ICP备2020016292号
温馨提示:部分文章图片数据来源与网络,仅供参考!版权归原作者所有,如有侵权请联系删除!QQ:251442993 热门搜索 网站地图