gpt4 book ai didi

c++ - QMediaPlayer 给我有关视频的错误信息

转载 作者:行者123 更新时间:2023-11-28 04:57:26 25 4
gpt4 key购买 nike

我正在尝试实现一个检查视频文件的服务器终端应用程序。我需要获取音频/视频编解码器、分辨率、比特率、长度等信息。

我在 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他们根本不在乎。

关于c++ - QMediaPlayer 给我有关视频的错误信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46859587/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com