У меня есть два похожих кода с небольшой разницей. В первом коде я воспроизвожу видео напрямую, вызывая функцию play()
в конструкторе, а во втором коде я вызываю функцию воспроизведения в событии нажатия кнопки.ASSERT: «m_surface» при воспроизведении видео
Второй код воспроизводит видео правильно, но первый код показывает мне это во время выполнения ошибки:
Что проблема в первом коде?
Это мой первый код:
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QFileDialog>
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
scene = new QGraphicsScene;
ui->graphicsView->setScene(scene);
mp1.setVideoOutput(&v1);
QString foo("C:/Users/user/Desktop/files/1.mov");
play(QUrl(foo));
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::play(QUrl url)
{
mp1.setMedia(url);
mp1.play();
mp1.setVolume(0);
scene->addItem(&v1);
}
Это мой второй код:
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QFileDialog>
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
scene = new QGraphicsScene;
ui->graphicsView->setScene(scene);
mp1.setVideoOutput(&v1);
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::play(QUrl url)
{
mp1.setMedia(url);
mp1.play();
mp1.setVolume(0);
scene->addItem(&v1);
}
void MainWindow::on_pushButton_clicked()
{
QString fileName = QFileDialog::getOpenFileName(this, tr("Open File"),
"");
play(fileName);
}
подробнее: - ОС: Windows 7 64 бит - составитель: mscv2013 64 бит - mp1: QMediaPlayer - v1: QGraphicsVideoItem
спасибо за ваш ответ. его работы хорошие. – user3801337