Python 如何让VLC闭嘴&x27;什么是预取错误?

Python 如何让VLC闭嘴&x27;什么是预取错误?,python,libvlc,Python,Libvlc,Python 2.7 lib vlc在播放新歌时保持打印[000000000 81257d0]预取流错误:控制中的未实现查询(264) p、 play()导致了这个问题 我在一些地方发现,这个错误实际上毫无意义,而VLC只是毫无理由地输出它。我还没找到解决办法 我发现一些线程解释了如何使用此代码使另一个库的打印静音,但没有任何效果 save_stdout = sys.stdout sys.stdout = io.BytesIO() self.p.play() sys.stdout = save_

Python 2.7 lib vlc在播放新歌时保持打印
[000000000 81257d0]预取流错误:控制中的未实现查询(264)

p、 play()导致了这个问题

我在一些地方发现,这个错误实际上毫无意义,而VLC只是毫无理由地输出它。我还没找到解决办法

我发现一些线程解释了如何使用此代码使另一个库的打印静音,但没有任何效果

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

由于没有结果,有没有办法阻止vlc向控制台发送带有预取错误的垃圾邮件?

我查看了vlc源代码,生成了有问题的错误消息,并将其写入stderr。这意味着两件事:

  • 重定向stdout将不起作用,因为stdout和stderr使用不同的文件句柄
  • Python级别的重定向将不起作用,因为Python的sys.stderr只包装C级别的stderr;它不会改变它
  • 要使其工作,您需要在C级别重定向stderr。Eli Bendersky有一个关于在Python中重定向C级标准输出的概念;也许您可以将该代码改编为stderr,并使用python2

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

    您确定此错误正在打印到
    stdout
    而不是
    stderr
    ?我运行了此命令,除了打开VLC,它似乎没有更改任何内容,甚至没有发送任何内容。因为我没有从我的代码中运行VLC可执行文件,有没有办法保存它呢?根据上面提到的博客文章,Min RK制作了一个包,很好地解决了这个问题