多媒体播放器如何计算帧率?

时间:2013-12-30 21:10:30

标签: windows winapi timer multimedia

wmplayer.exe,realplayer.exe和vlc.exe等多媒体播放器用于计算帧率的常见或不寻常方式有哪些?我在一些书中读到,多媒体播放器通常依赖于windows api,如timeGetTime,QueryPerformanceCount,GeTickCount来计算帧率,但使用SetTimer来实现它是否实用?如果没有,他们用其他方式来计算帧率?我想为这些玩家编写通用播放速度控制器,但不确定wmplayer或realplayer是如何做到的。

p.s:我通过反复试验发现vlc.exe使用timeGetTime()。

1 个答案:

答案 0 :(得分:1)

流媒体内容的播放器通常不需要计算帧速率,因为它是由输入信号定义的。视频输入通常是带时间戳的视频帧流,播放器的责任是准时呈现单个视频帧。

此等式中没有帧速率,播放器需要将单个帧时间与当前时钟时间相匹配。参考时钟可以是系统时间,也可以是硬件设备时钟。通常使用音频输出设备作为参考时钟或视频输出设备(如果它不是显示器)。

如果输入速率是可变的,或者您希望获得有效的演示帧速率,那么您不需要太高的准确度,因为您只需要在过去N秒内显示的帧的运行平均值({{1准确性对于这一点已经绰绰有余了,即使它的使用也没有问题,GetTickCount也没有必要; timeGetTime会给出最差的准确性,因为它没有被设计/预期保持完全实时长时间间隔。)