2017-10-21 29 views
0

J'essaie de mettre en œuvre une application de terminal serveur qui inspecte les fichiers vidéo. J'ai besoin d'informations comme le codec audio/vidéo, la résolution, le débit, la longueur, etc.QMediaPlayer me donne des informations erronées sur la vidéo

J'ai trouvé la plupart des informations nécessaires dans QMediaResource. Après avoir lu plusieurs exemples, je suis venu à ceci:

int main(int argc, char *argv[]) 
{ 
    QCoreApplication a(argc, argv); 

    QMediaPlayer media; 
    media.setMedia(QUrl::fromLocalFile("/home/danbru1211/Videos/S01E01.mp4")); 

    QObject::connect(&media, &QMediaPlayer::mediaStatusChanged, 
        [&media](QMediaPlayer::MediaStatus status){ 
     qDebug() << status; 

     auto resource = media.media().canonicalResource(); 
     qDebug() << "language" << resource.language(); 
     qDebug() << "audioCodec" << resource.audioCodec(); 
     qDebug() << "videoCodec" << resource.videoCodec(); 
     qDebug() << "dataSize" << resource.dataSize(); 
     qDebug() << "audioBitRate" << resource.audioBitRate(); 
     qDebug() << "sampleRate" << resource.sampleRate(); 
     qDebug() << "channelCount" << resource.channelCount(); 
     qDebug() << "videoBitRate" << resource.videoBitRate(); 
     qDebug() << "resolution" << resource.resolution(); 
    }); 

    return a.exec(); 
} 

Mais malheureusement ce ne délivre pas les bonnes données meta:

QMediaPlayer::LoadedMedia 
language "" 
audioCodec "" 
videoCodec "" 
dataSize 0 
audioBitRate 0 
sampleRate 0 
channelCount 0 
videoBitRate 0 
resolution QSize(-1, -1) 

Je suis sûr que le chemin de la vidéo existe et est lisible. Pourquoi est-ce que j'obtiens toutes les 0 valeurs et pas les bonnes. Est-ce la bonne/meilleure façon d'obtenir des méta-informations sur un fichier vidéo dans Qt?

Répondre

0

Compte tenu du fait que QtMultimedia en général est à peu près cassé, vous devriez écouter QMediaObject::metaDataChanged (héritée par QMediaPlayer).

Cependant, je vous préviens que c'est cassé sur Windows et probablement aussi sur macOS. J'ai rapporté plusieurs QTBUG et ils s'en foutent.