gpt4 book ai didi

QT:在 QVideoWidget 中获取视频尺寸

转载 作者:行者123 更新时间:2023-12-05 00:57:10 28 4
gpt4 key购买 nike

这应该很简单,但我无法弄清楚。如何获取加载到 QVideoWidget/QMediaPlayer 中的文件的视频尺寸。所以,我的代码如下:

QMediaPlayer m_MediaPLayer(0, QMediaPlayer::VideoSurface);
m_VideoWidget = new QVideoWidget;
m_MediaPLayer.setVideoOutput(m_VideoWidget);
m_MediaPLayer.setMedia(QUrl::fromLocalFile("file.avi"));

m_MediaPLayer.play();
// I am here checking for media status changed event
connect(&m_MediaPLayer, SIGNAL(mediaStatusChanged(QMediaPlayer::MediaStatus)),
this, SLOT(mediaStatusChanged(QMediaPlayer::MediaStatus)));

void MyClass::mediaStatusChanged(QMediaPlayer::MediaStatus status)
{
// Here I get notification for media status change but no idea how to
// get the video size. I could not figure out a way.

}

最佳答案

理论上有两种方法可以获取这些信息:

  • 通过 QMediaPlayer::metaData 使用 key Resolution 你应该得到的分辨率为 QSize :
    if (m_MediaPLayer->isMetaDataAvailable()) {
    qDebug() <<"resolution:" <<m_MediaPLayer->metaData("Resolution");
    }
  • 使用 QMediaResource.resolution() 它还返回一个 QSize :
    qDebug() << "resolution:" << m_MediaPLayer->media().canonicalResource().resolution();

  • 但是,在这两种情况下,它都会返回 -1,-1对于我尝试过的两个视频(一个 avi 和一个 mp4)。

    有一些关于这个问题的旧 Qt 线程: get resolution of a video file , 和 QMediaPlayer resolution returns (-1x-1) .虽然给出了一些解决方案,但没有一个对我有用,实际上还有一个 bug report这个的:

    QTBUG-28850 - QMediaResource returns no media info

    这仍然是开放的。

    一些相关问题:
  • Get native video resolution of a video file
  • C++ : What's the easiest library to open video file
  • How to read video metadata (C/C++)?

  • answer in the last question建议使用 MediaInfo ,其中包含可以提取视频元数据的库。

    我期待 OpenCV能够做到这一点,但是这个 is not the case .

    关于QT:在 QVideoWidget 中获取视频尺寸,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34895328/

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