LINUX.ORG.RU

FreshPlayerPlugin — PepperFlash в Firefox

 , , , , ppapi


55

41

Flash плеер всё заменяют и заменяют, но никак не заменят полностью. Новые и сверхновые фичи браузеров это замечательно, но Flash бывает всё ещё нужен. К сожалению, доступная NPAPI браузерам версия застыла на 11.2, а новые версии выходят только в составе Chrome. Поэтому я делаю адаптер, который сможет быть посредником между PPAPI плагином и NPAPI браузером. Это такая штука, которая позволит использовать свежий Flash в Firefox, Opera и других браузерах, в которых работают плагины.

https://github.com/i-rinat/freshplayerplugin

★★★★★

Последнее исправление: i-rinat (всего исправлений: 6)
Ответ на: комментарий от i-rinat

C обычным флешем у меня во время прокрутки или перемещения окна мерцает видео, с твоим такого нет. Но зато кешируется очень медленно. Секунда видео - кеширование и т.д.

afterlanding ★★
()
Ответ на: комментарий от proud_anon

ну, тут кто для чего флеш использует

мне он нужен для youtube/vimeo/... , где уже есть нормальный html5

собственно, flash использую крайне редко, когда это реально нужно. Старые версии пока справлялись

relocated full screen mode warning to the top

обычный перенос предупреждения? тю...

reprimand ★★★★★
()
Ответ на: комментарий от reprimand

а чем новые версии флеша в хроме лучше 11.2?

Для меня на глаз лучше тем, что рендеринг шрифтов лучше. Еще на некоторых сайтах падинг плавает не так как надо. Возможно еще есть мелкие ляпы, но для меня этого достаточно. Более того есть большая вероятность того, что после окончания поддержки используемые библиотеки сменят API и его использование станет не возможным.

vitalikp
()
Ответ на: комментарий от reprimand

тогда я не вижу смысла работы... или я чего-то не догоняю?

Обязательно должен быть смысл? Лично мне нужно, чтобы все встроенные ролики с youtube использовали аппаратное ускорение. С 11.2 это не получается сделать даже userscript'ами. Возможно, это получилось бы сделать переходником, который подсовывает плагину невидимое окно для рисования, но как-то не вышло. Тем более, если делать переходник, почему бы не взять сразу PepperFlash? Ну и сам процесс разработки интересен, учусь.

Я не совсем понимаю столь внезапный интерес. Не жалуюсь, конечно, моё ЧСВ очень радо. Просто сама задача «получить свежий Flash» уже решена в рамках проекта Pipelight.

i-rinat ★★★★★
() автор топика
Ответ на: комментарий от i-rinat

давно на ЛОРе не встречал столь адекватного комментария... )
спасибо за Pipelight, надо будет глянуть, что за зверь.

З.Ы. а, блин, там через вайн (да еще и патченный) какая-то канитель. Твой лучше )

Gonzo ★★★★★
()
Последнее исправление: Gonzo (всего исправлений: 2)
Ответ на: комментарий от i-rinat

Просто сама задача «получить свежий Flash» уже решена в рамках проекта Pipelight.

Путём исполнения виндового плагина через пропатченный Wine. Не самый простой способ...

Кстати, я и не знал, что он теперь Flash поддерживает, думал, только сервелат.

proud_anon ★★★★★
()
Ответ на: комментарий от proud_anon

Путём исполнения виндового плагина через пропатченный Wine. Не самый простой способ...

Говорят, работает. А на детали реализации обращают внимание только когда что-нибудь идёт не так.

i-rinat ★★★★★
() автор топика
Ответ на: комментарий от i-rinat

на самом деле, я давно хотел как-то изучить вопрос разработки плагинов под браузеры
ибо мне лично нужен простейший плагин, который блокирует флеш, граббит ссылку на ютубе, и запускает mpv/vlc/etc, которые умеют без костылей играть видео (с аппаратным ускорением!)

reprimand ★★★★★
()
Ответ на: комментарий от reprimand

Старые версии пока справлялись

На самом деле, совсем не всегда справляются. Сейчас прохожу онлайн курсы - обе используемые площадки для вебинаров требуют версии флеш более 11.2

Qwentor ★★★★★
()

На одном из сайтов слетела проверка наличия плагина флеш. Думаю после этого комита https://github.com/i-rinat/freshplayerplugin/commit/0e92b6062b8aa11ae4f2d7dfa....

вот часть javascript, делающий проверку.

// JavaScript helper required to detect Flash Player PlugIn version information
function GetSwfVer(){
	// NS/Opera version >= 3 check for Flash plugin in plugin array
	var flashVer = -1;
	
	if (navigator.plugins != null && navigator.plugins.length > 0) {
		if (navigator.plugins["Shockwave Flash 2.0"] || navigator.plugins["Shockwave Flash"]) {
			var swVer2 = navigator.plugins["Shockwave Flash 2.0"] ? " 2.0" : "";
			var flashDescription = navigator.plugins["Shockwave Flash" + swVer2].description;
			var descArray = flashDescription.split(" ");
			var tempArrayMajor = descArray[2].split(".");			
			var versionMajor = tempArrayMajor[0];
			var versionMinor = tempArrayMajor[1];
			var versionRevision = descArray[3];
			if (versionRevision == "") {
				versionRevision = descArray[4];
			}
			if (versionRevision[0] == "d") {
				versionRevision = versionRevision.substring(1);
			} else if (versionRevision[0] == "r") {
				versionRevision = versionRevision.substring(1);
				if (versionRevision.indexOf("d") > 0) {
					versionRevision = versionRevision.substring(0, versionRevision.indexOf("d"));
				}
			} else if (versionRevision[0] == "b") {
				versionRevision = versionRevision.substring(1);
			}
			var flashVer = versionMajor + "." + versionMinor + "." + versionRevision;
		}
	}
	// MSN/WebTV 2.6 supports Flash 4
	else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.6") != -1) flashVer = 4;
	// WebTV 2.5 supports Flash 3
	else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.5") != -1) flashVer = 3;
	// older WebTV supports Flash 2
	else if (navigator.userAgent.toLowerCase().indexOf("webtv") != -1) flashVer = 2;
	else if ( isIE && isWin && !isOpera ) {
		flashVer = ControlVersion();
	}
	return flashVer;
}

А касательно тикета https://github.com/i-rinat/freshplayerplugin/issues/11 думаю у него не установлен корретно плагин в браузер. Он даже браузер не указал.

vitalikp
()
Ответ на: комментарий от vitalikp

вернул версию на старое место проверка заработала.

vitalikp
()
Ответ на: комментарий от vitalikp

Похоже, придётся маскироваться под Flash не оставляя намёков.

i-rinat ★★★★★
() автор топика
Ответ на: комментарий от vitalikp

проблема со звуком ушла. запоздание выходит максимум 1-2 секунды. но думаю это нормально.

появилась небольшая проблема с графикой. на одной сайте (игрушка)) графика перерисовывается с задержкой. когда репортил про звук, такого не было.

наверно надо конфиг настроить, там появились новые параметры? Или с чем это может быть связано?

vitalikp
()
Ответ на: комментарий от vitalikp

похоже грузится проц, показывает 100-112% на процес плагина(top).

у меня 8 ядер, на одном показывает загрузку до 74-80%.

vitalikp
()
Ответ на: комментарий от vitalikp

зависание, в трейс лог вот что падает

[fresh 12394] [PPB] {full} ppb_core_release_resource resource=7011
[fresh 12394] [PPB] {full} ppb_core_call_on_main_thread delay_in_milliseconds=2500, callback={.func=0x7fffbe564c10, .user_data=0x7fffa40ea620, .flags=0}, result=0
[fresh 12394] [PPB] {full} ppb_audio_input_dev_create
[fresh 12394] [PPB] {fake} ppb_audio_input_dev_enumerate_devices
[fresh 12394] [PPB] {full} ppb_audio_input_dev_close
[fresh 12394] [PPB] {full} ppb_core_release_resource resource=7012
[fresh 12394] [PPB] {full} ppb_core_call_on_main_thread delay_in_milliseconds=2500, callback={.func=0x7fffbe564c10, .user_data=0x7fffa40ea3e0, .flags=0}, result=0
[fresh 12394] [PPB] {full} ppb_audio_input_dev_create
[fresh 12394] [PPB] {fake} ppb_audio_input_dev_enumerate_devices
[fresh 12394] [PPB] {full} ppb_audio_input_dev_close
[fresh 12394] [PPB] {full} ppb_core_release_resource resource=7013
[fresh 12394] [PPB] {full} ppb_core_call_on_main_thread delay_in_milliseconds=2500, callback={.func=0x7fffbe564c10, .user_data=0x7fffa40ea0d0, .flags=0}, result=0
[fresh 12394] [PPB] {full} ppb_audio_input_dev_create
[fresh 12394] [PPB] {fake} ppb_audio_input_dev_enumerate_devices
[fresh 12394] [PPB] {full} ppb_audio_input_dev_close
[fresh 12394] [PPB] {full} ppb_core_release_resource resource=7014
[fresh 12394] [PPB] {full} ppb_core_call_on_main_thread delay_in_milliseconds=2500, callback={.func=0x7fffbe564c10, .user_data=0x7fffa40ea0c0, .flags=0}, result=0
[fresh 12394] [PPB] {full} ppb_audio_input_dev_create
[fresh 12394] [PPB] {fake} ppb_audio_input_dev_enumerate_devices
[fresh 12394] [PPB] {full} ppb_audio_input_dev_close
[fresh 12394] [PPB] {full} ppb_core_release_resource resource=7015
[fresh 12394] [PPB] {full} ppb_core_call_on_main_thread delay_in_milliseconds=2500, callback={.func=0x7fffbe564c10, .user_data=0x7fffa40ea0c0, .flags=0}, result=0
[fresh 12394] [PPB] {full} ppb_audio_input_dev_create
[fresh 12394] [PPB] {fake} ppb_audio_input_dev_enumerate_devices
[fresh 12394] [PPB] {full} ppb_audio_input_dev_close
[fresh 12394] [PPB] {full} ppb_core_release_resource resource=7016
[fresh 12394] [PPB] {full} ppb_core_call_on_main_thread delay_in_milliseconds=2500, callback={.func=0x7fffbe564c10, .user_data=0x7fffa40ea0c0, .flags=0}, result=0
[fresh 12394] [PPB] {full} ppb_audio_input_dev_create
[fresh 12394] [PPB] {fake} ppb_audio_input_dev_enumerate_devices
[fresh 12394] [PPB] {full} ppb_audio_input_dev_close
[fresh 12394] [PPB] {full} ppb_core_release_resource resource=7017
[fresh 12394] [PPB] {full} ppb_core_call_on_main_thread delay_in_milliseconds=2500, callback={.func=0x7fffbe564c10, .user_data=0x7fffa40ea0c0, .flags=0}, result=0
vitalikp
()
Ответ на: комментарий от i-rinat

последний раз была задержка до 3 секунд где-то.

не знаю с чем связано.

в конфиг файле параметров не указывал.

vitalikp
()
Ответ на: комментарий от vitalikp

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

vitalikp
()
Ответ на: комментарий от vitalikp

На одном из сайтов слетела проверка наличия плагина флеш

Поменял строку на «Shockwave Flash 13.1 r2»

i-rinat ★★★★★
() автор топика
Ответ на: комментарий от vitalikp

delay_in_milliseconds=2500

Встречал такое, плагин просто перестаёт что-либо вызывать. Те вызовы, что на экране происходят раз в 2,5 секунды — плагин опрашивает (новые) устройства ввода. Возможно, где-то рвётся цепочка callback'ов.

i-rinat ★★★★★
() автор топика
Ответ на: комментарий от peregrine

но зачем нам 2 велосипеда?

А кто тебе сказал, что это вам? Это — мне.

i-rinat ★★★★★
() автор топика
Ответ на: комментарий от peregrine

я wine не использую совсем, считаю это суррогат.

каждому свое.

vitalikp
()

https://github.com/a1batross/alba-overlay/blob/master/www-plugins/freshplayer...

Написал ебилд. Я не заметил, чтобы его уже кто-то написал, поэтому сделал сам. А еще отписал в багзиллу, чтобы из chrome-binary-plugins выкинули зависимость от хрома. :)

Зашел на тытруб, теперь там версия 14.0.0.x. ^_^

a1batross ★★★★★
()
Ответ на: комментарий от a1batross

Недавно конфиг добавился. Теперь путь к плагину можно указывать в ~/.config/freshwrapper.conf

plugin_path = "/usr/lib/chromium-browser/PepperFlash/libpepflashplayer.so"

Если конфига нет в директории пользователя, он ищется в /etc/freshwrapper.conf.

i-rinat ★★★★★
() автор топика

заметил, что не работает shift+PrnScn если активно выпадающее меню флеша. Это только у меня так? Или меню создается как модальное окно?

vitalikp
()
Ответ на: комментарий от vitalikp

Или меню создается как модальное окно?

Меню я делаю через gtk_menu_popup(). И насколько я знаю, это родовая проблема иксов. Меню монопольно захватывают ввод и поэтому сочетания клавиш не работают как ожидалось. У меня такое происходит со всеми меню вообще.

i-rinat ★★★★★
() автор топика
Ответ на: комментарий от i-rinat

да как то раньше не обращал внимание раньше. заметил что некоторые делают скрин меню, вот стало интересно как.

vitalikp
()
Ответ на: комментарий от intelfx

А ему нужен xulrunner?

Больше нет, я вытащил нужные заголовки и таскаю с собой в 3rdparty/npapi.

i-rinat ★★★★★
() автор топика

Просит libconfig теперь:

cmake ..
-- The C compiler identification is GNU 4.7.2
-- The CXX compiler identification is GNU 4.7.2
-- Check for working C compiler: /usr/bin/gcc
-- Check for working C compiler: /usr/bin/gcc — works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ — works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Found PkgConfig: /usr/bin/pkg-config (found version «0.26»)
-- checking for modules 'alsa;glib-2.0;x11;xinerama;gl;liburiparser;libconfig;cairo;pango;pangocairo;pangoft2;freetype2;gtk+-2.0'
-- package 'libconfig' not found
CMake Error at /usr/share/cmake-2.8/Modules/FindPkgConfig.cmake:279 (message):
A required package was not found
Call Stack (most recent call first):
/usr/share/cmake-2.8/Modules/FindPkgConfig.cmake:333 (_pkg_check_modules_internal)
CMakeLists.txt:17 (pkg_check_modules)

-- Configuring incomplete, errors occurred!

Поиск в репах выдает:

libconfig++-dbg - parsing and manipulation of structured config files(C++ debug symbols)
libconfig++-dev - parsing and manipulation of structured config files(C++ development)
libconfig++8-dev - Transitional package for libconfig++-dev
libconfig++9 - parsing and manipulation of structured configuration files(C++ binding)
libconfig-dbg - parsing and manipulation of structured config files(debug symbols)
libconfig-dev - parsing and manipulation of structured config files(development)
libconfig-doc - parsing and manipulation of structured config files(Documentation)
libconfig8-dev - Transitional package for libconfig-dev
libconfig9 - parsing and manipulation of structured configuration files
libconfig-any-perl - module to load configuration from different file formats
libconfig-apacheformat-perl - use Apache format config files
libconfig-augeas-perl - module for manipulating configuration files through Augeas
libconfig-auto-perl - magical config file parser
libconfig-autoconf-perl - Perl module to implement some of AutoConf's macros in pure Perl
libconfig-file-perl - Parses simple configuration files
libconfig-general-perl - Generic Configuration Module
libconfig-gitlike-perl - Perl module for Git-compatible config file parsing
libconfig-grammar-perl - grammar-based user-friendly config parser
libconfig-ini-perl - Perl module for reading and writing .ini files
libconfig-inifiles-perl - Read .ini-style configuration files
libconfig-inihash-perl - Perl extension for reading and writing INI files
libconfig-jfdi-perl - Perl module to load any configuration files
libconfig-json-perl - parser for JSON-based configuration files
libconfig-merge-perl - umbrella interface to configuration modules
libconfig-model-approx-perl - Approx proxy server configuration editor
libconfig-model-backend-augeas-perl - configuration reader and writer powered by Augeas
libconfig-model-cursesui-perl - curses interface to edit config data through Config::Model
libconfig-model-itself-perl - graphical model editor for Config::Model
libconfig-model-openssh-perl - configuration file editor for OpenSsh
libconfig-model-perl - module for describing and editing configuration data
libconfig-model-tkui-perl - Tk GUI to edit config data through Config::Model
libconfig-mvp-perl - multivalue-property package-oriented configuration module
libconfig-mvp-reader-ini-perl - Perl module providing a MVP config reader for .ini files
libconfig-pit-perl - Perl module for Manage settings
libconfig-record-perl - Perl module for configuration file access
libconfig-scoped-perl - Feature rich configuration file parser
libconfig-simple-perl - simple configuration file class
libconfig-std-perl - Load and save configuration files in a standard format
libconfig-tiny-perl - Read/Write .ini style files with as little code as possible
libconfig-yaml-perl - module for manipulating YAML-based configuration files
libconfigreader-perl - Perl module for reading configuration files
libconfigreader-simple-perl - simple configuration file parser
libconfig-file-ocaml-dev - OCaml library for managing configuration files (dev files)

Что ставить? О_о

Спасибо заранее.

Gonzo ★★★★★
()
Ответ на: комментарий от Gonzo

Что ставить? О_о

$ apt-file search libconfig.pc
libconfig-dev: /usr/lib/x86_64-linux-gnu/pkgconfig/libconfig.pc

Ставить надо libconfig-dev.

Кстати, сделал базовое 3d и включил по умолчанию.

i-rinat ★★★★★
() автор топика
Ответ на: комментарий от i-rinat

Тю. Теперь на make валится:

[ 61%] Building C object CMakeFiles/freshwrapper.dir/src/ppb_graphics3d.c.o
/home/user/Documents/freshplayerplugin/src/ppb_graphics3d.c:31:20: fatal error: GL/glu.h: No such file or directory
compilation terminated.
make[2]: *** [CMakeFiles/freshwrapper.dir/src/ppb_graphics3d.c.o] Error 1
make[1]: *** [CMakeFiles/freshwrapper.dir/all] Error 2
make: *** [all] Error 2

Gonzo ★★★★★
()
Ответ на: комментарий от Gonzo

В Дебе нужен пакет libglu1-mesa-dev. В других дистрах название пакета может быть другим.

Все собралось в итоге.

P.S. Возможно, лучше ставить freeglut-devel (в Дебе он freeglut3-dev), потянет за собой libglu1-mesa-dev, libgl1-mesa-dev, libxt-dev и libxex-dev. Не помешает, думаю, хз.

Gonzo ★★★★★
()
Последнее исправление: Gonzo (всего исправлений: 2)
Ответ на: комментарий от Gonzo

GL/glu.h: No such file or directory

Забыл glu в зависимости в CMakeLists.txt добавить. Поправил.

i-rinat ★★★★★
() автор топика
Ответ на: комментарий от Gonzo

ставить freeglut-devel

Я glut не использую, только одну функцию из glu.

i-rinat ★★★★★
() автор топика

На HD4000 жуткий тиринг.
В инфо для нердов все «software»
Лагов со звуком нет, но картинка «рвется».
Kwin, эффекты отключены.
Завтра на Нвидии проверю.
На ноуте устраивает (пока что) и 11.2 с vdpau-va-gl, но все же.

Myp3ik ★★
()
Ответ на: комментарий от Myp3ik

жуткий тиринг

Тиринг это такая неуловимая штука, что сделать с ней что-то в программах практически невозможно. Тут уж как тайминги лягут.

В инфо для нердов все «software»

Возьми из git'а версию посвежее, там должно появиться «accelerated rendering».

i-rinat ★★★★★
() автор топика

Почему-то пропала возможность по ПКМ выбрать Settings и пропала панель с громкостью и прочими фичами... или так и было?

Gonzo ★★★★★
()
[fresh 30060] [NP] NP_GetPluginVersion
[fresh 30060] [NP] NP_GetMIMEDescription
[fresh 30060] [NP] NP_GetValue instance=(nil), variable=NPPVpluginNameString, value=0xfff6ec90
[fresh 30060] [NP] NP_GetValue instance=(nil), variable=NPPVpluginDescriptionString, value=0xfff6ec94
[fresh 30060] [NP] NP_Initialize aNPNFuncs=0xf743f4a0, aNPPFuncs=0xf085b5c0, browser API version = 27
/usr/lib/firefox/plugin-container: symbol lookup error: /usr/lib/nsbrowser/plugins/libfreshwrapper.so: undefined symbol: config_init

Последняя версия, libconfig есть, собрало нормально. Что я делаю не так? Gentoo, amd, свободный драйвер.

Deleted
()
Ответ на: комментарий от Gonzo

возможность по ПКМ выбрать Settings и пропала панель с громкостью и прочими фичами

У меня всё ещё работает. Правда выбор значений там почти ни на что не влияет, так как поддержки микрофона и вебкамеры пока нет.

Мы же оба об этих настройках говорим?

i-rinat ★★★★★
() автор топика
Ответ на: комментарий от Deleted

Получившийся бинарник с libconfig слинкован [1]? А то библиотеки они такие, при отсутствии нужных символов ошибок не выводится.

В системе есть файл libconfig.so? Название должно быть точно такое, без цифр в конце. Обычно это бывает симлинк на файл с версией в имени.

[1] ldd libfreshwrapper.so | grep libconfig

i-rinat ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.