任何人都可以澄清以下问题吗?一个不错的源代码片段或示例会很棒,到目前为止我发现的唯一相关示例是 SDK 中的 WavSource。
如何将原始位图数据呈现给编码器?是 (A)RGB 32BPP 还是类似的?
在 WavSource 示例的基础上,某些东西在输入流上调用 RequestSample(),这会返回数据、播放时间和持续时间。所以我会返回一个播放时间和持续时间为 1 秒的格式合适的缓冲区?
谢谢。
最佳答案
查看此链接以了解如何编写自定义媒体源: http://msdn.microsoft.com/en-us/library/windows/desktop/ms700134(v=vs.85).aspx
基本上,原始位图在示例中进行了编码。您可以简单地为 32 BPP 分配大小为 4*row*height 的样本并传递原始缓冲区。
你可以这样做:
- MFCreateMemoryBuffer 创建缓冲区
- MFCopyImage 将位图复制到缓冲区
- MFCreateSample 创建样本
有关编码视频示例,请查看:http://msdn.microsoft.com/en-us/library/windows/desktop/ee663604(v=vs.85).aspx
关于video - 媒体基金会。使用自定义 IMFMediaSource 从位图编码视频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8851166/