簡體   English   中英

QMediaPlayer給我有關視頻的錯誤信息

[英]QMediaPlayer gives me wrong informations about video

我正在嘗試實現一個檢查視頻文件的服務器終端應用程序。 我需要獲取音頻/視頻編解碼器,分辨率,比特率,長度等信息。

我在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中獲取有關視頻文件的元信息的正確/最佳方法嗎?

考慮到QtMultimedia一般都已損壞,您應該收聽QMediaObject :: metaDataChanged (由QMediaPlayer繼承)。

但是,我警告您,這在Windows上以及很可能在macOS上也已損壞。 我已經報告了幾個QTBUG ,它們只是不在乎。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM