Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Opengl 如何计算视频的FPS_Opengl_Video_Frame Rate - Fatal编程技术网

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也可能不同,因为需要等待硬件更新和交换缓冲区

你也可以考虑使用而不是<代码>时钟()/<代码>。