使用QMediaplayer从缓冲区播放视频并在播放视频时追加缓冲区

时间:2019-06-06 06:35:12

标签: qt qbytearray qmediaplayer qvideowidget qbuffer

我尝试从缓冲区播放视频并在播放时追加缓冲区,以使两个或更多视频彼此连续播放,因为它们是一个视频,所以没有任何延迟,我尝试使用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时一样,其结果是只播放第一个视频,然后停止, 你能帮我做这个工作吗?我在代码中做错的事情导致第二个视频在第一个视频之后无法流畅运行,这就是我想要的结果。

0 个答案:

没有答案