Windows中各类画面源的截取和合成方法总结

本文总结了Windows环境下,包括摄像头画面、桌面取屏、窗口截取及本地图片位图数据的多种截取方法,如DShow、BitBlt、PrintWindow和DirectX。针对画面合成,介绍了LibYuv和DirectX 9方案,探讨了画面拉伸压缩的性能优化,并强调了DirectX在提高效率方面的优势。
摘要由CSDN通过智能技术生成

曹伟

2015年毕业于华中科技大学后入职网易,先后参与过易信PC版、云信PC demo以及教育直播产品的研发,目前在云信音视频组PC端组从事开发。

作者简介

概要

当今,视频直播和实时音视频技术已经是很多行业必需的,典型的应用场景有教育直播、远程视频会议、互联网娱乐等。在移动端发起直播,其画面源的种类是十分有限的,无非是取摄像头、截屏等。PC端由于其系统资源充足,应用程序丰富,画面源种类多样,更适合作为主播程序运行的平台。在实际应用中,经常有一些场景是需要将不同的画面源合在一起,然后推流出去的。本文粗浅介绍一些我们在开发过程中总结的一些获取不同画面源的画面并将其合并的方法。

各类画面源的截取


1)    摄像头画面

Windows下采集摄像头画面,DShow是最常用的方法之一。通过DShow采集摄像头数据,创建视频采集Filter,将其加入到图表IGraphBuilder中,用IMediaControl接口来控制流媒体在Filter Graph中的流动,再通过Render来获取视频的原始数据。以上流程封装在了我们的SDK中,用户可以直接调用SDK接口。


2)    桌面取屏及应用程序窗口截取

在Windows系统中,桌面和所有应用程序窗口一样,本身也是一个HWND窗口,因此可以放在一起讨论。获取一个窗口的位图数据,最常用的方法是:创建一个用来接收窗口画面的HBITMAP位图对象以及一个HDC设备上下文对象,用SelectObject将两者绑定ÿ

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值