2010-09-15 15 views

Respuesta

2

Probablemente la forma más fácil es crear un filtro SampleGrabber con una devolución de llamada personalizados, y calcular por sí mismo.

Ver:

ISampleGrabber

ISampleGrabber::SetCallback

ISampleGrabberCB

Cada vez que su función de devolución de llamada, que han recibido un nuevo marco. Probablemente deberías poner esto justo antes del renderizador.

Además, dependiendo de su gráfico, algunos filtros podrían tener información sobre la velocidad de cuadros, pero el método SampleGrabber funcionaría con cualquier gráfico.

1

No todos los videos tienen un FPS constante, por lo que utilizar el capturador de muestras es el método más preciso, aunque no el más fácil. Si conoce el formato de su video y está seguro de que tiene FPS constantes, puede obtener su filtro de transformación o procesador, obtener uno de sus pines, llamar a IPin :: ConnectionMediaType, ver el tipo de formato del tipo de medio, ya sea FORMAT_VideoInfo o FORMAT_VideoInfo2 , envíe el puntero de formato a VIDEOINFOHEADER o VIDEOINFOHEADER2 en consecuencia y observe el campo AvgTimePerFrame.

2

Espero que esto ayude. Es una rutina que escribí hace muchas lunas para obtener el FPS del video que estaba transmitiendo. Funciona para varios tipos de medios, pero debe ser capaz de averiguar cómo admitir otros tipos de medios con esto si lo necesita. Consulte la página de MSDN en AM_MEDIA_TYPE para obtener más información.

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; 
} 
Cuestiones relacionadas