多媒体播放器如何计算帧率? [关闭]

问题描述 投票:0回答:1

[wmplayer.exe,realplayer.exe和vlc.exe等多媒体播放器用于计算帧速率的常见或不寻常的方式有哪些?我已经读过一些书籍,多媒体播放器通常依赖于Windows API,例如timeGetTime,QueryPerformanceCount,GeTickCount来计算帧速率,但是使用SetTimer实用吗?如果没有,他们还使用其他什么方法来计算帧速率?我想为这些播放器编写通用播放速度控制器,但不确定wmplayer或realplayer是如何做到的。

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

windows winapi timer multimedia
1个回答
1
投票

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

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

如果输入速率是可变的,或者您想要获得有效的演示帧速率,则不需要太多的准确性,因为您想要的只是最近N秒钟内显示的帧的运行平均值(GetTickCount精度对此已绰绰有余,即使也可以使用timeGetTime,也不需要它; QueryPerformanceCounter将给出最差的精度,因为它没有被设计/预期为不能长时间长时间保持实时。 >

© www.soinside.com 2019 - 2024. All rights reserved.