Python VLC - 获取位置轮询率解决方法

aes*_*ipt 6 python video vlc playback libvlc

我使用 Python VLC 在 pyqt 中构建自定义播放应用程序。我画了一个漂亮的自定义滑块来跟踪视频,但遇到了一些恼人的问题。

无论我多久告诉我的滑块更新一次,它都会出现故障(每 1/4 秒左右跳跃一次)并且看起来不稳定(只是时间线,而不是视频)。

深入研究后我了解到

media_player.get_position()
Run Code Online (Sandbox Code Playgroud)

投票率相当低。它经常返回相同的值,然后在下次给出新值时跳跃很大。

所以现在我运行了一些测试指标,发现它往往每 0.25-0.3 秒更新一次。所以现在我有一个系统,它基本上存储最后一个值和最后一个新值进入的系统时间,以及返回值中的最后一个跳跃距离,并用这些东西做一些基本的数学运算,以伪造轮询之间正确的线性时间线数据,以生成非常流畅的时间线滑块。

问题是假设我每 0.25-0.3 秒的值在机器、硬件、视频帧速率等方面是一致的。

有谁知道更好的修复方法吗?

也许有一种方法可以提高 VLC 的轮询率,以便为我提供更好的数据 - 或者一些更好的数学来处理平滑?

谢谢