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のビデオファイルに関するメタ情報を取得する正しい/最良の方法ですか?