0

我尝试从缓冲区播放视频并在播放时附加缓冲区,以便两个或多个视频在没有任何延迟的情况下相互播放,因为它们是一个视频,我尝试使用 QMediaPlaylist 并在运行时附加列表,它工作但我在播放按钮中使用此代码的视频之间存在明显延迟

void MainWindow::on_pushButton_2_clicked()
{
    player = new QMediaPlayer(this);

    QFile file("D:/video/first.mp4");
    file.open(QIODevice::ReadOnly);
    arr = new QByteArray();
    arr->append(file.readAll());
    file.close();
    buffer = new QBuffer(arr);
    buffer->open(QIODevice::ReadWrite);

    player->setVideoOutput(ui->widget);

    player->setMedia(QMediaContent(), buffer);
    player->play();
}

和一个在运行时附加第二个视频的按钮,在这里我做了很多不同的尝试

void MainWindow::on_pushButton_3_clicked()
{
    QFile file("D:/video/second.mp4");
    file.open(QIODevice::ReadOnly);
    QByteArray temp = file.readAll();
    //arr->append(temp, temp.size()); //first to append the QByteArray did not work
    buffer->write(temp.data(), temp.size()); //second write to the buffer but not work
    file.close();
    qDebug() << "Appeneded";
}

第一个附加数组但它不起作用,就像我将缓冲区设置为 ReadWrite flage 并且结果相同,结果是只播放第一个视频并且它停止了,所以你能帮我制作这个工作?我在代码中做错了什么让第二个视频在第一个视频之后无法顺利运行,这就是我想要的结果。

4

0 回答 0