Cannot get metadata from audio file while loading it



  • Hi everyone,

    I have a problem getting metadata from file while loading it from disk. I can play it etc. but can't get metadata while loading it.

    Here is my loading function:
    Btw. the "ui->playlistView" element is QTableWidget.
    @void MainWindow::on_actionOpen_triggered()
    {
    QFileDialog *fileDialog = new QFileDialog(this);
    QStringList selectedFiles;

    selectedFiles.clear();
    
    selectedFiles = fileDialog->getOpenFileNames(this, "Select songs", QDir::homePath(), "mp3 files (*.mp3)");
    if(!selectedFiles.empty()){
        playlist->clear();
        ui->playlistView->clear();
    
        ui->playlistView->setColumnCount(3);
        ui->playlistView->setHorizontalHeaderItem(0, new QTableWidgetItem("Title"));
        ui->playlistView->setHorizontalHeaderItem(1, new QTableWidgetItem("Artist"));
        ui->playlistView->setHorizontalHeaderItem(2, new QTableWidgetItem("Album"));
        ui->playlistView->setRowCount(selectedFiles.count());
    
        for(int i = 0; i < selectedFiles.count(); i++){
            playlist->addMedia(QUrl::fromLocalFile&#40;selectedFiles.at(i&#41;));
            player->setMedia(QUrl::fromLocalFile&#40;selectedFiles.at(i&#41;));
            ui->playlistView->setItem(i, 0, new QTableWidgetItem(player->metaData("").toString()));
            ui->playlistView->setItem(i, 1, new QTableWidgetItem(player->metaData("").toString()));
            ui->playlistView->setItem(i, 2, new QTableWidgetItem(player->metaData("AlbumTitle").toString()));
        }
    }
    
    player->setPlaylist(playlist);
    playlist->setCurrentIndex(0);
    

    }@

    Thanks for help. :)


  • Lifetime Qt Champion

    Hi and welcome to devnet,

    You should add which version of Qt you are using as well as the OS you are running on



  • Hi,

    I'm running Qt 5.2.1 (GCC 4.8.2, 64 bit) on Ubuntu 14.04. I can get the metadata for one song, but I want to list throught all loaded files and load their metadata while loading them from disk. Is there a way how to achieve it? I'm using QMediaPlayer and QMediaPlaylist for handling media and QTableWidget to display songs info in table. But I cannot get their metadata while loading them...

    Any help will be appreciated. :)



  • cmoud94, I am in the same predicament as you. It seems as though in Qt that it can only retrieve the metadata of a media file while it is playing. So in my code I have a play button that plays the current song in a playlist and gets the metadata as well. The first time I click the button it returns empty strings, but the second time I click the play button it gets the correct metadata. So I think I might have to use taglib for my metadata needs. @void MainWindow::playButtonclicked(){
    player->play();

    if (player->isMetaDataAvailable())
    {
      qDebug() << "there is metadata";
    }
    else
    {
      qDebug() << "No metadata.";
    }
    
    QVariant songTitle = player->metaData(QMediaMetaData::Title);
    QString songTitleString = songTitle.toString();
    ui->songLabel->setText(songTitleString);
    

    }@
    I have also found that with my if statement, the first time I click the button it will print out 'No metadata." but the second time it will print 'there is metadata'. So now I am stuck.



  • Kinexd, I can get the metadata while I'm playing song or if I list through the playlist while it's loaded (with "Next Song" button). But if I try to list the playlist after it's loaded it does not work...


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.