[eside-ghost] Sigo teniendo problemas con el phonon

Sergio sergios.weblog en gmail.com
Vie Ene 22 20:04:56 CET 2010


Hola,

Ya hace unos cuantos días que escribí este correo pero quería
agradecerle a Alfredo la información que me dio y escribir un poco las
conclusiones a las que he llegado hasta ahora por si acaso a alguno le
pueden ser de ayuda.

El jue, 14-01-2010 a las 18:47 +0100, Alfredo Beaumont escribió:
> Dijous 14 Gener 2010(e)an, Sergio Salas(e)k idatzi zuen:
> > Hola a todos otra vez,
> > 
> > - Cuando ejecuto la aplicación y visualizo un vídeo, al cerrar la
> >  aplicación esta no termina totalmente. Me explico, cierro la ventana
> >  principal pero en el administrador de tareas de Windows me sigue
> >  apareciendo que la aplicación está corriendo. Esto nunca me había sucedido
> >  hasta que no he metido la parte que usa phonon y de hecho si abro la
> >  aplicación y hago otras cosas que no sean mostrar el vídeo al cerrar la
> >  ventana principal la aplicación termina de forma normal. Me imagino por
> >  tanto que pueda ser algo que solo sucede una vez que el plugin del phonon
> >  se ha cargado, y por tanto he intentado descargarlo a mano antes de salir
> >  de la aplicación (he usado
> > QPluginLoader::Unload) pero ni caso.
> 
> Suena raro, quizás sea algún tema específico de windows... así a bote pronto 
> sólo se me ocurre que tengas la propiedad quitOnLastWindowClosed a false... 
> aunque es poco probable. Prueba a poner app.setQuitOnLastWindowClosed(true);

Esto si que es un tema específico de Windows ya que en Linux la
aplicación se cerraba correctamente. Al final me parece que hay algún
tipo de error en el backend para Windows porque usando directamente la
clase videoplayer me fallaba como he descrito pero si hago:

mediaObject = new Phonon::MediaObject(this);
audioOutput = new Phonon::AudioOutput(Phonon::VideoCategory, this);
Phonon::createPath(mediaObject, audioOutput);
videoWidget = new Phonon::VideoWidget(this);
Phonon::createPath(mediaObject, videoWidget);
videoWidget->setGeometry(180,0,529,356);

mediaObject->setCurrentSource(Phonon::MediaSource(camImages[selectedCam]));
mediaObject->play();

que en principio yo creía que es lo que internamente hace la clase
videoPlayer resulta que funciona sin problemas.

> 
> > - En segundo lugar la aplicación me muestra el vídeo correctamente en la
> > máquina en la que estoy programando pero cuando intendo hacer un instalador
> > y llevarmela a otra máquina el vídeo no aparece. El instalable está
> > preparado para cargar en el mismo directorio que el ejecutable las
> >  librerías Qt que estoy usando (QtCore, QtGui, phonon) y también he metido
> >  el backend del phonon en un subdirectorio llamado "plugins/backend" e
> >  indicado a la aplicación que lo busque ahí. De hecho me imagino que el
> >  backend lo está encontrando ya que el audio del vídeo si puedo escucharlo,
> >  es solo la imagen la que no aparece. ¿Alguien sabe si hay alguna
> >  dependencia o algún codec a incluir?
> 
> El problema puede venir por los codecs sí. Al fin y al cabo, phonon no incluye 
> 'codecs' (ni siquiera un backend), por lo que los multimedia que mostrará tu 
> aplicación dependerá de los codecs que tenga instalado en su ordenador. 
> Supongo que puedes incluir codecs, pero no tiene mucho sentido si no incluyes 
> también un backend que lo pueda usar, no? No sé si en windows ya hay un 
> backend por defecto (supongo que la docu de phonon tratará el tema), y no sé 
> si eso el tema de distribuir codecs te puede dar problemas legales...
> 

El backend para el phonon que viene junto con las librerías para ser
usado en Windows se apoya en DirectShow.Después de muchas pruebas he
descubierto que el problema no estaba en los codecs sino que tal y como
he compilado las librerías (con las opciones por defecto) el backend
generado espera que el sistema tenga soporte para Direct3D. Esto es
normal en cualquier ordenador de hoy en día pero resulta que dos de los
sistemas en los que estaban probando eran un PanelPC basado en un
GeodeLX y una máquina virtual con VirtualBox que tampoco tiene soporte
Direct3D y era en esos dos en los que me daba el mismo problema. Así que
ahora estoy tratando de volver a compilar las librerías con la opción
"-no-direct3d" para ver si con el backend generado se resuelven los
problemas.

> A ver si suena la flauta y te he podido ayudar.
> 
> Un saludo
> _______________________________________________
> eside-ghost mailing list
> eside-ghost en listas.deusto.es
> https://listas.deusto.es/mailman/listinfo/eside-ghost




Más información sobre la lista de distribución eside-ghost