Qt QGraphicsView не воспроизводит видео

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

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

введите здесь описание изображения


person Chris    schedule 02.03.2020    source источник


Ответы (1)


QUrl("/path/of/video") не является допустимым URL-адресом, поскольку файл схемы, указывающий, что это локальный файл, не выводится, для этого есть 2 возможных решения:

player->setMedia(QUrl::fromLocalFile(newString));

or

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

person eyllanesc    schedule 02.03.2020
comment
Эй, спасибо за ответ, к сожалению, все еще пустое окно, независимо от того, какой вариант я там использую. - person Chris; 02.03.2020
comment
@Chris Вы получаете сообщение об ошибке на вкладке «Вывод приложения» в Qt Creator? - person eyllanesc; 02.03.2020
comment
Это работает в VS - person Chris; 02.03.2020
comment
@Chris Я не работаю с VS, может быть, есть вкладка, похожая на эту информацию, если нет, то откройте cmd и запустите оттуда .exe, и вы обязательно получите сообщение об ошибке. - person eyllanesc; 02.03.2020
comment
Я переключил подсистему на консоль, чтобы распечатать отладки, и есть код ошибки. DirectShowPlayerService::doRender: неразрешенный код ошибки 0x80040266 (ошибка IDispatch № 102) - person Chris; 02.03.2020
comment
Оба сообщения появляются только в строке player-›play(); - person Chris; 02.03.2020
comment
@Chris Попробуйте то, что я указал в моем обновлении, установите K-lite - person eyllanesc; 02.03.2020
comment
Тем не менее, использование памяти увеличилось на 20 МБ во время работы. - person Chris; 02.03.2020
comment
@ Крис ммм, я тебя не понимаю, ты установил кодеки, которые я указал? Проблема не в Qt, а в Directshow, на котором не установлен кодек для воспроизведения mp4 - person eyllanesc; 02.03.2020
comment
Круто, вы разобрались с проблемой! Большое спасибо! Сейчас играет! - person Chris; 02.03.2020