2008-10-02 15 views
7

El reproductor flash independiente no tiene argumentos distintos de un archivo SWF cuando se lanza desde la línea de comandos. Necesito que el jugador vaya a pantalla completa, sin bordes de ventana y tal. Esto se puede lograr presionando ctrl + f una vez que el programa ha comenzado. Quiero hacer esto programáticamente ya que lo necesito para lanzarlo a pantalla completa sin ninguna interacción humana.lanzamiento de programación independiente reproductor flash de Adobe en Linux/X11

Supongo que necesito alguna forma de obtener un control para la ventana y luego enviar un evento que se parece a la tecla "ctrl + f".

Si hace alguna diferencia, parece que flashplayer es una aplicación gtk y tengo python con pygtk instalado.

ACTUALIZACIÓN (la solución utilicé ... gracias a la respuesta ypnos'):

./flashplayer http://example.com/example.swf & sleep 3 && ~/xsendkey -window "Adobe Flash Player 10" Control+F 
+1

+1 ¡Gran pregunta! :) He estado buscando esto por un tiempo –

Respuesta

7

Puede utilizar una aplicación dedicada que envía la pulsación de tecla al administrador de ventanas, que luego debe pasarlo a flash, si la ventana comienza como la ventana activa en la pantalla. Sin embargo, esto es bastante propenso a errores debido a retrasos entre el inicio del flash y la aparición de la ventana.

Por ejemplo, la secuencia de comandos podría hacer algo como esto: reproductor flash * .swf sueño 3 & & xsendkey Control + F

El xsendkey aplicación se puede encontrar aquí: http://people.csail.mit.edu/adonovan/hacks/xsendkey.html Sin dado una ventana específica, se lo enviará a la ventana raíz, que maneja su administrador de ventanas. También podría intentar averiguar primero la Id. De la ventana, utilizando xprop o algo relacionado con ella.

Otra opción es un administrador de ventanas, que puede recordar su configuración y aplicarla automáticamente. Fluxbos, por ejemplo, proporciona esta característica. Usted puede configurar Fluxbox para hacer la decoración de la ventana-menos y se extienden sobre toda la pantalla, si es compatible con reproductor flash está cambiando el tamaño. Esto tampoco es tan agradable, ya que probablemente afectaría todas las ventanas de flashplayer que abra nunca.

+0

xprop + xsendkey hace el truco. Voy a publicar mi comando bash exacto una vez que obtenga todas las tuberías y awk cosas resueltas para automatizarlo. – afarnham

+1

./flashplayer http://example.com/example.swf y sleep 3 && ~/xsendkey -ventana "Adobe Flash Player 10" Control + F – afarnham

+0

que demoró mucho :) ¡Pero gracias por compartir! – ypnos

1

De hecho, he hecho esto hace mucho tiempo, pero no fue insignificante. Lo que hicimos es utilizar el Sawfish window manager y escribió un gancho para reconocer la ventana reproductor flash, a continuación, quitar todas las decoraciones y encaje en pantalla completa.

Esto puede ser posible sin usar el administrador de ventanas, registrándose para X eventos de creación de ventanas desde una aplicación externa, pero no estoy lo suficientemente familiarizado con X11 para decirle cómo se haría eso.

Otra opción sería escribir una aplicación pygtk que incrustó el reproductor flash independiente dentro de un gtk.Socket y luego cambiar el tamaño de sí mismo. Después de pensarlo un poco, esta podría ser tu mejor opción.

0

He hecho esto usando el openbox utilizando un mecanismo similar al que bmdhacks menciona. Lo que hice nota de esto era que el reproductor flash independiente realizó considerablemente peores pantalla completa que el mismo jugador en una ventana maximizada sin decorar. (que, molestamente, no está correctamente pantalla completa debido a la barra de menú). Me preguntaba si podría ejecutarlo con un tema gtk personalizado para que el menú sea invisible. Sin embargo, eso es solo un problema de rendimiento. Si la pantalla completa actualmente funciona bien, entonces es innecesariamente complicado. Estaba ejecutando un OLPC XO, el rendimiento es más un problema allí.

No tuve mucha suerte con nspluginplayer (creo que demasiado buggy).

Al final tuve el lujo de hacer el flash que se estaba ejecutando, así que simplemente podía colocar el código en el flash. Con un token similar, ya que puede incrustar el flash dentro del flash, debería ser posible hacer un pequeño stub swf que pase a pantalla completa automáticamente y contenga el sfw del objetivo.

0

usted tiene que utilizar la escritura Acton 3 cmd:

stage.displayState = StageDisplayState.FULL_SCREEN; 

Ver Adobe Action Script 3 de programación.

Pero tenga cuidado: en pantalla completa, ¡perderá las interpretaciones de la pantalla!

Tengo este problema ... ¡más bajo Linux!

1

Otra opción sería escribir una aplicación pygtk que incrustó el reproductor de flash independiente dentro de un gtk.Socket y luego cambiar el tamaño de sí mismo. Después de pensarlo un poco, esta podría ser tu mejor opción.

Esto es exactamente lo que hice. Además de eso, mi reproductor escala el contenido del flash a través de Xcomposite, Xfixes y Cairo. Un .deb que incluye fuente python se puede encontrar aquí: http://www.crutzi.info/crutziplayer

Cuestiones relacionadas