QT制作视频播放器

发布时间:2023-07-13 09:00

应项目需要,我之前用ffmpeg合成的视频需要用一个界面播放,思来想去自学QT来做这个工作。

首先我系统是ubuton16.0.4,先安装QT工具,然后直接开发。建议新来的朋友先自学一下QT的LayOut布局设计,使用布局会让你的控件更整齐,而且放在布局里的控件在设计好之后还可以跟着窗口的伸缩而伸缩,十分好用。网上很多将界面布局都用的代码来生成控件,这对QT初学者很不友好,我推荐一篇文章教大家用designer来设计界面,布局设计,十分好用。

先看一下我做的很丑陋的布局

\"QT制作视频播放器_第1张图片\"

右边是我的工具输入,大家可以不用关心,播放视频主要是在右边,打开按钮可以让你选择视频文件,播放按钮来控制视频的暂停和播放的,视频一打开会有进度时间进度条的显示。大家看代码

    //选择视频文件
    QString filename = QFileDialog::getOpenFileName(this,tr(\"选择视频文件\"),\"/home/cidi/Documents/gxs/Qt-MediaPlayer/build-MediaPlayer-Desktop_Qt_5_7_0_GCC_64bit-Debug/new_video/\",
                                                    tr(\"视频格式(*.avi *.mp4 *.flv *.mkv *.mpeg)\"));
    QFile file(filename);
    if(!file.open(QIODevice::ReadOnly))
    {
        QMessageBox::information(NULL, \"Title\", \"Content\", QMessageBox::Ok,
                                 QMessageBox::Ok);
        return;
    }

    if(if_reload)
    {//重新加载视频时,重置以下变量
        delete layout_video;
        delete player;
        delete widget;
        delete timer;
    }
    if_reload = true;

    //实例化三个全局变量
    layout_video = new QVBoxLayout;
    player = new QMediaPlayer;
    widget = new QVideoWidget;
    //设置视频播放区域与Label的边距
    layout_video->setMargin(1);
    //根据label_player尺寸设置播放区域
    widget->resize(ui->label_play_video->size());
    layout_video->addWidget(widget);
    ui->label_play_video->setLayout(layout_video);
    player->setVideoOutput(widget);

    //设置播放器
    player->setMedia(QUrl::fromLocalFile(filename));
    //play_state为true表示播放,false表示暂停
    play_state = true;
    //ui->pushButton_Volume->setEnabled(true);
    ui->horizontalSlider->setEnabled(true);
    ui->horizontalSlider->setRange(0,maxValue);
    //启用播放/暂停按钮,并将其文本设置为“暂停”
    ui->pushButton_Player->setEnabled(true);
    ui->pushButton_Player->setText(\"暂停\");

    timer = new QTimer();
    timer->setInterval(1000);
    timer->start();

    connect(timer,SIGNAL(timeout()),this,SLOT(onTimerOut()));
    connect(player,SIGNAL(durationChanged(qint64)),this,SLOT(setEndTime(qint64)));
       
    //播放器开启
    player->play();

这是整个视频播放器的主要代码,比较简单,大家看一下效果图。

整个项目我放在github上了,直接下载下来在QT上编译运行就可以了。https://github.com/CoolMonKKey/Work.git

项目在cutVideo文件夹下,有什么问题可以留言问我噢。

ItVuer - 免责声明 - 关于我们 - 联系我们

本网站信息来源于互联网,如有侵权请联系:561261067@qq.com

桂ICP备16001015号