Opengl 如何计算视频的FPS
我有一个视频解码器。使用Opengl 如何计算视频的FPS,opengl,video,frame-rate,Opengl,Video,Frame Rate,我有一个视频解码器。使用openGL我正在使用glfw库在屏幕上渲染解码的帧。我必须在解码器解码和渲染帧时显示FPS。我知道如何在屏幕上显示一些东西 What i know: 我知道解码每一帧所花的时间。i、 e.我在解码函数和显示函数之前和之后放置了一个clock()函数。也就是说,我知道解码和显示每帧所需的时间(比如x毫秒)。现在使用这些数据,我需要计算视频的FPS并显示它 What i tried: Time taken to decode a 1 frame=x milli seco
openGL
我正在使用glfw
库在屏幕上渲染解码的帧。我必须在解码器解码和渲染帧时显示FPS。我知道如何在屏幕上显示一些东西
What i know:
我知道解码每一帧所花的时间。i、 e.我在解码函数和显示函数之前和之后放置了一个clock()函数。也就是说,我知道解码和显示每帧所需的时间(比如x毫秒)。现在使用这些数据,我需要计算视频的FPS并显示它
What i tried:
Time taken to decode a 1 frame=x milli seconds
How many frames are decoded (y) in 1 second (this is the definition of FPS)
因此,FPS=1*1/(x*milli)
=>FPS=1000/x
所以我用上面的公式计算并显示每一帧。但经过核实,我知道这是错误的。有人能告诉我上面的方法有什么问题吗?当我知道解码每帧所需的时间时,如何实时计算FPS?一般来说,您使用的方法是正确的。它确实假设每个帧解码和显示所需的时间相同,这可能会导致精确的每帧定时不准确。解码部分的计时将告诉您解码帧所需的时间,但您的OpenGL计时可能不准确,除非您包含
glFinish
,这保证OpenGL在调用glFinish
之前已完成所有OpenGL调用的提交和执行
如果在解码部分的开始处放置一个
clock()
,然后在调用glFinish
后放置另一个,则应获得更准确的计时。每个帧可能需要不同的时间,因此FPS可能会波动。此外,如果要同步到垂直回溯,FPS也可能不同,因为需要等待硬件更新和交换缓冲区你也可以考虑使用而不是<代码>时钟()/<代码>。