4

任何人都可以澄清以下问题吗?一个像样的源代码片段或示例会很棒,到目前为止我发现的唯一相关示例是 SDK 中的 WavSource。

  1. 原始位图数据如何呈现给编码器?是 (A)RGB 32BPP 还是类似的?

  2. 基于 WavSource 示例,在输入流上调用 RequestSample(),这将返回数据、播放时间和持续时间。所以我会返回一个适当格式化的缓冲区,其播放时间和持续时间为 1 秒?

谢谢。

4

1 回答 1

3

看看这个关于如何编写自定义媒体源的链接:http: //msdn.microsoft.com/en-us/library/windows/desktop/ms700134 (v=vs.85).aspx

基本上原始位图被编码在样本中。您可以简单地为 32 BPP 分配大小为 4*row*height 的样本并传递原始缓冲区。

你可以这样做:

  1. MFCreateMemoryBuffer 创建缓冲区
  2. MFCopyImage 将您的位图复制到缓冲区
  3. MFCreateSample 创建样本

有关编码视频样本,请查看:http: //msdn.microsoft.com/en-us/library/windows/desktop/ee663604 (v=vs.85).aspx

于 2014-06-27T07:07:18.237 回答