前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Qt播放器常用设置

Qt播放器常用设置

作者头像
全栈程序员站长
发布2022-06-27 08:21:29
2.8K0
发布2022-06-27 08:21:29
举报
文章被收录于专栏:全栈程序员必看

大家好,又见面了,我是你们的朋友全栈君。

Qt播放器常用设置
Qt播放器常用设置

播放效果

1.pro文件增加项

……

代码语言:javascript
复制
QT += multimedia  multimediawidgets

……..

2.头文件

void init();

代码语言:javascript
复制
  void positionChanged(qint64 position);
代码语言:javascript
复制
    void durationChanged(qint64 duration);
代码语言:javascript
复制
    void on_playButton_clicked();
代码语言:javascript
复制
    void updateDurationInfo(qint64 currentInfo);
代码语言:javascript
复制
 void on_treeView_player_doubleClicked(const QModelIndex &index);//这个是绑定文件双击打开,当然也可以修改成打开本地文件播放的形式。

3. .cpp文件 (UI->调的控件都要在ui界面里设置好,再布置其他控件)

代码语言:javascript
复制
void MainWindow::init()
代码语言:javascript
复制
 {//视频文件
代码语言:javascript
复制
     appPath=QCoreApplication::applicationDirPath();
代码语言:javascript
复制
    model = new QFileSystemModel();
代码语言:javascript
复制
    model->setRootPath(appPath);
代码语言:javascript
复制
    videoPath=appPath+"/player";
代码语言:javascript
复制
    ui->treeView_player->setModel(model);
代码语言:javascript
复制
    ui->treeView_player->setRootIndex(model->index(videoPath));
代码语言:javascript
复制
    m_mediaPlayer=new QMediaPlayer(ui->widget_player,QMediaPlayer::VideoSurface);
代码语言:javascript
复制
    //视频播放
代码语言:javascript
复制
    m_mediaPlayer=new QMediaPlayer(ui->widget_player,QMediaPlayer::VideoSurface);
代码语言:javascript
复制
    videoWidget = new QVideoWidget;
代码语言:javascript
复制
    videoWidget->setAspectRatioMode(Qt::IgnoreAspectRatio);
代码语言:javascript
复制
    playList=new QMediaPlaylist;
代码语言:javascript
复制
    //播放器布局
代码语言:javascript
复制
    QVBoxLayout  *layout=new QVBoxLayout;
代码语言:javascript
复制
    layout->addWidget(videoWidget);
代码语言:javascript
复制
    ui->widget_player->setLayout(layout);
代码语言:javascript
复制
    videoWidget->setPalette(Qt::black);
代码语言:javascript
复制
    ui->playButton->setIcon(style()->standardIcon(QStyle::SP_MediaPlay));
代码语言:javascript
复制
    //滑块设置
代码语言:javascript
复制
    ui->m_positionSlider->setRange(0, m_mediaPlayer->duration() / 1000);
代码语言:javascript
复制
    connect(ui->m_positionSlider, &QSlider::sliderMoved, this, &MainWindow::seek);
代码语言:javascript
复制
    ui->label_time->hide();
}
代码语言:javascript
复制
void MainWindow::initConnect()      //连接slide和时间(快进 快退)
代码语言:javascript
复制
{    
代码语言:javascript
复制
    connect(m_mediaPlayer,SIGNAL(durationChanged(qint64)),this,SLOT(durationChanged(qint64)));
代码语言:javascript
复制
    connect(m_mediaPlayer,SIGNAL(positionChanged(qint64)),this,SLOT(positionChanged(qint64)));
代码语言:javascript
复制
}
代码语言:javascript
复制
void MainWindow::on_playButton_clicked()            //播放暂停按钮
代码语言:javascript
复制
{
代码语言:javascript
复制
    if(m_mediaPlayer->state()==QMediaPlayer::PlayingState){
代码语言:javascript
复制
        m_mediaPlayer->pause();
代码语言:javascript
复制
        ui->playButton->setIcon(style()->standardIcon(QStyle::SP_MediaPlay));  //播放时显示播放按钮  }
代码语言:javascript
复制
    else {
代码语言:javascript
复制
        m_mediaPlayer->play();
代码语言:javascript
复制
        ui->playButton->setIcon(style()->standardIcon(QStyle::SP_MediaPause)); //暂停时显示播放按钮   }
}
代码语言:javascript
复制
void MainWindow::on_treeView_player_doubleClicked(const QModelIndex &index)             //视频目录双击
代码语言:javascript
复制
{    //如果是文件夹  返回
代码语言:javascript
复制
    if(model->isDir(index)){
代码语言:javascript
复制
        return;
代码语言:javascript
复制
    }
代码语言:javascript
复制
    QString path=model->filePath(index);
代码语言:javascript
复制
    playList->clear();//清空列表
代码语言:javascript
复制
    playList->addMedia(QUrl::fromLocalFile(path));
代码语言:javascript
复制
    m_mediaPlayer->setPlaylist(playList);
代码语言:javascript
复制
    m_mediaPlayer->setVideoOutput(videoWidget);
代码语言:javascript
复制
    m_mediaPlayer->play();
代码语言:javascript
复制
    if(m_mediaPlayer->state()==QMediaPlayer::PlayingState){
代码语言:javascript
复制
        ui->playButton->setIcon(style()->standardIcon(QStyle::SP_MediaPause));
代码语言:javascript
复制
        ui->label_time->show();    }
代码语言:javascript
复制
}
代码语言:javascript
复制
void MainWindow::durationChanged(qint64 duration)           //视频时间设置
代码语言:javascript
复制
{
代码语言:javascript
复制
    m_duration = duration / 1000;
代码语言:javascript
复制
    ui->m_positionSlider->setMaximum((int)duration/1000);
代码语言:javascript
复制
}
代码语言:javascript
复制
void MainWindow::positionChanged(qint64 progress)             //滑块设置
代码语言:javascript
复制
{
代码语言:javascript
复制
    //if (!m_positionSlider->isSliderDown())
代码语言:javascript
复制
    ui-> m_positionSlider->setValue((int)progress / 1000);
代码语言:javascript
复制
    updateDurationInfo(progress / 1000);
代码语言:javascript
复制
}
代码语言:javascript
复制
void MainWindow::updateDurationInfo(qint64 currentInfo)        // slide时间显示格式设置
代码语言:javascript
复制
{
代码语言:javascript
复制
    QString tStr;
代码语言:javascript
复制
    if (currentInfo || m_duration) {
代码语言:javascript
复制
        QTime currentTime((currentInfo / 3600) % 60, (currentInfo / 60) % 60,
代码语言:javascript
复制
                          currentInfo % 60, (currentInfo * 1000) % 1000);
代码语言:javascript
复制
        QTime totalTime((m_duration / 3600) % 60, (m_duration / 60) % 60,
代码语言:javascript
复制
                        m_duration % 60, (m_duration * 1000) % 1000);
代码语言:javascript
复制
        QString format = "mm:ss";
代码语言:javascript
复制
        if (m_duration > 3600)
代码语言:javascript
复制
            format = "hh:mm:ss";
代码语言:javascript
复制
        tStr = currentTime.toString(format) + " / " + totalTime.toString(format);
代码语言:javascript
复制
    }
代码语言:javascript
复制
    ui->label_time->setText(tStr);
代码语言:javascript
复制
}
代码语言:javascript
复制
void MainWindow::seek(int seconds)                  //滑块视频快进快退等
代码语言:javascript
复制
{
代码语言:javascript
复制
    m_mediaPlayer->setPosition(seconds * 1000);
代码语言:javascript
复制
    //    m_mediaPlayer->play();
代码语言:javascript
复制
}

一些包含文件使用ctrl+enter可添加,或自己在帮助上查找添加等都可。

头文件或者pro文件有些地方可能不完善,方法还凑活能用。

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/133657.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年6月8,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档