首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QT:在QVideoWidget中获取视频尺寸

QT:在QVideoWidget中获取视频尺寸
EN

Stack Overflow用户
提问于 2016-01-20 08:49:20
回答 2查看 2.7K关注 0票数 4

这应该是很简单的事情,但我想不出来。如何获得加载到QVideoWidget/QMediaPlayer中的文件的视频尺寸。因此,我的代码如下:

代码语言:javascript
复制
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. 

}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-01-20 10:48:40

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

  1. 通过QMediaPlayer::metaData,使用键Resolution,您应该以QSize的形式获得分辨率: 如果(m_MediaPLayer->isMetaDataAvailable()) { qDebug() <<“解析:<元数据(”Resolution“);}
  2. 使用QMediaResource.resolution(),它还返回一个QSize: qDebug() <<“决议:”<< <<“

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

关于这个问题,有一些老的Qt线程:获取视频文件的分辨率QMediaPlayer分辨率返回(-1x-1)。虽然给出了一些解决方案,但没有一个对我有用,实际上存在这样一个错误报告

28850- QMediaResource不返回任何媒体信息

还开着呢。

一些相关问题:

最后一个问题的答案建议使用MediaInfo,其中包含可以提取视频元数据的库。

我希望OpenCV能够做到这一点,但是这个不是这样的

票数 6
EN

Stack Overflow用户

发布于 2017-07-25 15:26:07

我用QGraphicsView + QGraphicsVideoItem代替QGraphicsView+QGraphicsVideoItem解决了这个问题。QGraphicsVideoItem具有nativeSize属性。但棘手的是,nativeSize只有在你开始播放视频一段时间后才会生效。诀窍是连接到特殊的QGraphicsVideoItem::nativeSizeChanged(const QSizeF &size)信号,发出的情况下,真正的nativeSize获取。

代码示例:

代码语言:javascript
复制
 m_player.setVideoOutput(&m_graphicsItem);    // m_player is QMediaPlayer
 ui->videoView->setScene(new QGraphicsScene); // videoView is QGraphicsView
 ui->videoView->scene()->addItem(&m_graphicsItem);

 connect(&m_graphicsItem, &QGraphicsVideoItem::nativeSizeChanged, this, &MainWindow::calcVideoFactor);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34895328

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档