Программный запуск автономного проигрывателя Adobe Flashplayer в Linux / X11 - PullRequest
7 голосов
/ 03 октября 2008

Автономный flashplayer не принимает никаких аргументов, кроме файла .swf, когда вы запускаете его из командной строки. Мне нужен плеер, чтобы перейти на полный экран, без оконных рамок и тому подобное. Это можно сделать, нажав Ctrl + F после запуска программы. Я хочу сделать это программно, так как мне нужно, чтобы он запускался в полноэкранном режиме без какого-либо взаимодействия с человеком.

Я предполагаю, что мне нужно как-то получить дескриптор окна и затем отправить ему событие, которое выглядит как нажатие клавиши "ctrl + f".

Если это имеет какое-то значение, похоже, что flashplayer - это приложение gtk, и у меня установлен python с установленным pygtk.

ОБНОВЛЕНИЕ (решение, которое я использовал ... благодаря ответу ypnos):

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

Ответы [ 6 ]

7 голосов
/ 03 октября 2008

Вы можете использовать специальное приложение, которое отправляет нажатие клавиши в диспетчер окон, который затем должен передавать его на флэш-память, если окно запускается как активное окно на экране. Это довольно подвержено ошибкам из-за задержек между запуском вспышки и появлением окна.

Например, ваш скрипт может сделать что-то вроде этого: flashplayer * .swf sleep 3 && xsendkey Control + F

Приложение xsendkey можно найти здесь: http://people.csail.mit.edu/adonovan/hacks/xsendkey.html Без указания конкретного окна оно отправит его в корневое окно, которое обрабатывается вашим оконным менеджером. Вы также можете сначала попытаться выяснить идентификатор окна, используя xprop или что-то связанное с ним.

Другим вариантом является оконный менеджер, который может запомнить ваши настройки и автоматически применить их. Например, Fluxbos предоставляет эту функцию. Вы можете настроить fluxbox, чтобы сделать Window без декора, и растянуть его по всему экрану, если flashplayer поддерживает изменение размера. Это также не так приятно, так как это может повлиять на все окна флешплеера, которые вы когда-либо открывали.

1 голос
/ 04 июня 2012

Другой вариант - написать приложение pygtk, которое встроит автономный флеш-плеер в gtk.Socket, а затем изменит свой размер. Подумав немного, это может быть вашим лучшим выбором.

Это именно то, что я сделал. В дополнение к этому мой плеер масштабирует флэш-контент через Xcomposite, Xfixes и Cairo. .Deb, включая исходный код Python, можно найти здесь: http://www.crutzi.info/crutziplayer

1 голос
/ 10 ноября 2008
nspluginplayer --fullscreen src=path/to/flashfile.swf

из проекта [http://gwenole.beauchesne.info//en/projects/nspluginwrapper](nspluginwrapper)

1 голос
/ 03 октября 2008

Я на самом деле сделал это давным-давно, но это было не мелочно. Мы использовали оконный менеджер Sawfish и написали хук, чтобы распознать окно flashplayer, затем убрать все украшения и щелкнуть его на весь экран.

Это может быть возможно без использования диспетчера окон, путем регистрации событий создания окна X из внешнего приложения, но я не достаточно знаком с X11, чтобы рассказать вам, как это будет сделано.

Другой вариант - написать приложение pygtk, которое встроит автономный флеш-плеер в gtk.Socket, а затем изменит свой размер. Подумав немного, это может быть вашим лучшим выбором.

0 голосов
/ 22 октября 2010

Вы должны использовать скрипт Acton 3 cmd:

stage.displayState = StageDisplayState.FULL_SCREEN;

См. Программирование в Adobe Action script 3.

Но будьте осторожны: на полном экране вы потеряете характеристики дисплея!

У меня есть эта проблема ... больше под Linux !!!

0 голосов
/ 17 февраля 2010

Я сделал это, используя openbox, используя механизм, аналогичный тому, который упоминает bmdhacks. Из того, что я заметил, было то, что автономный флеш-плейер работал в полноэкранном режиме значительно хуже, чем тот же плейер в развернутом неокрашенном окне. (что, к сожалению, не является полноэкранным из-за меню). Мне было интересно запустить его с пользовательской темой gtk, чтобы сделать меню невидимым. Это просто проблема с производительностью. Если полноэкранный режим в настоящее время работает нормально, то это неоправданно сложно. Я работал на OLPC XO, там больше проблемы с производительностью.

Мне не очень повезло с nspluginplayer (я думаю, он слишком глючит).

В конечном счете, мне выпала роскошь создавать работающую вспышку, чтобы я мог просто поместить код в саму вспышку. Аналогичным образом, поскольку вы можете вставлять флэш-память во флэш-память, можно создать небольшую заглушку swf, которая автоматически откроется в полноэкранном режиме и содержит целевой sfw.

...