Russian Qt Forum

Qt => Мультимедиа => Тема начата: HolyMacaroni от Май 31, 2010, 01:51



Название: как в qt 4 прочитать метаданные аудио файлов
Отправлено: HolyMacaroni от Май 31, 2010, 01:51
здравствуйте, как с помощью qt 4 прочитать метаданные  аудио файлов, название, альбом, жанр, и все такое.
http://ru.wikipedia.org/wiki/ID3v2#ID3v2
нынешний формат ID3v2
www.id3.org
английский к сожалению не знаю.



Название: Re: как в qt 4 прочитать метаданные аудио файлов
Отправлено: HolyMacaroni от Июнь 03, 2010, 01:44
не знаю в чем ошибка, программа не возвращает теги ogg, но проигрывает трек, появляется просто пустое окно.
теги в файле присутствуют.

Код:
#include <QApplication>
#include <phonon>
#include <QtGui>

// ----------------------------------------------------------------------
int main(int argc, char** argv)
{
    QApplication        app(argc, argv);
    app.setApplicationName("SimplePlayer");
    Phonon::MediaObject media;
    Phonon::AudioOutput ao(Phonon::MusicCategory);

    Phonon::createPath(&media, &ao);

    QObject::connect(&media, SIGNAL(finished()), &app, SLOT(quit()));
    media.setCurrentSource(Phonon::MediaSource("music/Morcheeba.ogg"));

    QStringList MetaData = media.metaData("ARTIST");
               MetaData = media.metaData("ALBUM");
               MetaData = media.metaData("TITLE");
               MetaData = media.metaData("DATE");


    QLabel lbl(MetaData.join(" "));
    lbl.show();

    media.play();


    return app.exec();
}



Название: Re: как в qt 4 прочитать метаданные аудио файлов
Отправлено: HolyMacaroni от Июнь 03, 2010, 16:08
неужели ни кто не знает ???


Название: Re: как в qt 4 прочитать метаданные аудио файлов
Отправлено: ufna от Июнь 03, 2010, 18:00
а может быть даты нет в этом файле? у тебя только она на лейбл ловится, остальнео все побоку идет, ты же лист не аппендишь.


Название: Re: как в qt 4 прочитать метаданные аудио файлов
Отправлено: Авварон от Июнь 03, 2010, 18:40
Медиа инфо в винде считывается только после прихода сигнала (сначала медиа сорс буферизуется, потом с ним можно работать). Смотрите примеры.


Название: Re: как в qt 4 прочитать метаданные аудио файлов
Отправлено: HolyMacaroni от Июнь 03, 2010, 20:59
а может быть даты нет в этом файле? у тебя только она на лейбл ловится, остальнео все побоку идет, ты же лист не аппендишь.
инфа в файле есть, изитегом туда ее сам заносил:).

Медиа инфо в винде считывается только после прихода сигнала (сначала медиа сорс буферизуется, потом с ним можно работать). Смотрите примеры.
где смотреть примеры ??? у меня либо гугл сломался или одно из двух, уже второй день ищу или третий.


Название: Re: как в qt 4 прочитать метаданные аудио файлов
Отправлено: HolyMacaroni от Июнь 04, 2010, 02:05
все, сделал.
Код:
#include <QApplication>
#include <phonon>
#include <QtGui>
#include <QtCore/QtDebug>
// ----------------------------------------------------------------------
int main(int argc, char** argv)
{
    QApplication        app(argc, argv);
    app.setApplicationName("SimplePlayer");

    Phonon::MediaObject media;
    Phonon::AudioOutput ao(Phonon::MusicCategory);

    Phonon::createPath(&media, &ao);

    QObject::connect(&media, SIGNAL(finished()), &app, SLOT(quit()));
    QObject::connect(&media, SIGNAL(metaDataChanged()), &app, SLOT(quit()));
    media.setCurrentSource(Phonon::MediaSource(app.arguments()[1]));
    app.exec();
    QStringList MetaData = media.metaData(Phonon::ArtistMetaData);
        MetaData << media.metaData(Phonon::AlbumMetaData);
        MetaData << media.metaData(Phonon::TitleMetaData);
        MetaData << media.metaData(Phonon::DateMetaData);

    qDebug() << MetaData;

    media.play();
return app.exec();
}


Название: Re: как в qt 4 прочитать метаданные аудио файлов
Отправлено: HolyMacaroni от Июнь 21, 2010, 10:02
Снова здравствуйте, теперь новый вопрос :), как синхронизировать асинхронный метод 
 media.setCurrentSource(Phonon::MediaSource(app.arguments()[1]));
с остальным кодом, так как он сразу же возвращает управление после вызова, а данные можно читать только после сигнала metaDataChanged(). Мне необходимо в цикле считывать метаданные с разных источников.


Название: Re: как в qt 4 прочитать метаданные аудио файлов
Отправлено: crossly от Июнь 21, 2010, 10:27
можно с помощью QEventLoop смотри доки....


Название: Re: как в qt 4 прочитать метаданные аудио файлов
Отправлено: HolyMacaroni от Июнь 21, 2010, 13:19
спасибо получилось :)
использовал QEventLoop::exec()/quit()


Название: Re: как в qt 4 прочитать метаданные аудио файлов
Отправлено: Вячеслав Андреевеч от Ноябрь 19, 2013, 18:24
Привет, ребят!

Вот такая вот проблемка есть...

почему альбом и жанр не считываются? они почему-то пусты, на выходе получается строка
Metal Heart/5:24/ACCEPT/null/null/

Посмотрите скрин во вложении к посту, ведь этот альбом и жанр должны быть? Почему же ничего не считывается?
Если это не тот альбом и жанр, как мне вытащить именно эти строки?

Код:
    if (song.metaData("TITLE").isEmpty()) *str+="null/"; else *str+=song.metaData("TITLE").at(0)+"/";  //название
    *str+= QString::number(min)+":"+ QString::number(sec)+"/";  //длительность дорожки
    if (song.metaData("ARTIST").isEmpty()) *str+="null/"; else *str+=song.metaData("ARTIST").at(0)+"/"; // исполнитель
    if (song.metaData("ALBUM").isEmpty()) *str+="null/"; else *str+=song.metaData("ALBUM").at(0)+"/";   //альбом
    if (song.metaData("GENRE").isEmpty()) *str+="null/"; else *str+=song.metaData("GENRE").at(0)+"/";   //жанр