Qt QGraphicsView не воспроизводит видео - PullRequest
2 голосов
/ 02 марта 2020

У меня очень простое приложение 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();
}

Все необходимые объекты объявляются в заголовке как точки, если это необходимо.

enter image description here

1 Ответ

1 голос
/ 02 марта 2020

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 , решение состоит в том, чтобы установить кодеки для воспроизведения mp4 с http://www.codecguide.com/download_kl.htm

...