gpt4 book ai didi

qt - QVideoWidget : Video is cut off

转载 作者:行者123 更新时间:2023-12-02 00:52:49 30 4
gpt4 key购买 nike

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

#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。视频中比小部件大的部分被截掉了。

提前致谢!

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

#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();
}

最佳答案

对于 2016 年的任何人来说,QVideoWidget 仍然是失败的。但是,使用包含场景图的 QGraphicsView 小部件,并将单个 QGraphicsVideoItem 添加到场景图中。似乎工作...

嗯,除了它没有完全居中。左边有一个 1px 的边框。并且大多数时候它会挂起进入全屏。我收到类似“在没有 AVPlayerLayer 的情况下调用 updateVideoFrame(这不应该发生)”之类的错误。进步!

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

您知道什么有效,而且效果很好吗? GStreamer。谢谢你,gstreamer。甚至将它集成到 python/qt 中也非常有效。

关于qt - QVideoWidget : Video is cut off,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38374158/

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