videoInput视频采集

videoInput github地址

从中获取到videoInput.cpp和videoInput.h两个文件。

创建vs工程加入上面两个文件并创建main.cpp。main.cpp中调用videoInput的api进行摄像头的设置,开启,采集。示例代码:

#include <iostream>
#include <thread>
#include <time.h>#include "videoInput.h"using namespace std;int main()
{//获取摄像头的数量和名字videoInput vi;int deviceNum = vi.listDevices();cout << "device total num=" << deviceNum << endl;for (int i = 0; i < deviceNum; i++) {cout << "DeviceName:" << vi.getDeviceName(i) << endl;}//开启摄像头,设置帧率、宽、高int deviceId = 0;vi.setIdealFramerate(deviceId, 30);if (!vi.setupDevice(deviceId, 1280, 720)) {cout << "setupDevice failed" << endl;return -1;}//判断摄像头是否开启if (!vi.isDeviceSetup(deviceId)) {cout << "setupDevice failed" << endl;return -1;}cout << "get device successed:" << vi.getDeviceName(deviceId) << endl;//获取摄像头支持的宽高,创建获取图像的缓存int index = 0;int width = vi.getWidth(deviceId);int height = vi.getHeight(deviceId);int size = vi.getSize(deviceId);uint8_t* rgb = new uint8_t[size];clock_t start, finish;while (true) {//判断当前是否有新的采集图像if (vi.isFrameNew(deviceId)) {start = clock();//获取采集的图像数据if (vi.getPixels(deviceId, rgb, true, true)) {finish = clock();cout << "get rgb data successed index=" << ++index << " duration=" << finish - start << endl;}}std::this_thread::sleep_for(std::chrono::milliseconds(20));}vi.stopDevice(deviceId);delete[] rgb;rgb = nullptr;return 0;
}

注意事项:

1.在设置分辨率为1280*720的时候发现采集帧率很低,大约10fps。与设置的30fps相差很多,经排查将videoInput.cpp的setSizeAndSubtype方法中以下代码进行注释,帧率变快很多。

 //VD->pAmMediaType->formattype = FORMAT_VideoInfo;//VD->pAmMediaType->majortype  = MEDIATYPE_Video;//VD->pAmMediaType->subtype   = mediatype;

如果设置以上属性,获取新帧的回调会很久触发一次,猜测是进行了图像的格式转换,导致耗时较长。

videoInput视频采集相关推荐

  1. iOS 直播专题2-音视频采集

    从设备(手机)的摄像头.MIC中采集音频.视频的原始数据 ios的音视频采集可以从AVFoundation框架里采集 视频采集 这里我们选取GPUImage来采集视频,因为这个框架集成了很多视频滤镜, ...

  2. iOS GPUImage之视频采集GPUImageVideoCamera

    一.颜色转换矩阵 标准清晰度: extern const GLfloat kColorConversion601[]; 全彩: extern const GLfloat kColorConversio ...

  3. 移动互联网实时视频通讯之视频采集

    原文:http://blog.easemob.com/?p=277 一 .前言 一套完整的实时网络视频通讯系统包括视频采集.视频编码.视频传输.视频解码和播放.对于视频采集,大多数视频编码器对输入原始 ...

  4. iOS直播(二)GPUImage音视频采集

    上文中介绍了用AVFoundation实现音视频采集(https://blog.csdn.net/dolacmeng/article/details/81268622) ,开源的基于GPU的第三方图像 ...

  5. 简单的视频采集demo

    打算做个简单的聊天软件,其中一个我没做过的,就是视频采集. 在网上查了许久资料,终于搞清楚了dshow采集视频的流程 参考资料如下: https://msdn.microsoft.com/en-us/ ...

  6. 视频采集-非DICOM影像设备转DICOM标准的解决方案

    现在大多数影像设备都支持DICOM标准了,好多医院都在建设PACS,也有的为了使用干式DICOM像机而需要改造不支持DICOM的影像设备,用我的医网联影像工作站3.0(ProDicom Worksta ...

  7. 【Android RTMP】Android Camera 视频数据采集预览 ( 视频采集相关概念 | 摄像头预览参数设置 | 摄像头预览数据回调接口 )

    文章目录 安卓直播推流专栏博客总结 一. Android 端数据采集涉及到的相关概念 二. Camera 预览图像尺寸设置 三. 获取摄像头采集的数据格式 安卓直播推流专栏博客总结 Android R ...

  8. V4L2编程 视频采集

    V4L2编程 以前做的智能家居的项目用的是Linux2.6.13的核,使用的中星微的摄像头,移植了spcaview进行图像的获取,后来用了2.6.29的核,发现以前移植的spcaview不能用了,后来 ...

  9. 入门视频采集与处理(学会分析YUV数据)

    做视频采集与处理,自然少不了要学会分析YUV数据.因为从采集的角度来说,一般的视频采集芯片输出的码流一般都是YUV数据流的形式,而从视频处理(例如H.264.MPEG视频编解码)的角度来说,也是在原始 ...

最新文章

  1. js关于正则的前后关联约束(前后预查)
  2. 这些赛道设计的点子,不让用太可惜了 | 赛道审核环节
  3. 客户端svn出现authorization failed异常
  4. ETSI MEC — 网业协同架构
  5. hdu 1080(LCS变形)
  6. ios html字符转义字符串,iOS HTML特殊字符转译
  7. RHEL 5服务篇—LAMP平台的部署及应用
  8. c语言标识符等价类测试,c语言基础测试题--牧码南山招新检测题
  9. 精心收集了60个C语言项目源码,分享给大家
  10. 喜欢的歌——星月神话(金莎)
  11. 高德地图 web API 多点路线绘制
  12. Qt 安装组件及其说明(by shany shang)
  13. 架构师之路 — 分布式系统 — 分布式网络分区难题
  14. H264编码器与H265编码器对比
  15. java 微信转账 ca_error_CA证书出错,请登录微信支付商户平台下载证书
  16. Idea突然不停indexing的问题
  17. 用jxcell导出图表到excel
  18. MS Materials Studio 安装
  19. 入行大数据需要学习哪些编程语言
  20. 如何在 Linux 中使用 Calibre 将 PDF 文件转换为 EPUB 格式?

热门文章

  1. k8s hostPath
  2. Graph Convolution over Pruned Dependency Trees Improves Relation Extraction 论文研读
  3. Vue源码解读-1(世上无难事,只要肯放弃)
  4. 近期所有的面试题大全
  5. 嵌入式实时操作系统μC/OS-Ⅱ 在DSP芯片上的移植与测试
  6. 从简历被拒到收割8个大厂offer,我用了3个月成功破茧成蝶
  7. 直流无刷电机(BLDC)转速闭环调速系统及Matlab/Simulink仿真分析
  8. Java实例——时间
  9. .NET 可选择的转型路径(转)
  10. Apache kylin学习笔记