我的QT Creator学习笔记(二十七)——播放视频

参考文献:《Qt Creator 快速入门》第三版 霍亚飞编著

视频文件可以通过QMediaPlayer进行播放,但是要在界面上显示视频内容,还需要借助QVideaWidget或者QGraphicsVideoItem类,这两个类都属于Qt MultimediaWidgets模块。

上栗子

!!!注意,如果不能播放本地mp4文件,出现运行错误DirectShowPlayerService::doRender: Unresolved error code 0x80040266 (),可能是因为编码不支持,要下载安装K-lite,

参考https://blog.csdn.net/chyuanrufeng/article/details/108021404

新建Qt Widgets应用,名称为myvideowidget,基类选择QWidgte,其他都保持默认。完成后在项目文件中添加如下代码

QT       += core gui multimedia multimediawidgets

在widget.h中添加类的前置声明,和私有成员对象


class QMediaPlayer;
class QVideoWidget;
    QMediaPlayer* player;
    QVideoWidget* videoWidget;

修改布局文件,设置Widget界面的宽度600,高度400。布局文件中添加4个Label和4个Horizontal Slider,分别对对应亮度、对比度、色度和饱和度的控制,4个滑块的mimum都设置为-100,maxmum都设置为100,ui布局大致如下

在widget.cpp文件中添加头文件包含

#include <QMediaPlayer>
#include <QVideoWidget>

在构造函数中初始化player和videoWidget并设置要播放的视频文件。

    player=new QMediaPlayer(this);
    videoWidget=new QVideoWidget(this);
    videoWidget->resize(600,300);
    player->setVideoOutput(videoWidget);
    player->setMedia(QUrl::fromLocalFile("D:../myvidewidget/大鱼.mp4"));
    player->play();

运行程序可以看到播放视频

在构造函数中继续添加代码,使滑块滑动时可以改变视频的亮度,对比度、色相、饱和度同理。代码如下

   //亮度
    //首先设置slider值为当前视频亮度
    ui->brightnessSlider->setValue(videoWidget->brightness());
    //信号槽关联,使滑块滑动时改变视频亮度
    connect(ui->brightnessSlider,&QSlider::sliderMoved,videoWidget,&QVideoWidget::setBrightness);
    //信号槽关联,视频亮度改变时,设置滑块的值
    connect(videoWidget,&QVideoWidget::brightnessChanged,ui->brightnessSlider,&QSlider::setValue);

    //对比度
    ui->contrastSlider->setValue(videoWidget->contrast());
    connect(ui->contrastSlider,&QSlider::sliderMoved,videoWidget,&QVideoWidget::setContrast);
    connect(videoWidget,&QVideoWidget::contrastChanged,ui->contrastSlider,&QSlider::setValue);

    //色相
    ui->hueSlider->setValue(videoWidget->hue());
    connect(ui->hueSlider,&QSlider::sliderMoved,videoWidget,&QVideoWidget::setHue);
    connect(videoWidget,&QVideoWidget::hueChanged,ui->hueSlider,&QSlider::setValue);

    //饱和度
    ui->saturationSlider->setValue(videoWidget->saturation());
    connect(ui->saturationSlider,&QSlider::sliderMoved,videoWidget,&QVideoWidget::setSaturation);
    connect(videoWidget,&QVideoWidget::saturationChanged,ui->saturationSlider,&QSlider::setValue);

 

 

 

 

 

 

 

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值