音视频采集-摄像头视频采集(原理与实现)
直播的模式火了之后很多软件都会集成音视频相关需求,下边我们先来讲一下摄像头视频采集:
视频模块
相关技术:OpenGLPlayer+videoinput。
视频信息采集到之后通过OpenGLPlayer(继承自QOpenGLWidget)进行绘制渲染。
Videoinput:视频信息采集库(感兴趣实现原理的可以看一下源码,C++实现)
封装一个线程类,在线程中启动videoInput对象,实现视频的采集,具体实现如下:
void run()
{
videoInput VI;
int devideNumber = m_deviceName.toInt();
VI.setIdealFramerate(devideNumber, 24);
VI.setRequestedMediaSubType(m_pixelFormat);
bool res = VI.setupDevice(devideNumber, m_w, m_h);
if (!res) {
xs_log_error("setup camera error.");
return;
}
VI.setAutoReconnectOnFreeze(devideNumber, true, 240);
int width = VI.getWidth(devideNumber);
int height = VI.getHeight(devideNumber);
int size = VI.getSize(devideNumber);
unsigned char * bgr = new unsigned char[size];
QImage img(width, height, QImage::Format_RGB888);
while (!m_stop) {
//to get the data from the device first check if the data is new
if(VI.isFrameNew(devideNumber)){
VI.getPixels(devideNumber, bgr, true, false); //fills pixels as a BGR (for openCV) unsigned char array - no flipping
memcpy(img.bits(), bgr, size);
//to do 每一帧视频数据绘制等
}
msleep(30);
}
VI.stopDevice(devideNumber);
}
音视频采集-摄像头视频采集(原理与实现)相关推荐
- Android 手机采集摄像头视频 socket 视频传输实时传播
这里搜集了两种实现Android 手机采集摄像头视频 socket 视频传输实时传播的方法,两种都可以使用. 第一种如下: 1.通过客户端socket请求,服务端接受到请求后,获取socket的输出流 ...
- android 手机采集摄像头视频 socket 视频传输 实时传播
一.具体流程: 1.通过客户端socket请求,服务端接受到请求后,获取socket的输出流对象outs. 2.服务端通过Camera的setPreviewCallback方法回调采集摄像头视频数据, ...
- 4.通过Opencv采集摄像头视频数据
VideoCapture() 虚拟采集器,一般设备号从0开始 cap.read() 读取视频帧 返回值有两个,第一个为状态值,读到帧为true 第二个值为视频帧 cap.release() 释放资源 ...
- 【2012年终总结】之一 opencv + ds采集摄像头视频 MFC点点滴滴
1.MFC单文档多文档程序 不让MFC来更新菜单 1 在CMainFrame::CMainFrame中添加 2 3 m_bAutoMenuEnable = FALSE; 标题栏图标的更改 1 //cu ...
- Android不显示Camera视频获取摄像头视频帧数据
1.在Activity界面代码中: private var mCamera: Camera? = null private val mWidth = GwApplication.DEFAULT_REM ...
- opencv VideoWriter保存摄像头视频、本地视频等
打开视频文件或摄像头视频需要使用Opencv中的VideoCapture类,保存视频或摄像头视频到本地磁盘,需要使用Opencv中的VideoWriter类. VideoWriter类的一个常用构造方 ...
- 摄像头视频采集压缩及传输
摄像头视频采集压缩及传输 引言: 摄像头基本的功能还是视频传输,那么它是依靠怎样的原理来实现的呢?所谓视频传输: 就是将图片一张张传到屏幕,由于传输速度很快,所以可以让大家看到连续动态的画面,就像放电 ...
- 摄像头视频采集压缩及传输 1
引言 : 摄像头基本的功能还是视频传输,那么它是依靠怎样的原理来实现的呢?所谓视频传输: 就是将图片一张张传到屏幕,由于传输速度很快,所以可以让大家看到连续动态的画面,就像放电影一样.一般当画面的传输 ...
- FFMPEG采集摄像头图像SDL渲染+MP4格式视频编码
FFMPEG采集摄像头图像SDL渲染+MP4格式视频编码 FFmpeg是一套可以用来记录.转换数字音频.视频,并能将其转化为流的开源计算机程序.采用LGPL或GPL许可证.它提供了录制.转换以及流化音 ...
- 【Android音视频开发】- 实时采集视频
前言 通过我的上一篇文章,可以知道直播大致有几个步骤:音视频采集 -> 美颜/滤镜/特效处理 -> 编码 -> 封包 -> 推流 -> 分发 -> 解码/渲染/播放 ...
最新文章
- nedata实时监控服务器运行情况
- 01. elastcsearch-monitor (es 监控)
- C++编译预处理:宏定义指令、文件包含指令和条件编译指令
- 【C++深度剖析教程1】C++中的经典问题解析-c++中的对象的构造顺序与析构顺序
- python 内置数据类型之数字
- opencv之绘制多边形----cv2.polylines, cv2.fillPoly
- 键盘上各种特殊符号的英文读法
- 操作系统课程设计 Kernel编译和WinDbg启动 批处理文件
- STM32串口通信(使用C8T6)
- 硅谷钢铁侠的的传奇人生
- 俺的web课设大作业
- 添加网络位置(共享目录)
- java三角形边长_java三角形怎么求边?
- linux,debian系统安装录制视频软件simplescreenRecorder
- meo学习笔记4:C++中对象占用内存情况
- android app 目标版本,android – 在gradle中使用目标sdk版本23时,ZBA...
- python简单抽奖系统_python实现的简单抽奖系统实例
- 2019-2020南邮《信息安全数学基础》期末考试回忆
- linux启动tomcat权限不足
- hdu3491 最小点割集(无向图求最小点割集通用方法)