поэтому я хочу, чтобы он воспроизводил видео в течение определенного времени, поэтому сразу после play();
я использую функцию delay();
: , но он замораживает поток, поэтому я получаю только аудио, без изображения. ??? и я не могу использовать таймер.Задержка без замораживания мультимедиа
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
QVideoWidget *videoWidget = new QVideoWidget;
QBoxLayout *layout = new QVBoxLayout;
layout->addWidget(videoWidget);
ui->centralWidget->setLayout(layout);
p.setVideoOutput(videoWidget);
filename=QFileDialog::getOpenFileName(this,"select movie","/");
this->setWindowTitle(filename);
p.setMedia(QUrl::fromLocalFile(filename));
p.setPosition(300000);
p.play();
delay(4000);
p.setPosition(p.position()+1800000);
delay(4000);
p.setPosition(p.position()+1800000);
delay(4000);
}
void MainWindow:: delay(int millisecondsToWait)
{
QEventLoop loop;
QTimer::singleShot(millisecondsToWait, &loop, SLOT(quit()));
loop.exec();
}
без задержек будет работать видео нормально, но я хочу, чтобы играть только 4 секунд каждый 30мин, я получаю только звук
Почему вы не хотите использовать 'QTimer' + слоты для реализации такой логики ? –
не может использовать таймер с слотами, он не работает в цикле, я использую этот код в цикле –