2009-10-06 13 views
0

Je voudrais obtenir la longueur d'un fichier multimédia dans une application qt que je construis et j'ai donc décidé d'utiliser taglib. C'est le methos qui est destiné à lire la longueurUtiliser taglib dans une application Qt

void loadMetaData(QString file) { 
    QByteArray fileName = QFile::encodeName(file); 
    const char * encodedName = fileName.constData(); 
    TagLib::FileRef fileref = TagLib::FileRef(encodedName); 
    if (fileref.isNull()) 
    { 
     qDebug() << "Null"; 
    } 
    else 
    { 
     qDebug() << "Not Null"; 
    } 
} 

Le problème est fileref est toujours nul pour une raison quelconque et je ne peux pas comprendre pourquoi ......

+0

Mon mauvais! Je testais avec les fichiers ogg theora, taglib ne semble pas encore les supporter. Tablib devrait avoir une meilleure méthode de repli, au lieu de simplement retourner un pointeur nul, non? – anon

+0

Revenez à quoi? Il ne peut rien faire avec les fichiers Theora, donc ne pas les ouvrir semble la meilleure option pour moi. –

Répondre

0

Utilisez le getter audioProperties() sur votre objet FileRef. Le returned pointer contient la longueur du fichier en secondes. TagLib # est capable de fonctionner avec certains fichiers Theora.

0

Je l'ai utilisé dans un projet mais j'ai trouvé qu'il ne fonctionnerait pas avec beaucoup de vidéos Theora (je ne pense pas que tout converti en utilisant libtheora 1.1 ait fonctionné).

TagLib.File file = TagLib.File.Create(@"c:\video.ogv"); 
string height = file.Properties.VideoHeight; 

Ceci est pour le .NET, mais pas C++.