Qt QGraphicsView 不播放任何视频
Qt QGraphicsView not playing any video
我有一个非常简单的 QT 5.11.0 应用程序,它带有一个图形视图,我想在其中播放视频。
这是我的代码,它编译、加载并显示一个空白的图形视图。
#include "Demo_TeleLink.h"
Demo_TeleLink::Demo_TeleLink(QWidget *parent)
: QMainWindow(parent)
{
ui.setupUi(this);
scene = new QGraphicsScene;
player = new QMediaPlayer();
videoItem = new QGraphicsVideoItem;
newString = "C://Users//Chris//Desktop//Sample1.mp4";
ui.graphicsView->setScene(scene);
player->setVideoOutput(videoItem);
ui.graphicsView->scene()->addItem(videoItem);
player->setMedia(QUrl(newString));
ui.graphicsView->fitInView(videoItem);
player->play();
}
如果需要,所有必需的 objects 都在 header 中声明为积分。
QUrl("/path/of/video")
不是有效的 url,因为表明它是本地文件的方案文件未被推导,对此有 2 种可能的解决方案:
player->setMedia(QUrl::fromLocalFile(newString));
或
player->setMedia(QUrl::fromUserInput(newString));
可能路径编码不正确,尝试使用以下代码并手动选择视频
newString = QFileDialog::getOpenFileName(this,
tr("Open Video"),
QDir::homePath(),
tr("Video Files (*.mp4)"));
OP表示收到如下错误信息:
DirectShowPlayerService::doRender: Unresolved error code 0x80040266 (IDispatch error #102)
并根据 QTBUG-52082 reported, the solution is to install the codecs to play mp4 from http://www.codecguide.com/download_kl.htm
我有一个非常简单的 QT 5.11.0 应用程序,它带有一个图形视图,我想在其中播放视频。
这是我的代码,它编译、加载并显示一个空白的图形视图。
#include "Demo_TeleLink.h"
Demo_TeleLink::Demo_TeleLink(QWidget *parent)
: QMainWindow(parent)
{
ui.setupUi(this);
scene = new QGraphicsScene;
player = new QMediaPlayer();
videoItem = new QGraphicsVideoItem;
newString = "C://Users//Chris//Desktop//Sample1.mp4";
ui.graphicsView->setScene(scene);
player->setVideoOutput(videoItem);
ui.graphicsView->scene()->addItem(videoItem);
player->setMedia(QUrl(newString));
ui.graphicsView->fitInView(videoItem);
player->play();
}
如果需要,所有必需的 objects 都在 header 中声明为积分。
QUrl("/path/of/video")
不是有效的 url,因为表明它是本地文件的方案文件未被推导,对此有 2 种可能的解决方案:
player->setMedia(QUrl::fromLocalFile(newString));
或
player->setMedia(QUrl::fromUserInput(newString));
可能路径编码不正确,尝试使用以下代码并手动选择视频
newString = QFileDialog::getOpenFileName(this,
tr("Open Video"),
QDir::homePath(),
tr("Video Files (*.mp4)"));
OP表示收到如下错误信息:
DirectShowPlayerService::doRender: Unresolved error code 0x80040266 (IDispatch error #102)
并根据 QTBUG-52082 reported, the solution is to install the codecs to play mp4 from http://www.codecguide.com/download_kl.htm