问题描述
我已经看到了其他问题,但是不知何故对我不起作用。 环境:Windows 10 MediaFoundation / SourceReader处于异步模式。LogitechC922网络摄像头1080p专业版。
问题:
-
我正在尝试使用SourceReader在异步模式下使用Media Foundation阅读网络摄像头。我接到
::OnReadSample()
的呼叫频率为60-65毫秒,而不是30fps的33.33毫秒。 -
验证人
hr = m_pReader->GetCurrentMediaType(
(DWORD)MF_SOURCE_READER_FIRST_VIDEO_STREAM,&pType
);
,并且MF_MT_FRAME_RATE
为30 x 1的pType的打印属性。MIN
和MAX RANGE
均为30 x 1。
- 在
::OnReadSample()
回调中得到验证,并且Mediatype相同。没有为MF_SOURCE_READERF_CURRENTMEDIATYPECHANGED
位设置流标志。因此,currentmediatype在内部没有改变。
hr = m_pReader->GetCurrentMediaType(
(DWORD)MF_SOURCE_READER_FIRST_VIDEO_STREAM,&pt
);
- 即使使用
https://docs.microsoft.com/en-us/windows/win32/medfound/how-to-set-the-video-capture-frame-rate上一页的确切功能,但仍每64毫秒左右调用一次。
以下是正在使用的
pType
的快照。
MF_MT_FRAME_SIZE 640 x 480
MF_MT_AVG_BITRATE 147456000
MF_MT_YUV_MATRIX 2
MF_MT_MAJOR_TYPE MFMediaType_Video
MF_MT_VIDEO_LIGHTING 3
MF_MT_DEFAULT_STRIDE 1280
MF_MT_VIDEO_CHROMA_SITING 6
MF_MT_AM_FORMAT_TYPE {F72A76A0-EB0A-11D0-ACE4-0000C0CC16BA}
MF_MT_FIXED_SIZE_SAMPLES 1
MF_MT_VIDEO_NOMINAL_RANGE 2
MF_MT_FRAME_RATE 30 x 1
MF_MT_PIXEL_ASPECT_RATIO 1 x 1
MF_MT_ALL_SAMPLES_INDEPENDENT 1
MF_MT_FRAME_RATE_RANGE_MIN 30 x 1
MF_MT_SAMPLE_SIZE 614400
MF_MT_VIDEO_PRIMARIES 2
MF_MT_INTERLACE_MODE 2
MF_MT_FRAME_RATE_RANGE_MAX 30 x 1
MF_MT_SUBTYPE MFVideoFormat_YUY2
请提出在这种情况下可能缺少的内容。我得到的是15fps,而不是30fps。我已经列举了设备的媒体类型,它支持30fps。
谢谢。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)