我在以下简化算法中使用Media Foundation进行视频捕获:
- 调用MFCreateDeviceSource获取捕获源
- 调用MFCreateSourceReaderFromMediaSource创建源阅读器
- 列举源阅读器的格式并选择所需的
- 在IMFSourceReader上设置currentmediatype以设置所需格式。
- 在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包装。