Как вытащить мета- данные из mp3



  • Как известно в Qt5 нет Phonon, как тогда достать теги из mp3? Есть ли QMultimedia метод для работы с тегами?





  • Почему metaData() не возвращает результат? Код вроде правильный
    @#ifndef TRACKLISTFORMAT_H
    #define TRACKLISTFORMAT_H

    #include <QWidget>
    #include <QMediaPlayer>

    namespace Ui {
    class TrackListFormat;
    }

    class TrackListFormat : public QWidget
    {
    Q_OBJECT

    public:
    explicit TrackListFormat(QString str, QSize sz, QWidget *parent = 0);
    ~TrackListFormat();

    private:
    Ui::TrackListFormat *ui;
    QString *fileAdress;
    QMediaPlayer *mediaPlayer;
    };

    #endif // TRACKLISTFORMAT_H@

    @#include "tracklistformat.h"
    #include "ui_tracklistformat.h"
    #include <QMediaService>
    #include <QUrl>
    #include <QLabel>
    #include <QVBoxLayout>
    #include <QWidget>
    #include <QSize>
    TrackListFormat::TrackListFormat(QString str, QSize sz, QWidget *parent) :
    QWidget(parent), ui(new Ui::TrackListFormat), fileAdress(&str)
    {
    ui->setupUi(this);
    setBaseSize(sz.width(), sz.height());
    mediaPlayer = new QMediaPlayer();
    mediaPlayer->setMedia(QUrl::fromLocalFile(*fileAdress));
    ui->labelAuthor->setText( QVariant( mediaPlayer->metaData("Author") ).toString() );
    ui->labelTitle->setText( QVariant( mediaPlayer->metaData("Title") ).toString() );
    if(ui->labelTitle->text() == "")
    ui->labelTitle->setText(*fileAdress);
    long long int lSec = QVariant( mediaPlayer->metaData("Duration") ).toInt();
    int iMin = lSec / 1000 % 60;
    int iSec = lSec / 1000 - iMin * 60;
    QString sSec = (iSec < 10) ? QString::number(0) + QString::number(iSec) : QString::number(iSec);
    ui->labelDuration->setText(QString::number(iMin) + ":" + sSec);
    }

    TrackListFormat::~TrackListFormat()
    {
    delete ui;
    }@

    @ TrackListFormat *listWidget[fileListAdress->size()];
    QListWidgetItem *lwi[fileListAdress->size()];
    for(int i = 0; i < fileListAdress->size();i++)
    {
    listWidget[i] = new TrackListFormat(fileListAdress->at(i),QSize(200, 40), this);
    lwi[i] = new QListWidgetItem(ui->listWidgetPlaylystView);
    lwi[i]->setSizeHint(QSize(200, 40));
    ui->listWidgetPlaylystView->setItemWidget(lwi[i], listWidget[i]);
    }@

    Задумано что на виджет устанавливается имя автора, название композиции и продолжительность трека если название композиции отсутствует то устанавливается ее адрес.



  • Что возвращает ?
    @
    mediaPlayer->setMedia(QUrl::fromLocalFile(*fileAdress));
    qDebug() << mediaPlayer->mediaStatus();
    @



  • QMediaPlayer::BufferedMedia
    [quote author="andreyc" date="1406155240"]Что возвращает ?
    @
    mediaPlayer->setMedia(QUrl::fromLocalFile(*fileAdress));
    qDebug() << mediaPlayer->mediaStatus();
    @
    [/quote]



  • Вроде разобрался но все равно не могу получить теги без воспроизведения, не воспроизводить же каждый трек?
    [quote author="andreyc" date="1406155240"]Что возвращает ?
    @
    mediaPlayer->setMedia(QUrl::fromLocalFile(*fileAdress));
    qDebug() << mediaPlayer->mediaStatus();
    @
    [/quote]



  • Можешь посмотреть в сторону http://taglib.github.io/



  • И как ее подключить?
    [quote author="Alexander Kuchumov" date="1407402855"]Можешь посмотреть в сторону http://taglib.github.io/[/quote]



  • http://qt-project.org/forums/viewthread/2765/
    Тебе надо собрать библиотеку.


Log in to reply
 

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