首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WidgetSeekProgress未显示视频Vlc-qt Qt的媒体已用时间和完整时间

WidgetSeekProgress未显示视频Vlc-qt Qt的媒体已用时间和完整时间
EN

Stack Overflow用户
提问于 2020-10-29 23:22:05
回答 1查看 33关注 0票数 0

我正在使用vlc-qt模块作为我的基础用Qt开发一个媒体播放器。因此,我能够在VlcWidgetVideo中加载视频,并使用WidgetSeekProgress来显示视频的经过时间和完整时间。

问题是,在创建视频并将其加载到小部件中后,当我创建WidgetSeekProgress的对象时,它没有显示视频的完整视频时间和经过时间。它只是显示了没有时间的栏,它是左右两边的。下面给出了我的示例项目的代码explayer.h

代码语言:javascript
复制
#ifndef EXPPLAYER_H
#define EXPPLAYER_H

#include <QMainWindow>
#include "VLCQtCore/Instance.h"
#include "VLCQtCore/MediaPlayer.h"
#include "VLCQtCore/Media.h"
#include "VLCQtCore/Common.h"
#include "VLCQtCore/Config.h"
#include "QPushButton"
#include "QtMultimedia/QMediaPlaylist"
#include "VLCQtWidgets/WidgetVideo.h"
#include "VLCQtWidgets/WidgetSeekProgress.h"
#include "QSlider"
#include "QFileDialog"
#include "QInputDialog"
#include "QLabel"
#include "QListView"
#include "QBoxLayout"

QT_BEGIN_NAMESPACE
namespace Ui { class expPlayer; }
QT_END_NAMESPACE

class expPlayer : public QMainWindow
{
    Q_OBJECT

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

private slots:
    void on_pushButton_clicked();

private:
    Ui::expPlayer *ui;

    VlcInstance *m_instance;
    VlcMedia *m_media;
    VlcMediaPlayer *m_player;
    VlcWidgetSeekProgress *m_progressBar;
};
#endif // EXPPLAYER_H

explayer.cpp

代码语言:javascript
复制
#include "expplayer.h"
#include "ui_expplayer.h"

expPlayer::expPlayer(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::expPlayer)
{
    ui->setupUi(this);
    m_instance = new VlcInstance(VlcCommon::args(), this);
    m_player = new VlcMediaPlayer(m_instance);

    m_player->setVideoWidget(ui->m_video);
    ui->m_video->setMediaPlayer(m_player);
    ui->m_video->setSizePolicy(QSizePolicy::Ignored, QSizePolicy::Ignored);
    ui->m_video->show();

    m_media = new VlcMedia("file:///home/vinay/Downloads/long_sample_video.mp4",m_instance);
    m_player->open(m_media);
    m_player->play();


}

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


void expPlayer::on_pushButton_clicked()
{
    m_progressBar=new VlcWidgetSeekProgress(m_player,this);
    m_progressBar->resize(ui->m_video->width(),30);
    m_progressBar->move(ui->m_video->x(),ui->m_video->y()+ui->m_video->height()+20);
    m_progressBar->show();

}

我通过单击UI中的一个按钮来创建进度条的实例,因为我认为视频没有按时加载。所以我的酒吧不会告诉我时间。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-10-31 11:56:17

我只需要在媒体播放器实例化之后将播放器添加到WidgetSeekProgress对象中。

代码语言:javascript
复制
m_instance = new VlcInstance(VlcCommon::args(), this);
    m_player = new VlcMediaPlayer(m_instance);
    ui->m_seek->setMediaPlayer(m_player);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64594137

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档