如何通过opencv平稳播放HD(1080p +)视频

时间:2019-03-23 14:08:17

标签: c++ qt opencv

我目前正在使用qt + opencv来构建视频播放程序。我尝试了分辨率为360p,480p,720p和1080p的视频。问题是,当我拖动滑块时,只有1080P视频无法流畅播放。

慢响应示例 Slow response example

我正在使用固定标签来播放大小为(574 * 506)的视频。我不想降低视频的分辨率。我正在使用qt5.12和opencv 3 @Windows 10平台。这是我的视频播放代码。预先感谢。

void videoEditing::videoPlay()
{
    emit playReady();

    capture >> frame;

    if(!frame.empty()){

        Mat frameTmp = frame.clone();

        img = QImage(static_cast<const unsigned char*> (frame.data),
                     frame.cols,
                     frame.rows,QImage::Format_RGB888).rgbSwapped().scaled(ui->videoEditingArea->width(),
                                                                           ui->videoEditingArea->height(),
                                                                           Qt::KeepAspectRatio,
                                                                           Qt::FastTransformation);

        QImage imgTmp = QImage(static_cast<const unsigned char*> (frameTmp.data),
                               frameTmp.cols,
                               frameTmp.rows,
                               QImage::Format_RGB888).rgbSwapped().scaled(ui->videoEditingArea->width(),
                                                                          ui->videoEditingArea->height(),
                                                                          Qt::KeepAspectRatio,
                                                                          Qt::FastTransformation);

        ui->videoEditingArea->setPixmap(QPixmap::fromImage(img));
        ui->videoPlayingArea->setPixmap(QPixmap::fromImage(imgTmp));

    }
}

0 个答案:

没有答案