您当前的位置: 首页 >  ide

txwtech

暂无认证

  • 5浏览

    0关注

    813博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

QT实现播放wmv视频文件QMediaPlayer_QVideoWidget

txwtech 发布时间:2022-10-07 21:11:20 ,浏览量:5

QT实现播放wmv视频文件QMediaPlayer_QVideoWidget

QT实现播放wmv视频文件QMediaPlayer_QVideoWidget.rar-QT文档类资源-CSDN下载QT实现播放wmv视频文件QMediaPlayer_QVideoWidget.rarhttps:/更多下载资源、学习资料请访问CSDN下载频道.https://download.csdn.net/download/txwtech/86739507

Qt中多媒体的实现 Qt对音视频的播放和控制、相机拍摄、收音机等多媒体应用提供了强大的支持。Qt5使用了全新的Qt Multimedia模块来实现多媒体应用,Qt4中用来实现多媒体功能的Phonon模块已经被移除。新的Qt Multimedia模块提供了丰富的接口,可以轻松地使用平台的多媒体功能。例如进行媒体播放、使用相机和收音机等。

Qt的对媒体接口建立在底层平台的多媒体框架之上,这就意味着对于各种编解码器的支持依赖于使用的平台。如果要访问一些平台相关的设置,或者将Qt多媒体接口移植到新的平台,可以参考Qt帮助中的Multimedia Backend Development文档。

要使用多媒体模块的内容,需要在.pro项目文件中添加如下代码

Qt += multimedia 一、mediaplayer QMediaPlayer集成了底部包括音频输出和音频文件读取等等操作,是一个高层次的,封装好的播放器内核,通过调用它,你可以实现输入任意格式的视频、音频播放,并实现对其播放状态的调整。

下面我们用QMediaPlayer来播放一段音乐

player = new QMediaPlayer; player->setMedia(QMediaContent(QUrl::fromLocalFile("/*****/test.mp3"))); player->play(); QMediaPlayer中几个重要属性

二、QVideoWidget QMediaPlayer不仅可以播放音频,还可以播放视频。不过如果要视频在界面上显示出来,还需要其他类进行辅助,比如QVideoWidget、QGraphicsVideoItem或者自定义的类。QVideoWidget继承自QWidget,所有它可以作为一个普通窗口部件进行显示,也可以嵌入到其他窗口中。将QVideoWidget指定为QMediaPlayer的视频输出窗口后,就可以显示播放的视频画面。

而像GIF格式的动画类型,可以使用QMovie播放。

在项目文件的.pro中修改代码如下:

QT += core gui multimedia multimediawidgets player = new QMediaPlayer(this); videoWidget = new QVideoWidget(this); player->setVideoOutput(videoWidget); player->setMedia(QUrl::fromLocalFile("/******/test.wmv")); player->play();

三、QMediaPlaylist QMediaPlaylist是一个列表,它可以保存媒体文件,包括媒体路径等信息,它具有着列表的性质,比如添加删除插入等,但它能做的,比单纯的储存要多得多。设置播放顺序,对播放的控制,保存到本地,从本地读取,都可以很方便地实现。

用QMediaPlaylist添加媒体文件可以使用addMedia方法

playlist = new QMediaPlaylist; playlist->addMedia(QUrl::fromLocalFile("/****/music1.mp3")); playlist->addMedia(QUrl::fromLocalFile("/****/music2.mp3")); playlist->addMedia(QUrl::fromLocalFile("/****/music3.mp3")); playlist->setCurrentIndex(0); playlist->setPlaybackMode(QMediaPlaylist::Loop); player->setPlaylist(playlist); 属性

#ifndef MAINWINDOW13_2_H
#define MAINWINDOW13_2_H

#include 
class QMediaPlayer;
class QVideoWidget;

QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow13_2; }
QT_END_NAMESPACE

class MainWindow13_2 : public QWidget
{
    Q_OBJECT

public:
    MainWindow13_2(QWidget *parent = nullptr);
    ~MainWindow13_2();

private slots:
    void on_pushButton_play_clicked();

    void on_pushButton_stop_clicked();

private:
    Ui::MainWindow13_2 *ui;
    QMediaPlayer *player2;
    QVideoWidget *videoWidget2;
};
#endif // MAINWINDOW13_2_H

#include "mainwindow13_2.h"
#include "ui_mainwindow13_2.h"
#include 
#include 

MainWindow13_2::MainWindow13_2(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::MainWindow13_2)
{
    ui->setupUi(this);
    player2=new QMediaPlayer(this);
    videoWidget2=new QVideoWidget(this);
    videoWidget2->resize(800,350);
    player2->setVideoOutput(videoWidget2);


    player2->setMedia(QUrl::fromLocalFile("../wavescan_english.wmv"));

   // player2->play();


    ui->horizontalSlider_brightness->setValue(videoWidget2->brightness());//亮度
    connect(ui->horizontalSlider_brightness,&QSlider::sliderMoved,videoWidget2,&QVideoWidget::setBrightness);
    connect(videoWidget2,&QVideoWidget::brightnessChanged,ui->horizontalSlider_brightness,&QSlider::setValue);

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

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

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



}

MainWindow13_2::~MainWindow13_2()
{
    delete ui;
}


void MainWindow13_2::on_pushButton_play_clicked()
{
   player2->play();
}

void MainWindow13_2::on_pushButton_stop_clicked()
{
    player2->stop();
}

关注
打赏
1665060526
查看更多评论
立即登录/注册

微信扫码登录

0.0428s