如何设置IMFSourceReader的帧率



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

  1. 调用MFCreateDeviceSource获取捕获源
  2. 调用MFCreateSourceReaderFromMediaSource创建源阅读器
  3. 列举源阅读器的格式并选择所需的
  4. 在IMFSourceReader上设置currentmediatype以设置所需格式。
  5. 在IMFSourceReader上同步调用ReadSample获取样本

问题:如何设置帧率,使ReadSample将返回帧在指定的帧率?

我尝试将帧率设置为4。与MFSetAttributeRatio(format, MF_MT_FRAME_RATE, num, dom)没有运气。似乎有些相机给我的样本是30 fps,有些是15 fps,他们不尊重格式设置的fps。我还检查了MF_MT_FRAME_RATE_RANGE_MAX和我的fps是有效的。

我有一个网络摄像头,当使用DirectShow和格式说它支持30fps时,它给了我30帧。但是使用Media Foundation只能得到15个

为自己找到了答案。不能在IMFSourceReader上设置帧率

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

最新更新