当前位置: 首页 > ds >正文

qml显示视频帧(QQuickImageProvider)

一、实现方式

解码视频可以选择:opencv、ffmpeg等。

显示视频可以选择:Qt Multimedia、QQuickImageProvider、ShaderEffect、自定义QQuickItem等。

本文使用opencv解码视频,QQuickImageProvider显示视频。

二、QQuickImageProvider 中,requestImage 和 requestTexture区别 

在 QQuickImageProvider 中,requestImage 和 requestTexture 的区别主要体现在 调用时机返回数据类型 和 性能优化 上。以下是详细对比:

 核心区别

特性requestImagerequestTexture
返回类型QImage(CPU 内存中的图像)QQuickTextureFactory*(GPU 纹理工厂)
调用时机QML 需要 CPU 可操作的图像时(如截图、软件处理)QML 需要直接渲染到 GPU 时(如视频、动画)
性能较高开销(需 CPU → GPU 上传)高性能(直接生成 GPU 纹理,零拷贝)
典型用例静态图片、需像素级操作的图像视频帧、动态内容、高频更新

如何选择实现哪个方法?

需求实现方法理由
静态图片requestImage简单易用,兼容性好
视频/实时渲染requestTexture避免 CPU-GPU 拷贝,性能更高
需要像素操作requestImage可直接访问像素数据
跨平台 GPU 渲染requestTexture统一适配不同图形后端

 Qt 的默认行为

三、示例代码

目录结构:

视频解码类(VideoDecoder)

VideoDecoder.h

#ifndef VIDEODECODER_H
#define VIDEODECODER_H#include <QObject>
#include <QMutex>
#include <opencv2/videoio.hpp>
#include <atomic>class VideoDecoder : public QObject {Q_OBJECT
public:explicit VideoDecoder(QObject *parent = nullptr);~VideoDecoder();public slots:void open(const QString &filePath);void stop();void setPosition(int ms);signals:void frameReceived(const QImage &frame);void durationChanged(int ms);void positionChanged(int ms);private:void decodeLoop();cv::VideoCapture m_cap;std::atomic<bool> m_running{false};std::thread m_decodeThread
http://www.xdnf.cn/news/3907.html

相关文章:

  • 学习黑客红队模拟演练报告
  • SpringBoot的汽车商城后台管理系统源码开发实现
  • YOLOv7细节解读
  • Go语言实现Kafka消息队列
  • NaVILA: Legged Robot Vision-Language-ActionModel for Navigation
  • PHP的include和require
  • FGMRES(Flexible Generalized Minimal Residual)方法
  • 系统思考:核心价值与竞争力
  • 永磁同步电机控制算法--基于PI的位置伺服控制
  • C# 方法(返回值、返回语句和void方法)
  • 微服务框架选型
  • SpringMVC——第三章:获取请求数据
  • React--》掌握react构建拖拽交互的技巧
  • Linux ACPI - ACPI系统描述表架构(2)
  • 【Redis】Redis常用命令
  • 软件架构之旅(6):浅析ATAM 在软件技术架构评估中的应用
  • 蓝桥杯15届国赛 合法密码
  • 嵌入式系统基础知识
  • 【Hive入门】Hive与Spark SQL集成:混合计算实践指南
  • python使用cv2在图片上标点
  • Python语句类型与格式规范研究
  • RT-Thread studio的驱动5.1.0报错修改
  • c++学习
  • 算法笔记。质数筛算法
  • 一种实波束前视扫描雷达目标二维定位方法——论文阅读
  • 短信登录功能实现(黑马点评)
  • 高中数学联赛模拟试题精选学数学系列第6套几何题
  • QT —— QWidget(1)
  • 白皮解读:数据流通关键技术白皮书【附全文阅读】
  • MNN 支持 DeepSeekVL