Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. General and Desktop
  4. QT Multimedia players for multiple video files
Forum Updated to NodeBB v4.3 + New Features

QT Multimedia players for multiple video files

Scheduled Pinned Locked Moved Solved General and Desktop
multimediavideosgraphics viewc++mediaplayer
16 Posts 4 Posters 6.5k Views 3 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • K Offline
    K Offline
    Kinesis
    wrote on 21 Jun 2018, 08:41 last edited by
    #7

    @jsulm
    The Problem is I don't know how to create multiple media players for multiple videos which are filtered from directory with looping or some QClasses .

    J 1 Reply Last reply 21 Jun 2018, 08:42
    0
    • K Kinesis
      21 Jun 2018, 08:41

      @jsulm
      The Problem is I don't know how to create multiple media players for multiple videos which are filtered from directory with looping or some QClasses .

      J Offline
      J Offline
      jsulm
      Lifetime Qt Champion
      wrote on 21 Jun 2018, 08:42 last edited by
      #8

      @Kinesis Please specify what exactly the problem is.
      Is it: how to filter files in a directory?

      https://forum.qt.io/topic/113070/qt-code-of-conduct

      1 Reply Last reply
      0
      • K Offline
        K Offline
        Kinesis
        wrote on 21 Jun 2018, 08:51 last edited by Kinesis
        #9

        @jsulm
        Filtering the video file is not the problem.
        The problem is I don't know how to show the filtered videos with media players.
        It means that 1 video per 1 player , 5 videos per 5 players.

        J 1 Reply Last reply 21 Jun 2018, 09:01
        0
        • K Kinesis
          21 Jun 2018, 08:51

          @jsulm
          Filtering the video file is not the problem.
          The problem is I don't know how to show the filtered videos with media players.
          It means that 1 video per 1 player , 5 videos per 5 players.

          J Offline
          J Offline
          jsulm
          Lifetime Qt Champion
          wrote on 21 Jun 2018, 09:01 last edited by
          #10

          @Kinesis You iterate over all the video files and create a player for each (like you already did above for one).

          https://forum.qt.io/topic/113070/qt-code-of-conduct

          1 Reply Last reply
          2
          • K Offline
            K Offline
            Kinesis
            wrote on 21 Jun 2018, 09:08 last edited by Kinesis
            #11

            @jsulm
            I know the logic but when it comes to coding I am really weak . please show me how to do it(just 1 example) . please :(

            J 1 Reply Last reply 21 Jun 2018, 09:09
            0
            • K Kinesis
              21 Jun 2018, 09:08

              @jsulm
              I know the logic but when it comes to coding I am really weak . please show me how to do it(just 1 example) . please :(

              J Offline
              J Offline
              jsulm
              Lifetime Qt Champion
              wrote on 21 Jun 2018, 09:09 last edited by
              #12

              @Kinesis Sorry, I will not write the code for you.
              I really don't understand what the problem is as you already managed to create one player for one file...

              https://forum.qt.io/topic/113070/qt-code-of-conduct

              1 Reply Last reply
              2
              • K Offline
                K Offline
                Kinesis
                wrote on 21 Jun 2018, 09:47 last edited by
                #13

                @jsulm
                Thanks for your help.I really appreciate that.

                M 1 Reply Last reply 21 Jun 2018, 15:14
                0
                • K Kinesis
                  21 Jun 2018, 09:47

                  @jsulm
                  Thanks for your help.I really appreciate that.

                  M Offline
                  M Offline
                  mrjj
                  Lifetime Qt Champion
                  wrote on 21 Jun 2018, 15:14 last edited by
                  #14

                  @Kinesis
                  Hi
                  It is easier to help if you break down task in steps and ask pr step what we
                  would suggest.
                  Like getting all files in a folder you could do

                  #include <QDir>
                  //assume the directory exists and contains some files 
                  QDir directory("c:/xx/yyy"); // point to real folder
                  // ask for mp4 and avi. adjust to your needs
                  QStringList vids= directory.entryList(QStringList() << "*.mp4" << "*.avi",QDir::Files);
                  foreach(const QString &filename, vids) {
                  // new a player 
                  // insert to form or show as window
                  // give it file
                  // tell it to play
                  }
                  
                  K 1 Reply Last reply 22 Jun 2018, 04:24
                  2
                  • M mrjj
                    21 Jun 2018, 15:14

                    @Kinesis
                    Hi
                    It is easier to help if you break down task in steps and ask pr step what we
                    would suggest.
                    Like getting all files in a folder you could do

                    #include <QDir>
                    //assume the directory exists and contains some files 
                    QDir directory("c:/xx/yyy"); // point to real folder
                    // ask for mp4 and avi. adjust to your needs
                    QStringList vids= directory.entryList(QStringList() << "*.mp4" << "*.avi",QDir::Files);
                    foreach(const QString &filename, vids) {
                    // new a player 
                    // insert to form or show as window
                    // give it file
                    // tell it to play
                    }
                    
                    K Offline
                    K Offline
                    Kinesis
                    wrote on 22 Jun 2018, 04:24 last edited by
                    #15

                    @mrjj
                    Thanks alot.

                    1 Reply Last reply
                    0
                    • K Offline
                      K Offline
                      Kinesis
                      wrote on 16 Jul 2018, 07:02 last edited by
                      #16

                      I got the answer . MainWindow.cpp is like that

                       ui->listWidget->setFlow(QListView::LeftToRight);
                          ui->listWidget->setMinimumSize(1050,800);
                          ui->listWidget->setGridSize(QSize(340, 320));
                          ui->listWidget->setResizeMode(QListView::Adjust);
                          ui->listWidget->setViewMode(QListView::ListMode);
                          ui->listWidget->setWrapping(true);
                      
                          QDir directory = QFileDialog::getExistingDirectory(this, tr("Open Directory"),"/home",
                      
                                                                             QFileDialog::ShowDirsOnly| QFileDialog::DontResolveSymlinks);
                      
                          directory.setNameFilters({"*.mp4" , "*.avi" , "*.flv" , "*.mwv"});
                      
                          for(const QFileInfo & finfo: directory.entryInfoList()){
                              QMediaPlayer *mediaPlayer = new QMediaPlayer();
                              mediaPlayer->setMedia(QUrl::fromLocalFile(finfo.absoluteFilePath()));
                              videoItem = new QGraphicsVideoItem;
                              videoItem->setSize(QSize(300,240));
                              QGraphicsScene *scene = new QGraphicsScene(this);
                              QGraphicsView *graphicsView = new QGraphicsView(scene);
                              mediaPlayer->setVideoOutput(videoItem);
                      
                              QPushButton *m_playButton = new QPushButton();
                              m_playButton->setIcon(style()->standardIcon(QStyle::SP_MediaPlay));
                      
                              connect(m_playButton, &QAbstractButton::clicked, [mediaPlayer]() {
                                  switch (mediaPlayer->state()) {
                                  case QMediaPlayer::PlayingState:
                                      mediaPlayer->pause();
                                      break;
                                  default:
                                      mediaPlayer->play();
                                      break;
                                  }
                              });
                      
                      
                              connect(mediaPlayer, &QMediaPlayer::stateChanged, [m_playButton, this](QMediaPlayer::State state) {
                                  switch(state) {
                                  case QMediaPlayer::PlayingState:
                                      m_playButton->setIcon(style()->standardIcon(QStyle::SP_MediaPause));
                                      break;
                                  default:
                                      m_playButton->setIcon(style()->standardIcon(QStyle::SP_MediaPlay));
                                      break;
                                  }
                              });
                      
                      
                      
                              QSlider *m_positionSlider = new QSlider(Qt::Horizontal,this);
                              m_positionSlider->setRange(0,mediaPlayer->duration() / 1000);
                      
                      
                              connect(mediaPlayer, &QMediaPlayer::positionChanged ,[m_positionSlider, this](qint64 position){
                      
                                  m_positionSlider->setValue(position);
                              });
                      
                              connect(mediaPlayer, &QMediaPlayer::durationChanged ,[m_positionSlider, this](qint64 duration){
                      
                                  m_positionSlider->setRange(0,duration);
                              });
                      
                      
                              connect(m_positionSlider ,&QAbstractSlider::sliderMoved, [mediaPlayer ,this] (int position){
                      
                                  mediaPlayer->setPosition(position);
                              });
                      
                      
                      
                      
                              auto    item = new QListWidgetItem("", ui->listWidget);
                              auto    widget = new QWidget;
                              auto    label = new QLabel(finfo.fileName());
                              auto    vb = new QVBoxLayout;
                      
                              QBoxLayout *controlLayout = new QHBoxLayout;
                              controlLayout->setMargin(0);
                              controlLayout->addWidget(m_playButton);
                              controlLayout->addWidget(m_positionSlider);
                      
                              vb->addWidget(label);
                              vb->addWidget(graphicsView);
                              vb->addLayout(controlLayout);
                              widget->setLayout(vb);
                              widget->setMinimumSize(320, 320);
                              ui->listWidget->setItemWidget(item,widget);
                              player.append(mediaPlayer);
                              scene->addItem(videoItem);
                      
                      
                      
                          }
                      
                      1 Reply Last reply
                      1

                      • Login

                      • Login or register to search.
                      • First post
                        Last post
                      0
                      • Categories
                      • Recent
                      • Tags
                      • Popular
                      • Users
                      • Groups
                      • Search
                      • Get Qt Extensions
                      • Unsolved