如何让VLC关闭其预取错误?

时间:2019-04-29 05:20:06

标签: python libvlc

每播放一首新歌曲,Python 2.7 lib-vlc就会继续打印[00000000081257d0] prefetch stream error: unimplemented query (264) in control

p.play()导致此问题。

我在一些地方发现此错误实际上没有任何意义,而且VLC似乎无缘无故输出它。我还没有找到解决方法。

我发现了一些线程来说明如何使用此代码使另一个库的打印文件静音,但这没有任何作用。

save_stdout = sys.stdout
sys.stdout = io.BytesIO()
self.p.play()
sys.stdout = save_stdout

由于没有结果,是否有任何方法可以防止vlc阻止带有预取错误的控制台垃圾邮件?

2 个答案:

答案 0 :(得分:1)

我看了一下VLC源代码,有问题的错误消息生成了in the C code,并写入了stderr。这意味着两件事:

  1. 重定向stdout无效,因为stdout和stderr使用不同的文件句柄。
  2. 在Python级别上重定向将不起作用,因为Python的sys.stderr仅包装了C级stderr。它不会改变它。

要使其工作,您需要在C级别重定向stderr。 Eli Bendersky有great writeup关于在Python中重定向C级标准输出的信息;也许您可以将该代码改编为stderr,并与Python 2一起使用。

答案 1 :(得分:0)

Console logger (console)
  -q, --quiet, --no-quiet        Be quiet
                                 (default disabled)
          Turn off all messages on the console.

https://wiki.videolan.org/VLC_command-line_help/