【发布时间】:2012-04-20 07:15:51
【问题描述】:
我正在使用 Windows Media Foundation 来处理我的网络摄像头。我已经能够成功地从网络摄像头检索数据样本并确定格式为 RGB24。现在我想将单帧保存为位图。下面是我用来从网络摄像头读取样本的一小段代码。
IMFSample *pSample = NULL;
hr = pReader->ReadSample(
MF_SOURCE_READER_ANY_STREAM, // Stream index.
0, // Flags.
&streamIndex, // Receives the actual stream index.
&flags, // Receives status flags.
&llTimeStamp, // Receives the time stamp.
&pSample // Receives the sample or NULL.
);
那么,一旦我用 IMFSample 填充了 pSample,我该如何将其保存为位图?
【问题讨论】:
-
使用 IMFSample::ConvertToContinuousBuffer() 获取 IMFMediaBuffer 接口指针。对 IMF2DBuffer 进行质询。然后使用它的 Lock2D() 方法获取指向像素数据的指针。
-
我现在可以做到这一点。有关如何将 IMF2DBuffer 保存到位图文件的任何指示?我正在四处寻找,但还没有找到解决方案。
-
不管我设法拼凑了一些东西。在删除一些讨厌的内容后,我将发布我的代码示例作为答案。
标签: visual-c++ ms-media-foundation