因为项目需要,从某宝采购了一个pipivision HDMI采集卡,该采集卡为USB3.0接口,支持HDMI输入和环出,还有混音功能,以下分享源码下载地址,我们根据源码学习使用方法。

github源码下载

网盘分享提取码n6sh

查看QT示例源码,在文件DevManager.h中包装了设备的很多操作,使用起来非常方便,我们只需要把源文件DevManager.cpp添加到工程并包含该头文件即可,内部的层次结构如下图所示。


经过查看,视频数据采集有三种方式可以选择,分别为数据回调,拷贝和锁定,每种方式都有各自的使用场景。
数据回调方式比较直接,采集到的每帧数据都会调用对应的回调函数处理,因此不能存在耗时的处理,否则会影响数据采集;
数据拷贝的方式可以把数据拷贝到对应的缓冲,而且支持裁剪、缩放、旋转和Color Space转换(例如YUV转RGB格式);
数据锁定方式可以随时捕获数据,不需要设置回调函数,数据使用完毕需要解锁才能继续采集,因此不能存在耗时的处理;

要操作对应的设备,我们先在自定义的类里面声明一个对象:
CDevSDK dev;

然后在自定义类的构造函数初始化列表中初始化传入索引号打开第0个采集卡:
dev(0)

如果设备打开成功我们就启动该设备
if (dev) dev.DeviceStart();

接下来我们根据需要使用其中的一种方式来捕获数据即可,执行的方式也有区别;
1、数据回调方式,需要注意是在另一个线程中执行的;
2、数据拷贝的方式,同步执行;
3、数据锁定的方式,同步执行。

主要代码如下:

Dialog::Dialog(QWidget *parent): QDialog(parent), ui(new Ui::Dialog), dev(0) // open device 0
{ui->setupUi(this);if (dev){dev.DeviceStart();}
}void CALLBACK frameCallback(uvsobj_handle obj, const uvs_frame_info_t *frame, void *userData)
{
}// 回调方式(任选一种即可)
void Dialog::on_callback_clicked()
{if (dev){dev.SetVideoRawFrameCallback(frameCallback);}
}// 拷贝方式(任选一种即可)
void Dialog::on_copy_clicked()
{if (dev){uvs_frame_info_t frame;memset(&frame, 0, sizeof(frame)); // 数据默认存放在内部缓冲,也可以指定缓冲地址dev.CopyVideoFrame(frame);}
}// 锁定方式(任选一种即可)
void Dialog::on_lock_clicked()
{if (dev){uvs_frame_info_t frame;if (dev.LockVideoRawFrame(frame) == UVS_OK){ // 处理frame中的数据,然后释放dev.UnlockVideoRawFrame();}}
}Dialog::~Dialog()
{dev.DeviceClose();delete ui;
}

QT实现HDMI视频预览

QT获取HDMI视频采集数据相关推荐

  1. FPGA驱动FT601实现USB3.0相机HDMI视频采集 提供工程源码和QT上位机源码

    目录 1.前言 2.FT601芯片解读和时序分析 FT601功能和硬件电路 FT601读时序解读 FT601写时序解读 3.我这儿的 FT601 USB3.0通信方案 4.详细设计方案 5.vivad ...

  2. Facebook应用开发-之获取直播视频分析数据

    业务场景 1.我的业务场景:从Facebook平台,获取直播视频分析数据(用于数据统计)2.适用的业务场景:Facebook开发平台第三方应用开发Puppeteer爬取Facebook/其他网页数据 ...

  3. android获取摄像头视频帧数据

    1.思路 一.通过android的Camera.setPreviewCallback(PreviewCallback cb)监听回调. 二.此回调函数public void onPreviewFram ...

  4. iOS获取本地视频列表数据

    iOS本地的视频存在于三个地方: iTunes中影片中导入的视频文件 iTunes中通过共享文件导入的视频文件,即应用沙盒 摄像头拍摄的视频文件,可以相册找到 这三处获取视频列表方式不同. iTune ...

  5. Android不显示Camera视频获取摄像头视频帧数据

    1.在Activity界面代码中: private var mCamera: Camera? = null private val mWidth = GwApplication.DEFAULT_REM ...

  6. QT叠加HDMI采集视频OSD

    因为项目需要,从某宝采购了一个pipivision HDMI采集卡,该采集卡为USB3.0接口,支持HDMI输入和环出,还有混音功能,以下是示例源码下载链接 github下载 网盘分享提取码n6sh ...

  7. FPGA驱动FT601实现USB3.0相机 OV5640视频采集 提供2套工程源码和QT上位机源码

    目录 1.前言 2.FT601芯片解读和时序分析 FT601功能和硬件电路 FT601读时序解读 FT601写时序解读 3.我这儿的 FT601 USB3.0通信方案 4.vivado工程1--彩条视 ...

  8. FPGA USB FX2 ov5640摄像头视频采集 驱动CY7C68013A实现 提供2套工程源码和技术支持

    目录 1.前言 2.我这儿已有的 FPGA USB 通信方案 3.CY7C68013A芯片解读和硬件设计 FX2 简介 SlaveFIFO模式及其配置 4.工程详细设计方案 5.vivado工程 6. ...

  9. 源码免费下载!分享一套基于C6678+K7的视频采集处理方案

    1.为什么说DSP+FPGA架构更适合视频采集处理? 高性能的算法处理,使用硬件描述语言去编写算法的话,复杂程度高,工作量大,不易调试,产品的开发周期将非常长.这时,如果为系统添加专为算法而生的DSP ...

  10. Metal之实现视频采集与实时渲染

    一.视频渲染实现思路 ① 思路说明 通过AVFoundation进行视频数据的采集,并将采集到的原始数据存储到CMSampleBufferRef中,即视频帧数据(视频帧其实本质也是一张图片). 通过C ...

最新文章

  1. 深度揭秘!蚂蚁业务自定义监控大盘是怎么设计的?
  2. centos永久关闭防火墙
  3. 如何学好单片机?​嵌入式第一门课
  4. python设计模式21-策略模式
  5. Python面试题汇总
  6. 1.jenkins持续集成-jenkins安装
  7. android 属性翻牌动画,如何在Android中利用TextSwitcher实现一个文字上下翻牌效果
  8. Linux vim字符串替换
  9. standard、singleTop、singleTask、singleInstance
  10. IPFS为什么被学者称为数据的“黄金保险柜”?
  11. 【渝粤题库】陕西师范大学 《道德教育案例研究》作业
  12. Python爬虫获取电影链接(续)
  13. 满足三角不等式的TSP问题的近似算法
  14. 【多元统计分析】09.独立性检验与正态性检验
  15. IMX6Q的DDR3初始化配置
  16. matlab的subplot--子图位置大小随心所欲
  17. 2022年服务器行业研究报告
  18. Python基础 | Spyder的使用
  19. 二维连续型随机变量及其分布
  20. CIPU落地专有云:是“小众需求”还是“机会之门”?

热门文章

  1. 如何理解IT、OT、CT?
  2. ai怎么做盒子效果图_AI教程:打造一个逼真的包装盒
  3. java pdf添加图片_java pdf指定位置插入图片?
  4. Java程序员学习必看 干货
  5. 数据清洗_缺失值处理
  6. CSS盒模型与box-sizing详解
  7. java阶梯计费_Excel阶梯计费的公式
  8. Shiro原理以及运行流程
  9. 英语----形容词和副词
  10. python aic准则_在Python中手工计算Akaike信息标准(AIC)