QT显示视频-QVideoWidget

PyQt5 视频播放--在QVideoWidget上显示视频 本文基于《Python Qt GUI与数据可视化编程》总结的关于视频播放器相关内容 阅读详情

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);
QVideoWidget遇到setAttribute(Qt::WA_TranslucentBackground)问题 Qt下使用setAttribute(Qt::WA_TranslucentBackground)是因为自定义窗口,需要能够有圆角窗口,阴影特殊效果出现,但是如果出现这个窗口使用QVideoWidget基于该窗口指针父类显示视频效果时候,因该属性的设置导致QVideoWidget无法显示的问题出现。QVideoWidget无法使用下,就自定义类去进行视图刷新,能够更加灵活,可以在视图上增加更多的操作。 阅读详情

相关推荐

Qt、C++软件开发之QVedioWidget控件:功能特性以及C++详细用法。

在Qt软件开发中,QVideoWidget 是一个用于显示视频内容的控件,是QWidget的子类。它是Qt Multimedia模块的一部分,提供了将视频输出渲染到窗口或屏幕上的功能。QVideoWidget 可以与 QMediaPlayer 或其他视频输出类结合使用,以在应用程序中播放和显示视频。如果你想要自定义 QVideoWidget 的外观,可以使用Qt的样式表机制,或者通过子类化 QVideoWidget 并重写其绘制方法来实现。

xuming2044的博客 971

QT简单的视频播放器

本文通过一个简单的案例去实现视频播放器的设置,利用代码去实现了布局,功能虽然简单,但是类的使用比较灵活,适合入门者。

bx1091182836的博客 1万+

QT多媒体开发(三):使用QMediaPlayer播放视频

简要介绍在QT中使用QMediaPlayer播放视频

路漫漫其修远兮,吾将上下而求索 3614

QT界面中实现视频帧显示的多种方法及应用

QT界面中实现视频帧显示的多种方法及应用

探索C++编程的奥秘,分享深入的技术见解和实践,旨在激发读者创造力与解决问题的思维。 1万+

C++/Qt 多媒体(续四)

基于Qt框架的C++编程,本章主要内容包括一个QVideoWidget类的示例代码

qq_67853786的博客 1423

使用Qt的QVideoWidget进行视频显示

在上述代码中,我们首先创建一个QMediaPlayer对象,并通过setMedia()方法设置要播放的视频文件,这里使用本地文件路径作为参数。最后,将QVideoWidget添加到布局中,并将窗口显示出来,调用play()方法开始播放视频。QVideoWidget是一个方便易用的Qt组件,可用于视频播放的UI界面实现。我们可以通过QMediaPlayer类来加载视频文件,并将其与QVideoWidget关联起来,最后将QVideoWidget加入到布局中即可实现视频播放功能。

CodeVorter的博客 1164

RK3568 QT QVideoWidget 视频显示问题

在RK3568上使用qtL从摄像头拉流显示及播放视频时,我开始时选择QVideoWidget作为显示控件,结果出现了QVideoWidget一直作为顶层控件显示,遮挡其他部件的情况(注:此问题在ubuntu环境下未出现)

zhibi2020的博客 463

Qt系列文章之二十六(基于QMediaPlayer 在 QVideoWidget或QGraphicsVideoItem 组件上播放视频)

前言 前面讲解了 QMediaPlayer 播放音频文件,但是视频文件播放器一直没去讲,本章将会详细讲解如何播放视频的程序开发。 QVideoWidget效果图 播放概述 使用 QMediaPlayer 可以进行视频文件解码,视频播放必须将视频帧在某个界面组件上显示,有 QVideoWidget 和 QGraphicsVideoItem 两种视频显示组件,也可以从这两个类继承,自定义视频显示组件。 QMediaPlayer 也可以结合 QMediaPlaylist 实现视频文件列表播放。 在QVideoWi

波风水门 2742

qt camera 几种获取以及显示,截图方式-Qcamera获取视频流,QVideoWidget显示 以及 QcameraImageCapture获取截图

一:Qcamera获取视频流,QVideoWidget显示 以及 QcameraImageCapture获取截图       在工程 .pro文件中加入一下语句QT += multimedia QT += multimediawidgets     在ui文件中添加widget控件并提升为QVideoWidget控件头文件: #ifndef MAINWINDOW_...

llazy123的博客 1万+

Qt视频显示类QVideoWidget的使用说明与代码演示

先简要说明下视频显示,视频文件想在电脑屏幕上显示,需要承载在UI控件上,例如MFC,可以用Picture控件,C#可以用PictureBox, Qt可以用QOpenGLWidget等,不同的UI库,实现方法不同。当然这只是像素的展示,还涉及到音视频编解码,同步等。这些,UI库可能就做不到了,需要借助第三方库,例如大名鼎鼎的FFmpeg, SDL,DirectX等。 最...

琅嬛福地 1万+

QVideoWidget使用详解

可以通过样式表(QSS)自定义的外观。// 自定义样式表"}"if (!});是 Qt 中用于显示视频内容的强大控件,适用于视频播放器、实时监控和视频会议等场景。通过结合和QCamera,可以实现丰富的视频功能。在实际开发中,建议根据平台特性和需求进行优化和适配。

啊渊的专栏 862

Qt实现视频播放器

Qt实现视频播放器

m0_60259116的博客 3327

Qt视频剪辑软件开发:实时视频显示

该类包含了一个QMediaPlayer对象和一个QVideoWidget对象,用于加载和播放视频,并将视频帧显示在窗口上。该类包含了一个菜单栏和一个文件菜单,其中包含一个打开视频的菜单项。在本文中,我们将介绍如何使用Qt框架开发一个简单的视频剪辑软件,并展示如何实现实时视频显示功能。接下来,我们将在Qt项目中创建一个新的窗口类,用于显示视频。我们将使用Qt的QMediaPlayer类来加载和播放视频文件,并将视频的帧数据显示在窗口上。接下来,我们需要在主窗口中添加一个菜单栏和一个打开视频的菜单项。

ByteBuster的博客 536

qt 创建第二个ui_如何在使用Qt设计器创建的UI中添加一个升级的widget(QVideoWidget)的视频?...

我是Qt的初学者。但是在一些教程之后,我在qt设计器中创建了一个UI,可以显示实时流视频。我读过,为了添加视频,我需要将widget升级到QVideoWidget。然后我将.ui转换为.py文件,以使用python语言访问它。事情是一旦我做了,我不知道如何把视频放在我在用户界面制作的小部件。谢谢您。在下面的代码显示图形用户界面.py文件。我将它导入到另一个文件中,在那里我将编码它显示视频。但不知道...

weixin_32238435的博客 1253

STM32+4G模块+MQTT协议:从零构建稳定可靠的物联网通讯链路

本文详细介绍了如何利用STM32、4G模块和MQTT协议构建稳定可靠的物联网通讯链路。通过硬件选型、AT指令配置和MQTT连接实战,帮助开发者实现低功耗、高可靠性的数据传输,特别适合户外和移动场景应用。

weixin_29191081的博客 333

Doris副本修复实战:从状态机到手动修复的完整指南

在分布式数据库系统中,多副本机制是实现高可用与数据一致性的核心技术。其原理是通过在不同节点存储数据的多个拷贝,确保部分节点故障时服务仍可继续。这项技术的核心价值在于保障数据可靠性,并支撑在线分析处理(OLAP)等对数据一致性要求高的应用场景。当副本出现损坏、丢失或版本不一致时,系统通常依赖自动修复机制,但在元数据损坏、多副本同时故障等复杂场景下,自动修复可能失效,需要深入理解副本状态机并借助手动工具介入。本文将聚焦Doris数据库,解析Tablet副本状态流转(如BAD、VERSION_ERROR),并详细

weixin_32288959的博客 454

qt实现视频播放器

本篇博客介绍如何利用qMediaPlayer和qvideowidget实现视频文件(avi,mp4....)的播放,并且提供进度显示,还可以通过拖动进度条来变换播放位置。相关代码可以在我的资源里下载"基于qt的视频播放器" pro文件: #------------------------------------------------- # # Project created by QtCr...

liji_digital的博客 4万+

基于STM32 FOC下桥三电阻采样方式的电机相电流重构方法

如何提高三电阻采样的调制率

wanrenqi的博客 9191
上一篇: ffmpeg 转码代码
下一篇: FFmpeg AVFrame 初始化 Opencv Mat
hiprogram
博客等级 码龄10年 1粉丝 16原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值