打算做个简单的聊天软件,其中一个我没做过的,就是视频采集。

在网上查了许久资料,终于搞清楚了dshow采集视频的流程

参考资料如下:

https://msdn.microsoft.com/en-us/library/ms787619(v=vs.85).aspx%20

http://wiki.opencv.org.cn/index.php/%e4%bd%bf%e7%94%a8DirectShow%e9%87%87%e9%9b%86%e5%9b%be%e5%83%8f%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 = 1;
info.bmiHeader.biBitCount = 24;
info.bmiHeader.biCompression = BI_RGB;
info.bmiHeader.biClrUsed = 0;
info.bmiHeader.biSizeImage = 0;
info.bmiHeader.biXPelsPerMeter = 0;
info.bmiHeader.biYPelsPerMeter = 0;
info.bmiHeader.biClrImportant = 0;StretchDIBits(dc->GetSafeHdc(), 0, 0, width, height, 0, 0, width, height, rgbbuf, &info, DIB_RGB_COLORS, SRCCOPY);dc->SelectObject(hold);
DeleteObject(hBitmap);theApp.video->ReleaseDC(dc);

,所以CPU占比比较高,不过出乎意料,视频的播放还算很流畅

希望有熟悉dshow的大牛指点dshow的播放部分:)

转载于:https://www.cnblogs.com/qianqians/p/5354117.html

简单的视频采集demo相关推荐

  1. iOS音视频开发七:视频采集

    将通过拆解采集 → 编码 → 封装 → 解封装 → 解码 → 渲染流程并实现 Demo 来向大家介绍如何在 iOS/Android 平台上手音视频开发. 这里是第七篇:iOS 视频采集 Demo.这个 ...

  2. webrtc简单案例——音视频采集和播放

    webrtc简单案例--音视频采集和播放 目录 打开摄像头并将画面显示到页面 打开麦克风并在页面播放捕获的声音 同时打开摄像头和麦克风,并在页面显示画面和播放捕获的声音 1. 打开摄像头并将画面显示到 ...

  3. 三、使用HM进行简单的视频隐写demo

    三.使用HM进行简单的视频隐写 前言 一.实验环境 二.实验思路 三.实验过程 3.1 提取原始载体 3.2 使用LSB隐写算法进行隐写 3.3 放回含密载体 3.4 提取含密载体 3.5 使用LSB ...

  4. 摄像头、视频采集和摄像设备图像质量判断的几种简单有效目测方法

    来源:http://blog.csdn.net/lezhiyong 视频图像性能的几种简单目测方法,也可在购买视频采集和摄像设备拿来做参考 软件编解码性能测试: 摄像头前快速挥手,看手部是否连贯.是否 ...

  5. Android 音视频采集与软编码总结

    请尊重原创,转载请注明出处:http://blog.csdn.net/mabeijianxi/article/details/75807435(本文已在 "任玉刚" 微信公众号发布 ...

  6. WebRTC音视频采集和播放示例及MediaStream媒体流解析

    WebRTC音视频采集和播放示例及MediaStream媒体流解析 目录 示例代码--同时打开摄像头和麦克风,并在页面显示画面和播放捕获的声音 API解析 mediaDevices MediaStre ...

  7. 直播软件搭建音视频开发中的视频采集

    直播软件搭建音视频开发中的视频采集 前言 在直播和短视频行业日益火热的发展形势下,音视频开发(采集.编解码.传输.播放.美颜)等技术也随之成为开发者们关注的重点,本系列文章就音视频开发过程中所运用到的 ...

  8. Linux下的视频采集(V4L2)

    写在前面的话:以下代码均是从自己的项目中摘出来的,类似调试打印,结构体都是自己定义的,需要修改后才能使用,需要源码的可直接到总结博客写一个自己的小型视频监控系统 最近两周加班有点多,趁着周末一些零碎时 ...

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

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

最新文章

  1. Android线程池封装库
  2. feign直接走熔断_四、Spring Cloud之熔断处理 Hystrix
  3. 一个好用的PHP验证码类
  4. 如何构建NTP时间服务器
  5. fatal: Not a git repository (or any parent up to mount point /home) Stopping at filesystem boundary
  6. 线性回归中的梯度爆炸
  7. ActiveMQ 下载与安装
  8. 建议114:MD5不再安全
  9. c++中rand(),srand()使用
  10. 笔记本计算机无法开机怎么办,笔记本开机没反应,详细教您笔记本电脑开不了机怎么处理...
  11. Surface Pro 4 系统优化全教程及QA
  12. 2021年中国A2P(应用程序对个人)消息传递市场趋势报告、技术动态创新及2027年市场预测
  13. 基因编辑婴儿的意味着什么
  14. 深度学习框架之Keras入门教程
  15. Android UI设计经验分享,掌握设计技巧,让你的应用独树一帜
  16. c语言单链表的创建(头插法和尾插法)
  17. 怎样给自己取个英文名?
  18. mysql稳定性_MySQL的稳定性
  19. sony相机照片恢复|Mac电脑sony相机照片误删了怎么恢复?
  20. Android/JAVA 针对时间戳转今天昨天前天,以及刚刚,几分钟的显示

热门文章

  1. BL1551模拟开关,封装SC70-6
  2. 印制塑料卡片中的IC芯片
  3. 基于ESP32的竞赛裁判系统功能调试-光电条检测板
  4. 有人工裁判,就会有争执
  5. 山东省2021年普通高考成绩录取去向查询,2018年山东高考录取去向查询时间及入口...
  6. android 拖动的view,Android实现随意拖动View效果
  7. 苏大微型计算机原理与应用题库,苏大单片机原理及应用试卷
  8. ssm中怎么使tomcat一起动就执行一个controller_【200期】面试官:你能简单说说 SpringMVC 的执行原理吗?...
  9. as工程放到源码编译_UE4 Program 类型工程的限制和解决方法
  10. java i 底层原理,《Java基础知识》Java Hash底层原理