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

2023-12-20

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

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

深入研究后我了解到

media_player.get_position()

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

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

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

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

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

Thanks


Using get_position()返回 0.0 到 1.0 之间的值,本质上是当前位置相对于总运行时间的百分比。
相反,你可以使用get_time()它以千分之一秒返回当前位置。
i.e.
print (self.player.get_time()/1000)将在几秒钟内打印当前位置。

您还可以为 vlc 注册回调event EventType.MediaPlayerTimeChanged,正如 @mtz 给出的另一个答案中提到的
IE。 在哪里self.player定义为:

    self.Instance = vlc.Instance()
    self.player = self.Instance.media_player_new()

Then:

    self.vlc_event_manager = self.player.event_manager()
    self.vlc_event_manager.event_attach(vlc.EventType.MediaPlayerTimeChanged, self.media_time_changed)

def media_time_changed(self,event):
    print (event.u.new_time/1000)
    print (self.player.get_time()/1000)
    print (self.player.get_position())
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python VLC - 获取位置轮询率解决方法 的相关文章

随机推荐

  • F#代码引用调用、性能和运行时要求

    这里有 4 个与 F 代码引用深度相关的问题 如何调用 F 代码引用 它的调用方式是否会比普通的旧式 F lambda 效率低 到什么程度 它是否需要对高级反射或代码发出功能的运行时支持 我的目标嵌入式平台通常不存在或禁止这种功能 引文只是
  • 需要SDK版本 >=2.16.0 <3.0.0,版本解析失败

    当前的 Dart SDK 版本是 2 14 4 由于trackkit要求SDK版本 gt 2 16 0 我的 pubspec yaml environment sdk gt 2 16 0 lt 3 0 0 运行 flutter master
  • 在 Three.js 中高效渲染数以万计的可变大小/颜色/位置的球体?

    这个问题是从我的上一个问题中提炼出来的 我发现使用积分会导致问题 https stackoverflow com a 60306638 4749956 https stackoverflow com a 60306638 4749956 为
  • 在android中创建矩形边框进度条

    我想创建一个进度条 应如上图所示 有人有一个想法可以做到这一点 就像一个按钮 但边框就像一个进度条 Thanks 我在这个的帮助下解决了 如何创建 Android 钻石进度条 https stackoverflow com question
  • 在后台线程中运行处理程序消息

    我想在后台线程中运行一些 Runnable 我想使用Handler 因为它方便延迟 我的意思是 handler post runnable delay Where runnable应该运行在背景线 是否可以创建这样的Handler 某处是否
  • 通过快捷键激活扩展

    是否可以通过快捷键打开 启动 google chrome 扩展 例如 我想分配一个快捷方式 比如说 CTRL E打开我的扩展并启动它 以前有人这样做过吗 UPDATE
  • 让 clangd 了解编译器给出的宏

    我有两个从同一源 客户端和服务器 构建的可执行文件 并且它们是使用编译选项构建的 D CLIENT 0 D SERVER 1对于服务器和 D CLIENT 1 D SERVER 0为客户 如果我做类似的事情 if CLIENT Client
  • 如何设置 Paint.setTextSize() 的单位

    是否可以更改单位Paint setTextSize 据我所知 它是像素 但我喜欢在 DIP 中设置文本大小以支持多屏幕 我知道这个主题很旧并且已经得到解答 但我还想建议这段代码 int MY DIP VALUE 5 5dp int pixe
  • 如何在 Android 上实现选项卡之间的滑动?

    Android 4 0 中针对选项卡的关键设计建议之一是允许刷卡 http developer android com design patterns swipe views html between tabs在适当的情况下在它们之间进行
  • 为什么“echo strcmp('60', '100');”在php输出5中?

    PHP 关于这个函数的文档有点稀疏 我读过这个函数比较 ASCII 值 所以 echo strcmp hello hello outputs 0 as expected strings are equal echo hr echo strc
  • MPAndroidChart,如何删除小数百分比并且不显示低于10的百分比?

    我在用MPAndroid图表 https github com PhilJay MPAndroidChart我有两个问题 MPAndroid 饼图 去除小数百分比 饼图上不显示小于 10 的值 但显示切片 只是对于低于 10 的百分比不应显
  • PayPal CreateRecurringPaymentsProfile 账单频率

    我已经设法让我的网站与 paypal billing CreateRecurringPaymentsProfile 一起使用 但是我对以下字段感到困惑 计费周期和计费频率 如果我将第一个设置为每月 第二个设置为 12 希望它每月向我的客户收
  • 在 Area2D 中覆盖 KinematicBody2D 运动?

    I m trying to create a windy area within which the player would be pushed continuously to the left lt 到目前为止 这就是我想出的Windy
  • 将 Oracle 的时间戳转换为纪元中的秒数

    我在 Oracle 数据库的表中存储了一个时间戳 例如 01 03 12 16 13 33 000000000 我想将其转换为自 Unix Epoch 以来的秒数以在查询中返回 最简单的方法是什么 编辑 哦 我需要时间戳精度 不能依赖这里的
  • Swift:创建 UIImage 数组

    使用 Swift 我尝试为简单的动画创建 UIImage 对象数组 上下文帮助animationImages内容为 数组必须包含 UI Image 对象 我尝试按如下方式创建所述数组 但似乎无法获得正确的语法 var logoImages
  • 如何将 CSS 样式应用到元素?

    我是 CSS 新手 不是程序员 我了解什么是类 也了解什么是 div 但我似乎找不到的是如何在特定元素 例如我网站的 div 上设置样式 在你的 HTML 中 div class myClass Look at me div 在你的 CSS
  • 通过蓝牙将 OBDSim 连接到 Windows 上的 Torque

    我正在尝试在 Win7 上安装 OBDSim 但遇到了一些麻烦 我的最终目标是将 OBDSim 作为蓝牙 ELM327 OBDII 模拟器运行 并使用 Android 设备上的 Torque 应用程序连接到它 我在 youtube 上观看了
  • 如何调试从玉石打印对象

    如何调试从玉石打印对象 例如console log 在 JavaScript 中 您可以使用以下命令进行调试console log from jade像这样 div console log the object you want to lo
  • 如何在 Dart 中对末尾为空对象的 List 进行排序

    开始着手 Flutter 进行一个研究项目 我想知道如何对文件列表进行排序 事实上 我的程序有一个包含 4 个文件的列表 初始化如下 List
  • Python VLC - 获取位置轮询率解决方法

    我使用 Python VLC 在 pyqt 中构建自定义播放应用程序 我画了一个漂亮的自定义滑块来跟踪视频 但遇到了一些恼人的问题 无论我多久告诉我的滑块更新一次 它都会出现故障 每 1 4 秒左右跳跃一次 并且看起来不稳定 只是时间线 而