试图模拟恒定字节率。与睡眠时间混淆

试图模拟恒定字节率。与睡眠时间混淆,第1张

试图模拟恒定字节率。与睡眠时间混淆 结论

感谢@JFSebastian和他的代码,我了解到:

  • 最好使用截止日期作为时间参考,而不是在每个循环中创建新的参考
  • 使用截止日期可以使time.sleep的不精确度“摊销”,使比特率在所需的比特率附近振荡,但会得出正确的(并且要更稳定)的平均值。
  • 您只需要使用一次time.time(),这意味着更少的计算误差。

结果,我有时会以恒定的32000 B / s振荡到31999,很少会振荡到31745。
现在我可以听到音乐而没有任何滞后或抖动!

我尝试仅使用

%
运算符来使用@JFSebastian强制执行来使其余部分休眠,但KB /
s奇怪地波动,因此我决定保留最后期限实施,因为通过增加浮点值会造成不精确性。但是,总体结果足以满足我的需求。
谢谢大家。

最终密码
def read(self):    self.deadline += 0.020      delay = self.deadline - time.perf_counter()    if delay > 0:        time.sleep(delay)    return self._read()


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5632442.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存