首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QVideoWidget:视频被切断

QVideoWidget:视频被切断
EN

Stack Overflow用户
提问于 2016-07-14 20:26:30
回答 6查看 2.9K关注 0票数 2

我想在Qt应用程序中播放视频。这是我到目前为止的代码:

代码语言:javascript
复制
#include <QApplication>
#include <QWidget>
#include <QMediaPlayer>
#include <QVideoWidget>
#include <QUrl>

#include <iostream>

using namespace std;

const int WIDTH = 1280;
const int HEIGHT = 720;

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);

    QWidget window;
    window.resize(WIDTH, HEIGHT);
    window.setWindowTitle("Video Test");
    window.show();

    QMediaPlayer *player = new QMediaPlayer();
    player->setMedia(QUrl::fromLocalFile("/Path/To/Video.mp4"));

    QVideoWidget *videoWidget = new QVideoWidget(&window);
    player->setVideoOutput(videoWidget);

    videoWidget->resize(WIDTH, HEIGHT);

    videoWidget->show();
    player->play();


    return app.exec();
}

问题:视频可以正常显示和播放,但无法调整大小以适应QVideoWidget。视频中比widget大的部分会被截断。

提前感谢!

编辑:我减少了代码,并注意到,当应用程序启动时,视频会被切断,但当我使用鼠标调整窗口大小时,它实际上适合大小:

代码语言:javascript
复制
#include <QApplication>
#include <QWidget>
#include <QMediaPlayer>
#include <QVideoWidget>
#include <QUrl>

#include <iostream>

using namespace std;

const int WIDTH = 1280;
const int HEIGHT = 720;

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);

    QMediaPlayer *player = new QMediaPlayer();
    QVideoWidget *videoWidget = new QVideoWidget();

    player->setVideoOutput(videoWidget);

    player->setMedia(QUrl::fromLocalFile("/Path/To/Video.mp4"));
    player->play();

    videoWidget->resize(WIDTH/3, HEIGHT/3);

    videoWidget->show();

    return app.exec();
}
EN

回答 6

Stack Overflow用户

发布于 2016-07-14 23:58:46

经过几个小时的寻找,我认为这是OSX上Qt中的一个错误,因为我看了这个YouTube视频https://www.youtube.com/watch?v=tGKmQy-VBX0并尝试了代码。

在视频中缩放工作正常,但在我的机器上不行。

票数 1
EN

Stack Overflow用户

发布于 2016-08-08 10:51:02

对于2016年的任何人来说,QVideoWidget仍然是失败的。但是,使用包含场景图的QGraphicsView小部件,并将单个QGraphicsVideoItem添加到场景图中。看起来很有效。

好吧,除了它不是精确的居中。左边有一个1px的边框。而且它大部分时间都挂在全屏模式下。我得到了类似于"updateVideoFrame在没有AVPlayerLayer的情况下调用(这不应该发生)“的错误。进步!

。。哦,它也占用了大约10倍的cpu。

你知道什么是有效的,而且效果很好吗?GStreamer。谢谢,gstreamer。即使将其集成到python/qt中也能令人难以置信地工作。

票数 1
EN

Stack Overflow用户

发布于 2018-04-19 11:24:26

我在PyQt5中遇到了类似的问题。在播放视频之前,我将QVideoWidget的几何形状设置为当前的几何形状,从而解决了这个问题。我猜resizeEvent信号中的某些东西必须处理媒体的缩放,并且在初始化时不会触发。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38374158

复制
相关文章

相似问题

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