提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
想在主界面循环播放视频作为界面背景,鼓捣了好一会儿才弄出来。现将问题记录一下,以供未来或其他朋友参考。
提示:以下是本篇文章正文内容,下面案例可供参考
一、初始化播放器成员
1.引入库
在项目的.pro文件下添加multimedia 和 multimediawidgets,这是多媒体模块:
QT += core gui multimedia multimediawidgets
2.定义类
1)在头文件中包含 QMediaPlayer 和 QVideoWidget
#ifndef MAINSCENE_H
#define MAINSCENE_H
#include <QWidget>
#include <QMediaPlayer>
#include <QVideoWidget>
QT_BEGIN_NAMESPACE
namespace Ui { class MainScene; }
QT_END_NAMESPACE
class MainScene : public QWidget
{
Q_OBJECT
public:
MainScene(QWidget *parent = nullptr);
~MainScene();
private:
QMediaPlayer *player;
QVideoWidget *videoWidget;
};
#endif // MAINSCENE_H
2)初始化播放器
void MainScene::playVideo()
{
player = new QMediaPlayer;
videoWidget = new QVideoWidget(this);
player->setVideoOutput(videoWidget);
//这个资源路径不管是用copy Path 或者copy URL放进去都不行
//索性我就直接放了个绝对路径,居然就好了,后面再研究怎么回事
player->setMedia(QUrl::fromLocalFile("C:/Users/Deng/Desktop/QT/Plantbattle/resource/start.mp4"));
videoWidget->show();
player->play();
}
将播放器窗口添加到布局中,运行后发现底部有报错
因为视频文件太大,这里需要将资源文件转换成二进制文件,接下来是转换操作。
二、资源文件设置
Qt为我们提供了一个工具rcc,可以使用该工具对我们的资源文件进行二进制编译,也就是加密,编译后会生成新的文件,然后我们在程序中对新的文件进行注册,就可以正常使用了
1.rcc
1)在cmd中输入rcc,如果没有出现上图所示,说明你没有为QT配置环境变量,你需要找到你电脑的QT安装位置,并复制其目录下的bin文件路径,将其添加到环境变量Path中。
2)然后在cmd打开你的 .qrc 所在文件位置 ,执行以下此命令,将 .qrc 文件转换成 .rcc文件
rcc -binary resource.qrc -o resource.rcc
3)将生成的 .rcc 文件复制到项目中的 build 目录下
4)注册资源:在构造函数中添加以下代码
QResource::registerResource(".cc文件路径");
5)一般情况下,此时运行应该可以正常播放视频了,如果还报:超出内存限制错误,需要在 .pro文件中添加以下代码:
CONFIG += resources_big