MediaFoundation,位图数组到 mp4

MediaFoundation, bitmap array to mp4

我将位图保存为 BYTE 数组,它以与 Microsoft 的 CBitmap class 非常相似且可互换的格式保存每个像素的 RGB 值。因此,让我们考虑一下我有一个 CBitmap 数组,我想使用 MediaFoundation Transcode Api 将它们转换为 mp4,如本例所示:toMp4。然而,在这个例子中,它们来自 url.

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

就我而言,我的位图在内存中。所以我相信我可以改用这个功能。 IMFSourceResolver::CreateObjectFromByteStream

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

转码 API 假定您拥有媒体基础识别的某些 "format" 操作的源和目标。也就是说,source 和 destination 都由 Media Foundation sources 和 sinks 表示,然后 API 涵盖了将一个转换为另一个的过程。

你的情况不是这样。您的来源对媒体基金会不友好。

对于您的情况,合适的 API 是 Sink Writer。它提供了一个友好的接口来将非媒体基础数据推送到媒体基础管道,并通过媒体基础生成编码的视频文件。

也就是说,您从图像中获取位图位,将 Sink Writer 实例配置为接受此类输入格式,然后由它负责编码。

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