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)

Ответ на: комментарий от anonymous

а почему

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

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

Там собирается бинарник для теста, tests/util_egl_pixmap. Какого цвета прямоугольник он показывает?


А если у меня хаотичный набор символов там (графический мусор) что может быть не так?
Карта Nvidia ION, с блобом. Но в целом работает нормально на большинстве сайтов.

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

А если у меня хаотичный набор символов там (графический мусор)

Это означает, что рендеринг в pixmap совсем не работает. По крайней мере, забрать оттуда картинку нельзя. Этот тест создаёт невидимый pixmap, подключает к нему контекст и два раза вызывает glClear() с разными цветами. В свежих версиях Mesa отрабатывает только первый glClear(), а у тебя, похоже, они вообще не работают.

В коде сейчас EGL не используется, поэтому вместо util_egl_pixmap там util_glx_pixmap. Он как работает?

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

Воу воу! Это тот плагин, который можно накатить через убунтовские ппа? Как идет прогресс? Последний раз ставил на кубунту пару месяцев назад, при попытке посмотреть твитч firefox крашился.

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

при попытке посмотреть твитч firefox крашился

Что, прямо весь? Плагин в отдельном процессе запускается, основной процесс задеть не должно. Но 32-битный PepperFlash и сейчас крашится на twitch, что через freshwrapper, что в самом Chrome. С этим вряд ли что-то можно поделать. Багрепорты на эту тему уже есть; надо ждать, пока флеш починят.

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

Точно уже не помню, но firefox приходилось перезапускать. Система 64-битная, в chrome все показывало норм.

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

Если всё ещё падает, посмотри backtrace в gdb. Интересно узнать, из-за чего. (Краткая инструкция есть по ссылке).

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

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

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

Да, получается, из master.

Такое поведение на всех видео? Монитор один или несколько? Какое разрешение у монитора (мониторов)?

Кстати, тиринг он сам по себе, отдельная проблема.

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

Такое поведение на всех видео?

Нет, только на видео у которых максимальное доступное разрешение меньше чем разрешение монитора.

Монитор один или несколько?

Один.

Какое разрешение у монитора (мониторов)?

1920x1080

Кстати, тиринг он сам по себе, отдельная проблема.

Да, похоже. Он проявляется в видео с любым разрешением. Но в обычном флеше и в системе тиринга нет.

Andrew ★★★
()

Пробовал вчера (из ппа ставил), часто флеш падает
Только вот не понял, зачем он, если и 11 работает (причём стабильно, не разу не видел крашей).

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

Например vSphere Web Client с дефолтным линуксовым флешем не запускается, пишет To view this page ensure that Adobe Flash Player version 11.5.0 or greater is installed. .

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

только вот не понял, зачем он

Не нужен — и хорошо. Благо никто не заставляет пользоваться тем или другим. Тем более сейчас всё больше и больше сайтов поддерживают HTML5 технологии.

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

11 версия не развивается. А флеш еще долго будет жить. На многих сайтах еще поддерживают 11, но бывает требуют версию посвежее. 22 февраля 2012 было объявлено о прекращении поддержки линукс платформы. в 2017 конечный срок. Это дата не такая призрачная как может показаться. И если кто думает, что к тому времени все перейдут на html5, глубоко ошибается. Как ни крути html5 не покрывает всех нужд. А на некоторых сайтах переписывать все на html5 просто нету ресурсов, и не всегда это так просто как может показаться.

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

22 февраля 2012 было объявлено о прекращении поддержки линукс платформы. в 2017 конечный срок.

спасибо, кэп

//мне как-то и 11 хватает, хотя и он крайне редко где задействуется

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

Да уж проще для тех наркоманских сайтов поставить chromium с pepper flash и изредка его открывать.

PS: пользуюсь браузером с настройкой «флеш по запросу» - тяжело вспомнить когда я его включал

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

Ну каждому свое. Я хромом не могу пользоваться например. Мне он не удобен. Поэтому данный плагин мне очень кстати.

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

libpepflashplayer.so из ChromeOS (x86_64)

Добрый день!

Реализовал часть интерфейса PPB_Flash_DRM; хватает для работы drmtest2 от Adobe и для stream.1tv.ru/live.
Чтобы заработало, нужен libpepflashplayer.so из ChromeOS. C версией из десктопного Chrome'а не работает.

Подскажите, пожалуйста: где можно найти libpepflashplayer.so из ChromeOS? Желательно для архитектуры x86_64. Нужно как раз для просмотра stream.1tv.ru/live.

anonymous
()
Ответ на: libpepflashplayer.so из ChromeOS (x86_64) от anonymous

Где можно найти libpepflashplayer.so из ChromeOS? Желательно для архитектуры x86_64

Вот здесь есть краткая инструкция. Вкратце: скачиваешь linux_recovery.sh, в нём находишь ссылку для zako, скачиваешь образ, раззиповываешь, монтируешь loop0p3, достаёшь из него libpepflashplayer.so.

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

Вчера поставил дома FF35GTK3 - плагин вроде запустился и работает. Работа плагина не отличается от gtk2 версии. Правда я только на сериалах и проверял.

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

Он не работает, если flash плеер подгружается через ajax.

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

Сейчас только обновил plugin из хромого и обновил freshplayer, всё заработал гараздо лучше, подцепилась при сборке пульса и заработал звук без задержек! Автор, спасибо!

anonymous
()

package 'openssl' not found

Debian 7, openssl установлен (1.0.1е), никакого openssl-dev в репах нет. Вопрос: что ставить? О_о

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

Debian 7, openssl установлен (1.0.1е), никакого openssl-dev в репах нет. Вопрос: что ставить? О_о

гугл говорит, что libssl-dev

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

libssl-dev

А вообще есть универсальный способ определения — искать pc файлы:

apt-file search /openssl.pc

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

Понял, спасибо. Изучу этот вопрос для себя.

Gonzo ★★★★★
()

Версия 0.2.3.

Пробую включать enable_3d = 1.

Вылетает.
Program received signal SIGSEGV, Segmentation fault.
0x0000000000000000 in ?? ()
(gdb) bt
#0 0x0000000000000000 in ()
#1 0x00007fffbdebe5f9 in NPP_New (pluginType=<optimized out>, npp=0x7fffdee68050, mode=<optimized out>, argc=14, argn=0x7fffda890100, argv=0x7fffd2b7c080, saved=0x0)
at ...<path>.../freshplayerplugin-0.2.3/src/np_functions.c:288
#2 0x00007ffff34ad0f0 in () at /opt/firefox/32/libxul.so
#3 0x00007ffff349ee3e in () at /opt/firefox/32/libxul.so
#4 0x00007ffff34a869b in () at /opt/firefox/32/libxul.so
#5 0x00007ffff34a87b0 in () at /opt/firefox/32/libxul.so
#6 0x00007ffff34a8adb in () at /opt/firefox/32/libxul.so
#7 0x00007ffff37b79b4 in () at /opt/firefox/32/libxul.so
#8 0x00007ffff37b7e6d in () at /opt/firefox/32/libxul.so
#9 0x00007ffff2925022 in () at /opt/firefox/32/libxul.so
#10 0x00007ffff290e489 in () at /opt/firefox/32/libxul.so
#11 0x00007ffff2939a0b in () at /opt/firefox/32/libxul.so
#12 0x00007ffff2dd3793 in () at /opt/firefox/32/libxul.so
#13 0x00007ffff3511c15 in () at /opt/firefox/32/libxul.so
#14 0x00007ffff3e25ce1 in () at /opt/firefox/32/libxul.so
#15 0x00007ffff3df56ca in () at /opt/firefox/32/libxul.so
#16 0x00007ffff3df7d83 in () at /opt/firefox/32/libxul.so
#17 0x00007ffff3df8007 in XRE_main () at /opt/firefox/32/libxul.so
#18 0x00000000004064ab in _start ()

Тест: util_glx_pixmap
показывает красный квадрат.
root_wnd = 0xe8
wnd = 0x1400001
nconfigs = 16
fb_config = 0x251c2e0
context ok
pixmap and surface ok
glXMakeCurrent ok

Видеокарта интел.

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

Установил в firefox параметр about:config
dom.ipc.plugins.enabled = false

затем запустил через отлатчик gdb браузер.

скопировал файл freshwrapper.conf в ~/.config/

сама библиотека лежит тут /usr/lib64/libpepflashplayer.so

А пытается его искать в /opt/google/chrome/PepperFlash/libpepflashplayer.so.

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

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

сама библиотека лежит тут /usr/lib64/libpepflashplayer.so

Это так в каком-то дистрибутиве делается или ты руками её туда положил?

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

Если звезды зажигают, значит это кому-нибудь НУЖНО ©

Маяковский В.В.

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

Тут на досуге ковырялся pepper api. Не могу понять зачем нужна UpdateNetworkList из PPB_NetworkMonitor_1_0.

Как я понимаю, таким образом браузер сообщает состояние сети плагину. То есть выходит таким образом плагин отслеживает состояние сети или как?

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

То есть выходит таким образом плагин отслеживает состояние сети

Выходит, что так. У меня на этой функции заглушка, но флеш работает. Не знаю, на что именно это влияет.

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

А ахреа его пилят?

Хороший вопрос. Ответа нет.

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

Не получается воспроизвести на чистой lxpanelx. Какие плагины используются? Может какой-то из них вытягивает панель поверх всех окон?

Плагины стандартные.
Дело в том, что у меня фокус окна по наведению

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

Еще нашел одно место, где падает:)
Пока не понял почему.

[fresh 23015] [PPB] {fake} ppb_video_capture_enumerate_devices
[fresh 23015] [PPB] {fake} ppb_audio_input_enumerate_devices
[fresh 23015] [PPB] {zilch} ppb_network_monitor_update_network_list
[fresh 23015] [PPB] {zilch} ppb_text_input_interface_set_text_input_type instance=10, type=PP_TEXTINPUT_TYPE_DEV_NONE
[fresh 23015] [PPB] {zilch} ppb_flash_set_instance_always_on_top instance=10, on_top=1
[fresh 23015] [PPB] {fake} ppb_video_capture_close

Program received signal SIGBUS, Bus error.
[Switching to Thread 0x7fffd0dfd700 (LWP 23015)]
0x00007fffd86560d9 in ?? () from /usr/lib64/libpepflashplayer.so

(gdb) bt full
#0  0x00007fffd86560d9 in  () at /usr/lib64/libpepflashplayer.so
#1  0x00007fffda4b68c6 in ppb_message_loop_run_int (message_loop=2, flags=2) at ...<path>.../freshplayerplugin-0.2.3/src/ppb_message_loop.c:315
        ccb = {func = 0x7fffd86560c0, user_data = 0x7fffd5a8a540, flags = 1}
        now = {tv_sec = 1424638993, tv_nsec = 559876958}
        task = 0x7fffdb56ea80
        timeout = -156
        __func__ = «ppb_message_loop_run_int»
        ml = 0x7fffdb5ab540
        saved_state = {running = 0, teardown = 0}
        teardown = 0
        destroy_ml = 0
        depth = 2
        async_q = 0x7fffcc5772c0
        int_q = 0x7fffe21ef640
#2  0x00007fffda4b6499 in ppb_message_loop_run (message_loop=2) at ...<path>.../freshplayerplugin-0.2.3/src/ppb_message_loop.c:196
#3  0x00007fffda49c006 in fresh_wrapper_main_thread (p=0x7fffdb1c2c90) at ...<path>.../freshplayerplugin-0.2.3/src/main_thread.c:58
        pp_i = 0x7fffdb1c2c90
        message_loop = 2
        __func__ = «fresh_wrapper_main_thread»
#4  0x000000336fa0752a in start_thread () at /lib64/libpthread.so.0
#5  0x000000336f70079d in clone () at /lib64/libc.so.6

Как мне удалось выяснить из-за того, что task->result_to_pass принимает значение PP_ERROR_FAILED. Если подавить вызов, когда принимает это значение, вроде не падает. Но это не правильно так делать мне кажется.

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

Падение странное. По идее колбеки должны с любым результатом работать, в том числе и с PP_ERROR_FAILED.

Спасибо за наблюдение, я поковыряю в этом направлении.

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

Поздравляю с первой годовщиной нужного проекта.

Я сильно в код не лез. Но вроде peperFlash не зависит от иксов. А то в хромой оси уже убрали X. А некоторые использую версию плагина из неё.

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

В PPAPI зависимостей нет, всё взаимодействие с иксами вынесено в браузер. Так что там ничего не изменится. Но недавно выяснилось, что версия из свежей ChromeOS теперь зависит от libstdc++ из GCC 4.9.

годовщиной

Годовщина была 29 сентября :)

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

Нет, seccomp используется для укрепления песочницы Chrome, которой я сейчас не пользуюсь совсем.

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

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