MediaFoundation,位图数组为mp4

时间:2017-06-16 11:12:15

标签: c++ video bitmap mp4 ms-media-foundation

我将位图保持为BYTE数组,它以微软CBitmap类的非常相似和可互换的格式保存每个像素的RGB值。因此,让我们考虑一下我有一个CBitmaps数组,我想用MediaFoundation Transcode Api将它们转换为mp4,如下例所示:toMp4。但是,在此示例中,它们从网址流式传输。

 // Use the source resolver to create the media source
  hr = pResolver->CreateObjectFromURL(pszURL, MF_RESOLUTION_MEDIASOURCE, NULL, &ObjectType, &pSource);

在我的情况下,我的记忆中有我的位图。所以我相信我可以使用这个功能。 IMFSourceResolver::CreateObjectFromByteStream

我不确定这是否可行。作为总结,如何使用转码api将我的CBitmap数组转换为mp4?

1 个答案:

答案 0 :(得分:6)

转码API假定您拥有Media Foundation认可的某种“格式”操作的来源和目的地。也就是说,源和目标都由Media Foundation源和接收器表示,然后API涵盖了将一个源转换为另一个的过程。

不是你的情况。您的来源不是Media Foundation友好的。

对于您的情况,相应的API为Sink Writer。它提供了一个友好的界面,可以将非Media Foundation数据推送到Media Foundation管道,并通过Media Foundation生成编码的视频文件。

也就是说,从图像中获取位图位,将Sink Writer实例配置为接受这种输入格式,然后处理编码。

请参阅Tutorial: Using the Sink Writer to Encode Video了解相应的示例代码和指导。