我正在使用Python VLC在pyqt中构建自定义播放应用。我画了一个不错的自定义滑块来跟踪视频,但遇到了一个烦人的问题。

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

深入研究,我了解到

media_player.get_position()


轮询率很低。它经常返回相同的值,然后在下一次给出新值时跳跃很多。

因此,现在我运行了一些测试指标,发现它倾向于每0.25-0.3秒更新一次。因此,现在我有了一个系统,该系统基本存储了新值的最后一个值和上次系统时间,以及返回值的最后一个跳转距离,并对这些东西做了一些基本的数学运算,以伪造民意测验之间的线性时间轴数据,从而得出时间轴滑块非常流畅。

问题是这假设我的每0.25-0.3秒的值在机器,硬件,视频的帧速率等之间是一致的。

有人知道更好的解决方法吗?

也许是一种提高VLC轮询率的方法,可以让我从中获得更好的数据-或通过一些更好的数学来处理平滑?

谢谢

最佳答案

尝试改用libvlc_MediaPlayerPositionChangedlibvlc_MediaPlayerTimeChanged媒体播放器事件。

https://www.videolan.org/developers/vlc/doc/doxygen/html/group__libvlc__event.html#gga284c010ecde8abca7d3f262392f62fc6a4b6dc42c4bc2b5a29474ade1025c951d

09-25 20:58