QT实现视频播放器

这篇具有很好参考价值的文章主要介绍了QT实现视频播放器。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.我们需要的头文件

qt播放视频,qt,开发语言

2. .cpp文件

#include "videowin.h"
#include "ui_videowin.h"
#include <QFileDialog>
#include <QTime>
#include <QMessageBox>
#include <QFont>
videowin::videowin(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::videowin)
{
    m_pWidget = new QWidget(this);
    m_pWidget->setGeometry(0, 0, 1152, 616);
    QPalette pal(m_pWidget->palette());

    //设置背景黑色
    pal.setColor(QPalette::Background, Qt::black);
    m_pWidget->setAutoFillBackground(true);
    m_pWidget->setPalette(pal);
    m_pWidget->show();

    ui->setupUi(this);

    this->setWindowIcon(QIcon(":/icon_video/video.png"));
    this->setWindowTitle("大鱼播放器");
    this->i = 0;
    this->n = 0;
    this->j = 0;
    ui->verticalSlider->hide();
    ui->listWidget->hide();
    //this->player->setVolume(position);
    this->videoWidget = new QVideoWidget(this);
    this->videoWidget->setGeometry(50,40,720,470);//播放视频大小位置
    this->player = new QMediaPlayer(this);
    this->ui->label->setText("00:00/00:00");//显示时间的
    this->ui->label->setStyleSheet("color:white");
    this->ui->label_2->setStyleSheet("color:white");
    this->ui->label_2->setFont(QFont("阿里妈妈数黑体",16));
    this->timer = new QTimer(this);//定时器
    this->ui->pushButton->setIcon(this->style()->standardPixmap(QStyle::SP_MediaPlay));//给按键设置类型
    //this->time = new QTime(this);
    connect(this->ui->listWidget,SIGNAL(itemDoubleClicked(QListWidgetItem *)),this,SLOT(changeMovie(QListWidgetItem *)));
    connect(this->timer,SIGNAL(timeout()),this,SLOT(updateTime_1()));
    connect(this->player,SIGNAL(durationChanged(qint64)),this,SLOT(getDuration_1(qint64)));
    connect(this->player,SIGNAL(positionChanged(qint64)),this,SLOT(setSliderValue(qint64)));
}
videowin::~videowin()
{
    delete ui;
}


//获取文件信息
void videowin::on_pushButton_7_clicked()
{
    //this->namelist.clear();
    //this->ui->listWidget->clear();
    this->namelist =QFileDialog::getOpenFileNames(this,"选择",".","WMV(*.wmv);;AVI(*.avi);;MP4(*.MP4)");
    for(int i = 0;i<namelist.size();i++)
    {
        QFileInfo fileInfos(namelist.at(i));//获取文件信息
        QListWidgetItem *item = new QListWidgetItem(fileInfos.fileName(),this->ui->listWidget);
        item->setToolTip(namelist.at(i));
        this->ui->listWidget->addItem(item);
    }
}

//双击能实现播放视频
void videowin::changeMovie(QListWidgetItem *item)
{
    this->index = this->ui->listWidget->currentRow();
    //设置播放器要播放的视频
    this->player->setMedia(QUrl(item->toolTip()));
    //获取视频名字
    this->name = item->text()+"   ";
    this->ui->label_2->setText(this->name);
    QFont ft;
    ft.setPointSize(14);
    this->ui->label_2->setFont(ft);
    //播放
    this->player->setVideoOutput(this->videoWidget);
    this->player->play();
    this->ui->pushButton->setIcon(this->style()->standardPixmap(QStyle::SP_MediaPause));
    this->timer->start(1000);
}


//暂停键
void videowin::on_pushButton_clicked()
{
    int state = this->player->state();//获取播放器的状态
    if(state == QMediaPlayer::PausedState)//暂停
    {
        this->player->play();
        this->ui->pushButton->setIcon(this->style()->standardPixmap(QStyle::SP_MediaPause));

    }
    else if(state == QMediaPlayer::PlayingState)//播放中
    {
        this->player->pause();
        this->ui->pushButton->setIcon(this->style()->standardPixmap(QStyle::SP_MediaPlay));
    }
}
//显示视频进度和时长
void videowin::updateTime_1()
{
    this->n++;//时间一到,显示名称的一半
    if(this->n == this->name.size())
    {
        this->n = 0;
    }
    this->ui->label_2->setText(this->name.mid(this->n));//显示名称
    qint64 dur = this->player->duration();//获取到总时长
    qint64 pos = this->player->position();//获取当前的播放位置
    QTime time1(0,0,0,0),time2(0,0,0,0);//显示:转成 00:00
    this->ui->label->setText(time1.addMSecs(pos).toString("mm:ss") +"/" +time2.addMSecs(dur).toString("mm:ss"));
}

void videowin::getDuration_1(qint64 duration)
{
    qDebug()<<duration;
    this->ui->horizontalSlider->setRange(0,duration);//设置进度条范围
    this->ui->horizontalSlider->setValue(0);

}
//视频滑块
void videowin::on_horizontalSlider_sliderMoved(int position)
{
    this->player->setPosition(position);//根据滑块的位置设置播放音乐的位置
}

//下集
void videowin::on_pushButton_2_clicked()
{
    if(this->namelist.empty())
    {
        QMessageBox::information(this,"提示","没有可播放的视频");
    }
    else
    {
        this->index++;
        if(this->index == this->namelist.size())
        {
            QMessageBox::information(this,"提示","已经是最后一个视频了");
            this->index--;
        }
        this->player->stop();
        QFileInfo fileInfo(this->namelist.at(this->index));
        this->name = fileInfo.fileName()+"   ";
        this->ui->label->setText(this->name);
        this->player->setMedia(QUrl(this->namelist.at(this->index)));
        this->player->play();
    }
}
//控制音量条
void videowin::on_pushButton_4_clicked()
{

    if(i == 0)
    {
        ui->verticalSlider->show();
        i = 1;
    }
    else if( i == 1)
    {
        ui->verticalSlider->hide();
        i = 0;
    }

}
//调节音量
void videowin::on_verticalSlider_sliderMoved(int position)
{
    this->player->setVolume(position);
}
//更新视频滑块
void videowin::setSliderValue(qint64 position)
{
     this->ui->horizontalSlider->setValue(position);
}
//选集按钮
void videowin::on_pushButton_5_clicked()
{
    if(j == 0)
    {
        ui->listWidget->show();
        j = 1;
    }
    else if( j == 1)
    {
        ui->listWidget->hide();
        j = 0;
    }
}

3.ui界面

qt播放视频,qt,开发语言 

 文章来源地址https://www.toymoban.com/news/detail-521535.html

 

到了这里,关于QT实现视频播放器的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【OpenCV+Qt】实现简易视频播放器——支持进度条拖动

    OpenCV实现视频播放器,其思路大致就是在线程中使用OpenCV中的VideoCapture循环读取本地视频的每一帧Mat,然后发送到界面转换成QImage进行显示,而进度条拖动则用到了VideoCapture中的set函数,进度条则是使用Qslider;并且通过自定义新的进度条类实现点击跳转功能; 效果: 1.进行

    2023年04月08日
    浏览(54)
  • Qt 实现简易的视频播放器,功能选择视频,播放,暂停,前进,后退,进度条拖拉,视频时长显示

    1.效果图 2.代码实现 2.1 .pro文件 2.2 .h文件 2.3 .cpp文件

    2024年04月12日
    浏览(44)
  • linux系统中QT里面的视频播放器的实现方法

          大家好,今天主要和大家聊一聊,如何使用QT中视频播放器的方法。   目录 第一:视频播放器基本简介 第二:视频播放器头文件说明  第三:源文件的具体实现方法 第四:运行效果显示        与音乐播放器一样使用 QMediaPlayer 类,不同的是需要使用 setVideoOutput(QVi

    2024年02月04日
    浏览(55)
  • 用Qt开发的ffmpeg流媒体播放器,支持截图、录像,支持音视频播放,支持本地文件播放、网络流播放

    本工程qt用的版本是5.8-32位,ffmpeg用的版本是较新的5.1版本。它支持TCP或UDP方式拉取实时流,实时流我采用的是监控摄像头的RTSP流。音频播放采用的是QAudioOutput,视频经ffmpeg解码并由YUV转RGB后是在QOpenGLWidget下进行渲染显示。本工程的代码有注释,可以通过本博客查看代码或者

    2024年02月03日
    浏览(105)
  • 用VLC开发视频播放器/组件(两种方式:libVLC / VLC-Qt)

    MSVC-2015 Qt 5.14.2 QCreator 参考:心流剑 libVLC 各版本 下载链接 我的下载版本为:3.0.11 sdk/lib文件夹目录 qmake vlc 部分的配置(路径根据自己的修改) 只需要 : libvlc.lib、libvlccore.lib 把 plugins 文件夹、libvlc.dll、libvlccore.dll 复制到 bin_Debug / bin_Release VLC-Qt 下载地址 参考链接1:链接

    2024年02月12日
    浏览(91)
  • QT简单的视频播放器

    1.功能 选择路径下的固定视频格式文件播放,对应的音频和视频同步播放 2.新建一个不含UI界面的QT工程 特别注意:QT中的路径名不能含中文   设置一个不含UI界面的工程 取消构建目录 因为要引入视频播放器的模块,我们在pro中引入对应的模块 因为要引入布局格式,所以我们

    2024年02月03日
    浏览(40)
  • 【QT项目:视频播放器——Qt opengl编程】通过shader完成显示yuv

    通过Qt opengl不是为了3D绘制,而是为了将视频绘制起来 使用opengl 可以极大降低yuv转rgb的转换开销 1、为什么用QT的opengl 简单,界面可以自动叠加 void paintGL(); // 具体的绘制写在该函数里 void initializeGL(); // 材质初始化 void resizeGL(int width, int height); // 当窗口发生变化(缩放) QO

    2023年04月09日
    浏览(56)
  • 浏览器网页内嵌Qt-C++音视频播放器的实现,支持软硬解码,支持音频,支持录像截图,支持多路播放等,提供源码工程下载

        在浏览器中实现播放RTSP实时视频流,⼤体上有如下⼏个⽅案: ⽅案一:浏览器插件⽅案 ActiveX、NPAPI、PPAPI     ActiveX插件适用于IE浏览器,NPAPI与PPAPI插件适用于谷歌浏览器,不过这些插件都已经不被浏览器所支持。 ⽅案二:先转码再转流⽅案     ⼯作原理是架设一

    2024年01月17日
    浏览(97)
  • 嵌入式Qt 开发一个音乐播放器

    上篇文章:RK3568源码编译与交叉编译环境搭建,进行了OK3568开发板软件开发环境搭建,通过编译RK3568的源码,可以得到Qt开发的交叉编译相关工具。 本篇,就来在搭建好的软件开发中,进行Qt软件的开发测试。由于Qt是支持跨平台的,因此本篇的音乐播放器,先在Windows上编写

    2024年02月02日
    浏览(50)
  • Qt之基于QMediaPlayer的音视频播放器(支持常见音视频格式)

    Qt自带了一个Media Player的例子,如下图所示: 但是运行这个例子机会发现,连最基本的MP4格式视频都播放不了。因为QMediaPlayer是个壳(也可以叫框架),依赖本地解码器,视频这块默认基本上就播放个MP4,甚至连MP4都不能播放,如果要支持其他格式需要下载k-lite或者LAVFilter

    2024年02月02日
    浏览(70)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包