2017-10-21 17 views
0

ビデオファイルを検査するサーバー端末アプリケーションを実装しようとしています。オーディオ/ビデオコーデック、解像度、ビットレート、長さなどの情報を入手する必要があります。QMediaPlayerがビデオについて間違った情報を提供します

ほとんどの情報はQMediaResourceにあります。複数の例を読んだ後、私はこれに来た:

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(); 
} 

しかし、悲しいことに、これは出力されない権利メタデータ:

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

私は、ビデオのパスが存在し、読み取り可能であると確信しています。なぜ0の値を取得し、正しい値を取得しないのですか?これはQtのビデオファイルに関するメタ情報を取得する正しい/最良の方法ですか?

答えて

0

一般的にQtMultimediaがかなり壊れているという事実を考えると、QMediaObject::metaDataChangedQMediaPlayerが継承)を聞くべきです。

しかし、私はこれがWindowsとおそらくmacOSでも壊れていることを警告します。私はいくつかの報告したQTBUGと彼らは気にしない。

関連する問題