media foundation 摄像头采集实例,画面旋转,拍照,一头多采

这个实例是一个media foundation 摄像头采集的例子, 是我从一个开源工程里抽出来的。加入画面旋转, 快照, 显示窗口切换的功能。还有最出彩的就是这个采集可以对任意视频硬件进行多实例采集,不受设备独占的影响,可以满足特殊场合的使用。

大家可以用来学习,可以直接使用。代码是2013工程,直接可以编译运行。

代码下载  : https://download.csdn.net/download/wanghaisheng/13047600

一、基本使用

核心代码的调用很简单,看下面:

    int iRotation = 90;
	m_CapPreview.MFInit(0, GetDlgItem(IDC_STATIC_PLAY2)->m_hWnd, iRotation);
	m_CapPreview.MFSetMsgParent(this->m_hWnd);

这样就可以运行采集了。

 MFInit() 初始化参数,第一个设备索引,第二个是要显示的窗口,显示的窗口可以在显示过程动态切换。只需要调用一下MFSetPlayWnd()函数就可以了。

 第三个是旋转的角度,值是 90   180  270, 不是这三个值内部会转成这三个值。这个角度不能动态切换,只能在初始化时设入。如果要改变只能重新初始化。

MFSetMsgParent() 这个函数是设置一个接收窗口消息的窗口。 为什么会有这个呢,原因是内部为了能自动根据窗口大小的变化进行适应,所以接管了显示窗口的消息,如果你还想得到这些消息就要设置一个窗口来接收。这样才能完成拖动,右键菜单一类的功能。

快照功能如下调用

if (m_CapPreview.MFIsStart()){
	m_CapPreview.MFSnapshot("d:\\snapshot.bmp");
}

MFSnapshot()只有一个生成文件位置的参数, 生成的图片格式是 bmp, 它大的大小受当前显示窗口大小的限制,因为它是从显示模块中生成的,当然你也可能从媒体数据中直接生成图片这样就大了。

最后一个重要的地方是数据的回吐,就是采集的数据在哪里请看下面

int  CMFDevCapture::MFMediaDataCB(LONGLONG llSampleTime, LONGLONG llSampleDuration, const BYTE * pSampleBuffer, DWORD dwSampleSize)
{

	TRACE(" ***  Video frame size = %d\n", dwSampleSize);

	return 0;
}

如上代码就是回吐数据,你可以对数据进行进一步的处理转发等。任由你去处理。

二、类的说明

  • CMFDevCapture 是最上层的逻辑包装类。所有的调用逻辑都这个类中完成。
  • MFUtils 是Media foundation 包装类,对Media foundation进行了功能性封装,方便调用。
  • DisplayWatcher 是回显的类。
  • SampleGrabberCB 是数据捕获回调类
  • mf_devices   这文件里封装设备遍历,有音视频的设备,很好用。

 

大家自己来发挥使用吧, 里面现在只采集视频,你可以尝试采集音频,随你玩

Media Foundation(即媒体基金会)是一种供应用程序访问和操作媒体数据的高级程序接口(API)。它允许开发人员在Windows操作系统上创建和处理音频、视频和图像。而摄像头则是一种常用的外部设备,用来捕捉图像或录制视频。我们可以通过Media Foundation来控制摄像头,并将其捕捉到的图像和视频数据保存为MP4格式。 要将摄像头保存为MP4格式,首先我们需要初始化Media Foundation,并检查计算机中是否存在摄像头设备。然后,我们通过Media Foundation的API调用来选择摄像头并打开它。接下来,我们可以设置视频和音频的编码格式,如分辨率、帧率、比特率等。然后,我们创建一个用于保存数据的MP4文件,并将摄像头的输出数据流导入到该文件中。 一旦设置完成,我们可以开始采集摄像头的数据。通过Media Foundation提供的API,我们可以不断获得最新的视频帧和音频样本。我们将这些数据写入到MP4文件中,以便保存摄像头的录制内容。在录制过程中,我们还可以进行必要的数据处理和编码操作,以改善视频和音频的质量。 最后,当我们完成摄像头的录制时,我们可以关闭摄像头设备和保存的MP4文件。我们可以继续使用Media Foundation的其他功能,如播放、编辑或转码等,来进一步处理保存的MP4文件。 总而言之,通过使用Media Foundation可以实现摄像头数据的捕捉和保存为MP4格式。这为我们提供了一个强大的工具,来开发各种媒体应用程序和功能,提升用户体验和媒体处理的效率。
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Mark Studio

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值