IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Qt Discussion :

Accéder aux métadonnées avec Qt Multimedia


Sujet :

Qt

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2013
    Messages : 3
    Points : 1
    Points
    1
    Par défaut Accéder aux métadonnées avec Qt Multimedia
    Salut à tous !

    Je viens vous demander votre aide car j'ai actuellement un problème qui me bloque dans le développement d'un lecteur multimédia.
    En effet, après pas mal de recherches, je n'ai toujours pas réussi à accéder aux métadonnées (artiste, album, titre...) de fichiers musicaux.

    J'ai trouvé ce lien : http://developer.nokia.com/Community...om_media_files
    Il me semble intéressant, mais il m'est impossible de tester ce code car mon QtCreator ne trouve pas qtmedianamespace.h lorsque je tente de l'inclure dans mon .h. J'ai donc cherché manuellement dans mon dossier Qt, dans le dossier multimedia, dans les bins de Qt, mais je n'ai trouvé ce header nul part. Je me dis donc que j'ai peut-être loupé une étape pré requise pour l'utilisation de Qt Mobility Multimedia.

    J'utilise Qt 5.1.1 et QtCreator 2.8.1. D'après ce que j'ai compris, QtMobility est nativement inclue dans cette version, je n'ai donc rien installé de plus pour essayer de l'utiliser.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    // TEST METADATA
    QString temp = QFileDialog::getOpenFileName(this, "Ouvrir un fichier", QString(), "Musique (*.mp3 *.wav *.aac *.wav)");
    qDebug() << temp;
    QMediaPlayer *player = new QMediaPlayer();
    player->setMedia(QUrl::fromLocalFile(temp));
    qDebug() << player->availableMetaData();
    qDebug() << player->metaData(QMediaMetaData::Title).toString();
    Voilà ce que j'ai testé, sans succès. Et ce que j'ai en retour de qDebug :

    "M:/Danakil/01. Les champs de rose.mp3"
    ()
    ""
    Il doit y avoir quelque chose qui me dépasse. J'ai pourtant bien cherché dans la doc, notamment du côté du namespace QMediaMetaData, mais je n'ai pas trouvé d'exemple sur le net :/
    A noté que j'ai fais le choix de ne pas utiliser Phonon car d'après ce que j'ai compris, il ne sera plus soutenu et c'est QtMobility Multimedia qui le remplace.

    Merci d'avance pour votre aide !
    Bonne journée à toutes et à tous

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 47
    Points : 71
    Points
    71
    Par défaut
    QtMobility n'est pas inclus dans Qt, en tout cas pas il n'est pas fourni précompilé dans les versions Desktop. Par contre le module QtMultimedia a été intégré à Qt. Donc il n'y a rien à faire, à part ajouter "multimedia" à la variable CONFIGQT du .pro.

    Et pour avoir accès aux metadatas, il semble qu'il faille attendre le signal metaDataChanged(). Par exemple, ce code semble fonctionner:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     QString temp = QFileDialog::getOpenFileName(this, "Ouvrir un fichier", QString(), "Musique (*.mp3 *.wav *.aac *.wav)");
    QMediaPlayer *player = new QMediaPlayer();
    player->setMedia(QUrl::fromLocalFile(temp));
     
    QEventLoop loop;
    connect(player, SIGNAL(metaDataChanged()), &loop, SLOT(quit()));
    loop.exec();
     
    qDebug() << player->availableMetaData();
    qDebug() << player->metaData(QMediaMetaData::Title).toString();
    qui renvoie:
    ("AlbumArtist", "AlbumTitle", "Composer", "Genre", "Title", "TrackNumber", "Year", "container-format", "date", "track-count") 
    "Main Title" 
    
    PS: La boucle d'événements imbriquée (QEventLoop) c'est juste pour l'exemple, il faut éviter de la garder dans le code final.

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2013
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Merci pour cette réponse ! Cependant, je viens de tester rigoureusement le même code (copier-coller dans un nouveau projet tout propre) et ça me renvoie toujours () et "".

    Mon .pro (au cas où) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    QT       += core gui multimedia
     
    greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
     
    TARGET = TEST_METADATA
    TEMPLATE = app
     
     
    SOURCES += main.cpp\
            widget.cpp
     
    HEADERS  += widget.h
     
    FORMS    += widget.ui
     
    CONFIG += mobility
    MOBILITY += multimedia
    Cependant, je me suis dis que le problème venait donc peut-être de mon fichier. Sauf que j'ai bien vérifié dans ses propriétés et tout semble correcte :
    http://img10.imageshack.us/img10/3600/lnab.png

    Si quelqu'un a une idée...

    Merci encore !

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 47
    Points : 71
    Points
    71
    Par défaut
    Je n'avais testé que sous linux, et effectivement, sous windows XP ou avec Qt pour mingw, les métadonnées ne semblent pas gérées du tout. Et cela semble venir du backend DirectShow de QtMultimedia. D'ailleurs pour ce backend, availableMetaData() est codé en dur pour renvoyer une liste vide, metaData() pourrait renvoyer quelque chose en fonction des bibliothèques présentes lors de la compilation du module (dont "wmsdk.h" qui apparemment est absent de mingw, mais comme ça n'a l'air que d'être un fichier généré à partir d'une définition IDL, ça peut peut-être être corrigé).

    Par contre avec le backend WMF, qui n'est présent qu'avec Qt pour MSVC et ne fonctionne que sous Windows Vista et +, ça affiche bien la liste des champs présents et le titre des mp3.

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2013
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Okay ! Je tourne sous Windows 7 (64 bits), donc j'ai pris le parti d'installer le compilateur MSVC. J'ai donc essayé de l'installer dans mon QtCreator, et cela semble être une véritable mission.

    Pour commencer, j'ai tenté d'installer Qt 5.1.1 for Windows 64-bit (VS 2012, 525 MB) depuis le site Qt. Sauf que quand je l'installe, il m'installe aussi automatiquement QtCreator (que j'ai déjà, configuré pour compiler avec MinGW, avec deux versions possibles : 4.8 et 5.1.1). Bref, j'ai quand même tenté de l'installer dans un autre dossier. Sauf que là, il ne compile que des projets Qt 4.8, donc pas de Qt Multimedia...

    Tout d'abord, est-il possible d'utiliser ce compilateur dans QtCreator ? (j'ai lu tellement de trucs sur le net que j'ai un peu de mal à m'y retrouver au final)
    Si oui, comment ?

    Et pour la première solution évoquée (wmsdk.h), je comprend le problème, mais je n'ai aucune idée de comment le résoudre en pratique.

    PS : désolé pour le temps à répondre, je n'ai pas laissé tomber le projet mais j'ai pas mal de travail en ce moment :/

  6. #6
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Ingénieur de recherche
    Inscrit en
    Août 2008
    Messages
    26 619
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur de recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2008
    Messages : 26 619
    Points : 188 601
    Points
    188 601
    Par défaut
    Citation Envoyé par NevroZe Voir le message
    Tout d'abord, est-il possible d'utiliser ce compilateur dans QtCreator ? (j'ai lu tellement de trucs sur le net que j'ai un peu de mal à m'y retrouver au final)
    Quel compilateur ? Visual C++ 2012 ? J'ai très personnellement des embrouilles avec jom lors de l'édition des liens (passer par la ligne de commande résout le problème). Pas eu de problème avec la version 2010.

    Pour installer une nouvelle version de Qt, tu peux simplement passer par l'outil de maintenance (C:\Qt\Qt5.1.1\MaintenanceTool.exe, probablement), pour installer de nouveaux paquets.
    Vous souhaitez participer aux rubriques Qt (tutoriels, FAQ, traductions) ou HPC ? Contactez-moi par MP.

    Créer des applications graphiques en Python avec PyQt5
    Créer des applications avec Qt 5.

    Pas de question d'ordre technique par MP !

Discussions similaires

  1. [ATL] Comment accéder aux primitiveTypes avec ATL
    Par man56 dans le forum Eclipse Modeling
    Réponses: 0
    Dernier message: 10/09/2013, 20h11
  2. Accéder aux métadonnées d'un fichier
    Par Laur3nT dans le forum Windows Forms
    Réponses: 8
    Dernier message: 29/05/2008, 09h59
  3. Accéder aux partitions de l'hôte avec VmWare5
    Par meftah__ dans le forum VMware
    Réponses: 3
    Dernier message: 18/09/2007, 14h35
  4. Réponses: 2
    Dernier message: 28/02/2007, 10h39
  5. Réponses: 5
    Dernier message: 23/02/2007, 19h55

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo