Vlc Mac Python enlace sin salida de video

Estoy usando el enlace vlc python para reproducir un video. Entonces me dieron estos errores:

[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 

El video no se mostrará. Sin embargo el audio está bien, puedo escuchar el audio sin problema. Y también puedo llamar a todas las otras funciones de python vlc como play (), pause (), … sin ningún problema. Simplemente no hay video.

Es VLC 2.0.8 32 bits, OSX 10.8.4 64 bits y python es 3.3.2 32 bits. Usar VLC directamente no tiene problemas para reproducir cualquier video. Esto solo sucede cuando uso la línea de comandos de python.

Sin embargo, hice lo mismo en Windows 7, todo funciona perfectamente. Entonces, ¿esto es solo un problema de Mac?

Descargo mis enlaces de Python vlc desde: http://liris.cnrs.fr/advene/download/python-ctypes/

La solución mencionada (use -I macosx) funciona porque lanza una interfaz, que proporciona un NSObject (identificador de ventana de macosx) al módulo vout_macosx. Cuando se ejecuta desde libvlc, no existe dicha interfaz / ventana de forma predeterminada. Funciona en otras plataformas porque los módulos de salida de video saben cómo crear sus propias ventanas, pero no es así en macosx.

Tienes 2 opciones:

  • cree una ventana en macosx (usando la API de cocoa nativa o un widget lib como Qt), y pase su referencia a través del método set_nsobject ()

  • instale el servidor XQuartz X11 y use el módulo de salida de video x11 (no es muy satisfactorio ni eficiente, pero funciona)

Simplemente ponga un código como este justo antes de llamar a player.play (). Como lo mencionó el comentario de Oliver, debe crear una ventana y pasarla a VLC.

Todavía no he probado en ninguna otra plataforma, pero parece que esto no es necesario en otras plataformas, aunque el código en github que usé para inspirarme parece tener un código específico del sistema.

  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()