如何为IMFSourceReader设置帧速率

时间:2014-07-15 15:16:05

标签: winapi video video-capture ms-media-foundation

我在以下简化算法中使用Media Foundation进行视频捕获:

  1. 调用MFCreateDeviceSource以获取捕获源
  2. 调用MFCreateSourceReaderFromMediaSource创建源阅读器
  3. 枚举源阅读器的格式并选择所需的
  4. IMFSourceReader上的SetCurrentMediaType设置所需的格式。
  5. 同步调用IMFSourceReader上的ReadSample以获取样本
  6. 问题: 如何设置帧率以使ReadSample以指定的帧速率返回帧?

    我尝试使用MFSetAttributeRatio(格式,MF_MT_FRAME_RATE,num,denom)在4.中设置帧率,但没有运气。似乎有些相机给我30 fps的样本,有些是15 fps,他们不尊重格式设置的fps。我还检查了MF_MT_FRAME_RATE_RANGE_MAX,我的fps有效。

    我在使用DirectShow时获得了30 fps的网络摄像头,格式说它支持30fps。但是我可以使用媒体基金会从中获得15个。

1 个答案:

答案 0 :(得分:0)

为自己找到答案。 无法在IMFSourceReader上设置帧速率。

应该在IMFMediaSource上设置所需的格式,然后用IMFSourceReader包装它。