简单的视频采集demo
打算做个简单的聊天软件,其中一个我没做过的,就是视频采集。
在网上查了许久资料,终于搞清楚了dshow采集视频的流程
参考资料如下:
https://msdn.microsoft.com/en-us/library/ms787619(v=vs.85).aspx%20
http://www.opencv.org.cn/forum.php?mod=viewthread&tid=31555%20
http://www.360doc.com/content/05/1206/10/2269_40540.shtml%20
http://www.tuicool.com/articles/zaeqUnj%20
现在把代码开源在github上,欢迎大家提出意见:
github:https://github.com/qianqians/video
大家如果需要试用,编译工程然后执行即可

因为是准备做聊天软件,所以是有服务器和客户端的c/s结构。
执行的时候,需要先启动chatserver,然后再执行chat

随意输入一个用户名,点确定即可进入主界面

点击加入视频,即可启动视频流程

因为对dshow不熟悉,所以我在采集之后,没有选择用dshow播放视频,而是解码成了bmp图片,然后调用gdi绘制
CDC * dc = theApp.video->GetDC(); HBITMAP hBitmap = CreateCompatibleBitmap(dc->GetSafeHdc(), width, height);
HBITMAP hold = (HBITMAP)dc->SelectObject(hBitmap); BITMAPINFO info;
info.bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
info.bmiHeader.biWidth = width;
info.bmiHeader.biHeight = height;
info.bmiHeader.biPlanes = ;
info.bmiHeader.biBitCount = ;
info.bmiHeader.biCompression = BI_RGB;
info.bmiHeader.biClrUsed = ;
info.bmiHeader.biSizeImage = ;
info.bmiHeader.biXPelsPerMeter = ;
info.bmiHeader.biYPelsPerMeter = ;
info.bmiHeader.biClrImportant = ; StretchDIBits(dc->GetSafeHdc(), , , width, height, , , width, height, rgbbuf, &info, DIB_RGB_COLORS, SRCCOPY); dc->SelectObject(hold);
DeleteObject(hBitmap); theApp.video->ReleaseDC(dc);
,所以CPU占比比较高,不过出乎意料,视频的播放还算很流畅
希望有熟悉dshow的大牛指点dshow的播放部分:)
简单的视频采集demo的更多相关文章
- V4L2视频采集原理
一.简介 Video for Linuxtwo(Video4Linux2)简称V4L2,是V4L的改进版.V4L2是linux操作系统下用于采集图片.视频和音频数据的API接口,配合适当的视频采集设备 ...
- 让OMCS支持更多的视频采集设备
有些OMCS用户在他的系统使用了特殊的视频采集卡作为视频源(如AV-878采集卡),虽然这些采集卡可以虚拟为一个摄像头,但有些视频采集卡需要依赖于自带了sdk才能正常地完成视频采集工作.在这种情况下, ...
- 使用 AForge.NET 做视频采集
AForge.NET 是基于C#设计的,在计算机视觉和人工智能方向拥有很强大功能的框架.btw... it's an open source framework. 附上官网地址: http://www ...
- (三)WebRTC手记之本地视频采集
转自:http://www.cnblogs.com/fangkm/p/4374610.html 前面两篇文章介绍WebRTC的运行流程和使用框架接口,接下来就开始分析本地音视频的采集流程.由于篇幅较大 ...
- WebRTC手记之本地视频采集
转载请注明出处:http://www.cnblogs.com/fangkm/p/4374610.html 前面两篇文章介绍WebRTC的运行流程和使用框架接口,接下来就开始分析本地音视频的采集流程.由 ...
- 转:android 录制视频的Demo
转:http://blog.csdn.net/peijiangping1989/article/details/7049991 在这里给出自己的一个测试DEMO,里面注释很详细.简单的视频录制功能. ...
- Window 下 VFW 视频采集与显示
引言 经过几天的努力终于将VFW视频采集与显示功能完整实现了,不得不说网上对这方面完整的详细讲解文章是在太少了.所以就要本人来好好总结一下让后来者不再像我一样折腾好久.在本文中我将详细讲解VFW视频采 ...
- 入门视频采集与处理(学会分析YUV数据)
做视频采集与处理,自然少不了要学会分析YUV数据.因为从采集的角度来说,一般的视频采集芯片输出的码流一般都是YUV数据流的形式,而从视频处理(例如H.264.MPEG视频编解码)的角度来说,也是在原始 ...
- Linux之V4L2视频采集编程详解
V4L2(Video For Linux Two) 是内核提供给应用程序访问音.视频驱动的统一接口. Linux系统中,视频设备被当作一个设备文件来看待,设备文件存放在 /dev目录下,完整路径的设 ...
随机推荐
- Redis学习-Sentinel
Redis的Sentinel系统用于管理多个Redis服务器(instance), 该系统执行以下三个任务: 监控(Monitoring):Sentinel会不断地检查你的主服务器和从服务器是否运作正 ...
- HTML5本地存储之Web Storage应用介绍
Web Storage是HTML5引入的一个非常重要的功能,可以在客户端本地存储数据,类似HTML4的cookie,但可实现功能要比cookie强大的多,cookie大小被限制在4KB,Web Sto ...
- 最近一些朋友问我,临近快毕业了专业不对口,想转行看到IT行业就业前景不错,但是编程语言众多不了解,不知道哪门语言能够快速入门掌握,短期能让我找到工作
我做互联网前端后台开发也有四年多了,一路走过来,累并快乐着.快乐比艰辛更多,源自我的兴趣驱动.初中的一个偶然的机会我接触到了计算机,从那个时候就喜欢上开始经常到网吧上网.那个时候我对计算机领域的认识是 ...
- Thread in Java
References: [1]. http://www.javaworld.com/article/2074481/java-concurrency/java-101--understanding-j ...
- jar包和war包
Jar (Java archive), 是将实现了某功能的所有类及辅助资源用ZIP压缩形式打包而成的一个文件, 便于代码的管理和重复使用.当使用别人提供的jar时,只需要在classpath环境变量中 ...
- .NET中webservice如何使用,调用
webservice 只是"面向服务"编程的一种方式,现在把所有的方式都合在一起,就叫做WCF,,,,,, 1.创建 webservice服务,在web项目中添加"web ...
- 在wamp下使用netbeans开启Xdbug
1.到http://www.xdebug.org 下载与PHP对应的xdebug版本,也可以把phpinfo源码粘贴到http://www.xdebug.org/find-binary.php,提交后 ...
- Java虚拟机原理
1.编译机制 分析和输入到符号表: 词法分析:将代码转化为token序列 语法分析:由token序列生成抽象语法树 输入到符号表:将类中出现的符号输入到类的符号表 注解处理: 处理用户自定义注解,之后 ...
- Java 命令后台运行jar包
nohup java -jar XX.jar >temp.text & nohup 客户端关闭,后台继续运行 & 客户端关闭,后台停止运行 temp.text 是存控制台文件 ...
- 移动端车牌识别——可以嵌入智能手机系统里的新OCR识别技术
移动端车牌识别技术,是在OCR光学字符识别技术的基础上研发的用来识别汽车号牌特征信息的图像识别技术.在国内,该项技术由北京易泊时代携手清华大学成功地将"国家863计划"项目成果-- ...