vlc mac python绑定没有视频输出

时间:2013-08-19 07:21:30

标签: python macos video vlc corrupt

我正在使用vlc python绑定来播放视频。然后我收到了这些错误:

[0x3d0c58] main window error: corrupt module: /Applications/VLC.app/Contents/MacOS/plugins/libmacosx_plugin.dylib
[0x3c9af8] vout_macosx vout display error: No drawable-nsobject nor vout_window_t found, passing over.
[0x3178a98] main video output error: video output creation failed
[0xa48c98] main decoder error: failed to create video output

视频不会显示。但是音频还可以,我可以毫无问题地听到音频。我还可以调用所有其他python vlc函数,如play(),pause(),......没有问题。没有视频。

它是VLC 2.0.8 32位,OSX 10.8.4 64位,python是3.3.2 32位。直接使用VLC播放任何视频都没有问题。这只发生在我使用python命令行时。

然而,我在Windows 7中做了同样的事情,一切都很完美。那么这只是一个mac问题吗?

我从http://liris.cnrs.fr/advene/download/python-ctypes/

下载我的python vlc绑定

2 个答案:

答案 0 :(得分:1)

上述解决方案(使用-I macosx)可以工作,因为它启动了一个接口,该接口为vout_macosx模块提供了NSObject(macosx窗口句柄)。从libvlc启动时,默认情况下不存在此类接口/窗口。它适用于其他平台,因为视频输出模块知道如何创建自己的窗口,但在macosx上不是这样。

您有两个选择:

  • 在macosx中创建一个窗口(使用本机cocoa API或像Qt这样的小部件库),并通过set_nsobject()方法传递其引用

  • 安装XQuartz X11服务器并使用x11视频输出模块(不是很满意也不高效,但有效)

答案 1 :(得分:1)

在调用player.play()之前,只需输入一些这样的代码。正如Oliver的评论所提到的,你需要创建一个Window并将其传递给VLC。

我还没有在任何其他平台上进行过测试,但听起来这在其他平台上并不需要,尽管我用于灵感的github上的代码似乎有系统特定的代码。

    if sys.platform == "darwin":
        from PyQt4 import QtCore
        from PyQt4 import QtGui
        import sys

        vlcApp =QtGui.QApplication(sys.argv)
        vlcWidget = QtGui.QFrame()
        vlcWidget.resize(700,700)
        vlcWidget.show()
        player.set_nsobject(vlcWidget.winId())

    player.play()