Надеюсь, это поможет.Это рутина, которую я написал много месяцев назад, чтобы получить частоту кадров видео, которое я транслировал.Работает для различных типов носителей, но вы должны быть в состоянии выяснить, как поддерживать другие типы носителей с этим, если вам нужно.См. Страницу MSDN на AM_MEDIA_TYPE для получения дополнительной информации.
inline static void GetVideoFramesPerSecond( const AM_MEDIA_TYPE * pVT, long *plFramesPerSecond )
{
long nTenMillion = 10000000;
long lAvgFrameDuration = 0;
if( pVT->formattype == FORMAT_VideoInfo || pVT->formattype == FORMAT_MPEGVideo )
lAvgFrameDuration = (LONG) ((VIDEOINFOHEADER *)(pVT->pbFormat))->AvgTimePerFrame;
else if( pVT->formattype == FORMAT_VideoInfo2 || pVT->formattype == FORMAT_MPEG2_VIDEO )
lAvgFrameDuration = (LONG) ((VIDEOINFOHEADER2 *)(pVT->pbFormat))->AvgTimePerFrame;
*plFramesPerSecond = ( lAvgFrameDuration != 0 ) ? ((long)( nTenMillion / lAvgFrameDuration )) : 0;
}