QT显示视频-QVideoWidget

6 篇文章 0 订阅
3 篇文章 2 订阅

QT显示视频QVideoWidget

Header:
#include <QVideoWidget>
qmake:
QT += multimediawidgets
Inherits:
QWidget and QMediaBindableInterface

AVframe pFrameRGB的data 实际指向rgbBuffer 其中存储的是YUV或RGB数据 可将rgbBuffer绑定到QImage

//ffmpeg 分配frame结构体
pFrameRGB = av_frame_alloc();
//获取视频帧的实际占用空间大小
    rgbNumBytes = av_image_get_buffer_size(AV_PIX_FMT_BGR24, dec_ctx->width, dec_ctx->height, 1);
  //分配视频帧存储空间
    rgbBuffer = (unsigned char*)av_malloc(rgbNumBytes);
   //data 帧存储空间 linesize数组 保存YUV三分量的起始地址
    ret = av_image_fill_arrays(pFrameRGB->data, pFrameRGB->linesize, rgbBuffer,
        AV_PIX_FMT_BGR24, dec_ctx->width, dec_ctx->height, 1);

image = std::make_shared<QImage>((uchar*)rgbBuffer, dec_ctx->width, dec_ctx->height, QImage::Format_RGB32);
//rgbBuffer为ffmpeg 与AVFrame 绑定的内存 将qImage 绑定到实际的帧存储地址
QVideoWidget* frame = new QVideoWidget();
// 缩放成和窗口一样的大小
QImage img = media->image->scaled(frame->width(), frame->height(), Qt::KeepAspectRatio, Qt::FastTransformation);
            QVideoSurfaceFormat format(img.size(), QVideoFrame::Format_RGB32);
            frame->videoSurface()->start(format);
            //显示视频帧
            frame->videoSurface()->present(img);
  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值