我将位图保持为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?
答案 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了解相应的示例代码和指导。