Qt MediaPlayer在linux中没有播放。 Windows只听到音频

时间:2013-09-03 13:26:58

标签: c++ qt5

在尝试创建一个非常基本的MediaPlayer时,确实有一个小问题,只是希望视频在应用程序启动的第二个时间开始。

#include "mainwindow.h"
#include <QApplication>
#include <QMediaPlayer>
#include <QFileInfo>
#include <QDebug>


int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
QMediaPlayer media;
const QString file = "big_buck_bunny_480p_h264.mov";
QUrl url(QFileInfo(file).absoluteFilePath());
qDebug() << url << endl;
media.setMedia(url);
media.play();
w.show();

return a.exec();
}

目前Windows播放音频,但无法播放带有错误的视频

  

没有VideoWindowControl或videoRendererControl,无法添加输出   视频数据节点

或在linux中我从文件的路径获取:///home/ion/Downloads/big_buck_bunny_1080p_h264.mov 我得到了

的GStreamer;无法暂停 - “/ home / ion / Qt_practice / file:/ home / ion / Downloads / big_buck ....

错误:“无效的URI” - “/ home / ion / Qt_practice / file:/ home / ion / Downloads / big_buck ....

从我认为听起来像Windows有QMediaPlayer的问题(是因为我没有首先将它传递给QAbstractVideoSurface?)。但无论如何,如果我想指向Linux上的下载位置,我的问题是什么是正确的路径?另外为什么Windows只播放音频是编解码器还是?

甚至尝试将文件复制到程序指向的位置,但即使它在目录中,我预计它仍会报告无效的URI。有什么建议吗?

1 个答案:

答案 0 :(得分:1)

尝试:

    QMediaPlayer *player = new QMediaPlayer;
    player->setMedia(QUrl::fromLocalFile("big_buck_bunny_480p_h264.mov"));
    QVideoWidget *videoWidget = new QVideoWidget;
    w.setCentralWidget(videoWidget); // if w is a QMainWindow
    player->setVideoOutput(videoWidget);
    player->play();

或者,如果您想知道如何使用QGraphicsVideoItem:

    QGraphicsView *graphicsView = new QGraphicsView(this);
    w.setCentralWidget(graphicsView); // w = QMainWindow
    QGraphicsScene *scene       = new QGraphicsScene(this);
    QMediaPlayer *player        = new QMediaPlayer(this);
    QGraphicsVideoItem *item    = new QGraphicsVideoItem;

    graphicsView->setScene(scene);
    player->setVideoOutput(item);

    graphicsView->scene()->addItem(item);
    player->setMedia(QUrl::fromLocalFile("big_buck_bunny_480p_h264.mov"));
    player->play();