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

собственно белые квадратики на указанной странице до сих пор наблюдаю. fresh свежий из git.

вот:

$ grep reason= log | grep -v reason=0
[fresh  5890] [NPP] {full} NPP_URLNotify npp=0x7fe96c894410, url=http://www.youtube.com/v/L6hupU-G204, reason=1, notifyData=24
[fresh  5890] [NPP] {full} NPP_URLNotify npp=0x7fe96c8949e0, url=http://www.youtube.com/v/uzDMXwC_EBE, reason=1, notifyData=35
[fresh  5890] [NPP] {full} NPP_URLNotify npp=0x7fe96c894fb0, url=http://www.youtube.com/v/iOZvOj_EoTg, reason=1, notifyData=48
[fresh  5890] [NPP] {full} NPP_URLNotify npp=0x7fe96c895580, url=http://www.youtube.com/v/foCHyRJ1ups, reason=1, notifyData=61
[fresh  5890] [NPP] {full} NPP_DestroyStream npp=0x7fe96c894220, stream={.pdata=0xa, .ndata=0x7fe9574b2ab0, .url=http://www.grad-petrov.ru/images/198x108.swf, end=17693, lastmodified=0, .notifyData=10, .headers=<skipped>}, reason=2
[fresh  5890] [NPP] {full} NPP_URLNotify npp=0x7fe96c894220, url=http://www.grad-petrov.ru/images/198x108.swf, reason=2, notifyData=10
mvitamin
()
Ответ на: комментарий от i-rinat

HTTPS Everywhere

именно он и стоит. если отключить то все работает.

но со старым flash npapi нативным все работает в любом случае.

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

но со старым flash npapi нативным все работает в любом случае.

Это особенности API. Для инициализации Pepper плагина нужно иметь данные содержимого плагина, которых на момент вызова NPP_New() ещё нет. Они, возможно, будут доставлены новым потоком от браузера, но потом. Поэтому я вычисляю адрес и запрашиваю выкачивание объекта отдельно, а все незапрошенные потоки игнорирую.

Когда работает HTTPS Everywhere, он подменяет адрес в начальном потоке: если для плагина указан HTTP ресурс, поток создаётся для HTTPS. Но все остальные HTTP он режет, вот и выходит, что ничего не грузится.

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

Я думаю попробовать создавать болтающийся URLLoader, а потом ловить в него не запрошенный поток. Задача мутная, так что до неё руки пока не дошли. Кстати, на github'е под неё заведена #153.

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

многие разработчики фиксят мои баги через год. иногда приходится мне писать небольшие патчи.

за год справишься? =) я подожду =)

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

а egl gles2 используется? если нет, можно сделать проверку опциональной, дабы в генте месу собрать без egl gles2

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

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

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

GLES2 используется, EGL уже нет.

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

за год справишься?

Смех смехом, а некоторые issue уже почти год тянутся.

Попробуй ещё раз со свежей версией, я добавил хак для #153.

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

Попробуй ещё раз со свежей версией, я добавил хак для #153.

да, теперь работает у меня на той странице, что я давал. HTTPS Everywhere включен. проблем не возникнет из-за хака?

за год справишься?

Смех смехом, а некоторые issue уже почти год тянутся.

в каждой шутке есть доля шутки.

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

проблем не возникнет из-за хака?

Да. Реализовал тот способ, о котором упоминал — когда приходит первый поток, цепляю его к первому URLLoader и оттуда же беру новый URL для плагина. А дальше swf новые запросы уже сам делает через https.

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

я не совсем понял. ты это сделал? :

Я думаю попробовать создавать болтающийся URLLoader, а потом ловить в него не запрошенный поток. Задача мутная, так что до неё руки пока не дошли.

для другого варианта решения ты писал, что ломается JavaScript.

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

ты это сделал?

Я думаю попробовать создавать болтающийся URLLoader, а потом ловить в него не запрошенный поток. Задача мутная, так что до неё руки пока не дошли.

Да, именно это.

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

Странно... поставил Debian Wheezy с нуля (окружение MATE), Firefox стал подвисать временами при первом заходе на youtube, после чего через полминуты выскакивает сообщение, что Adobe Flash крэшнулся. При том, что я даже видео еще никакое не выбирал, просто зашел на youtube. Отследить никак не могу: в консоли чисто, core естественно не создается. В конфиге отключены enable_3d и enable_hw_video_decode.

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

Похоже, я знаю, из-за чего это происходит. У меня сейчас ALSA, и коде вывода для ALSA какие-то непонятные глюки, из-за захвата аудио: при отключении PPB_AudioInput_Dev они изчезают. Но пока не ясно в чём именно дело.

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

Понял. Буду ждать фикс значит. Жаль не могу откатиться уже. Не сохранил старую версию. Было еще вроде все нормально на момент этого сообщения, когда ты поставил тег 0.2.4. Я не особо просто пользуюсь гитом, потому не знаю, как откатиться до того момента и можно ли...

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

потому не знаю, как откатиться до того момента и можно ли...

Системы контроля версий тем и хороши, что выбрать можно любое состояние.

git checkout v0.2.4
Вернуться обратно на самую свежую версию:
git checkout master

А вообще поставь gitk или gitg, они с GUI, там нагляднее.

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

Вроде разобрался. Прости мое нубство:

git clone https://github.com/i-rinat/freshplayerplugin.git
cd freshplayerplugin/
git checkout v0.2.4

Правильно?

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

Правильно?

Да, правильно.

Я сейчас смотрел в gitg и gitk, скачивать они не умеют, только просматривать существующий репозиторий. Их основная польза — в графическом представлении того, как коммиты между собой по истории связаны.

У каждого коммита есть идентификатор, перейти на выбранный можно, выполнив git checkout <идентификатор>. Вообще master и v0.2.4 это просто удобные псевдонимы для коммитов.

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

Понял. А вот как выбрать другой коммит? Идентификатор - это то, что до двоеточия или как? Вот например, async_network или ppb_udp_socket (но их там два!). Как мне перейти к конкретно этим коммитам?

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

набери git log

. увидишь соответствие комментария к коммиту и его буквоциферного идентификатора.

потом git checkuot буквоциферныйидентификатор

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

Я не совсем понял, какие именно ты имеешь в виду. Но вот, например, на состояние перед v0.2.4 можно перейти, выполнив

git checkout a083f7d879a4a9eed1b56629a29d399693acc378

или

git checkout a083f7d8

То есть полностью писать не обязательно. Если по началу можно одназначно найти коммит, git его найдёт.

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

Все, теперь понятно! Меня смутили эти цифры просто, а в gitg они идут как хеш SHA, потому я и не подумал, что это и есть идентификаторы.
Спасибо, разобрался.

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

За git log отдельное спасибо. Надо таки почитать маны :)

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

А почему git log не показывает «псевдонимы»?

commit d1c43279020762f4d67beb1b206d6fb9e77c2289
Author: Rinat Ibragimov <ibragimovrinat@mail.ru>
Date:   Sat Apr 25 18:17:24 2015 +0300

doc: update ChangeLog

Где тут v0.2.4 ?

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

Спасибо! Я даже нашел еще круче тему:

git log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit

Можно это все алиасом сделать, например, по «git lg»:

git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"

Ваще бомба :)

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

Оказалось, что дело не в звуковой части. Глюк у меня проявляется, когда enable_3d = 0. Причём очень похоже, что стек портится у одной из нитей, запускаемых самим Flash плеером. Сижу гадаю, в чём же дело.

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

У тебя, кажется, nVidia с проприетарными драйверами? Похоже, там не всё гладко с GLES. Как минимум, есть багрепорт на эту тему.

Или в Mesa какой-то баг приводит к лучшей работоспособности :-)

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

С самой свежей версией из git всё ещё падает?

До меня внезапно дошло, что предупреждение valgrind'а «Invalid read of size 16, Address 0x252ae7a0 is on thread 20's stack, 648 bytes below stack pointer» это не фатальный баг. Стек же вниз растёт, значит запись его не портит.

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

Как отловлю - отпишусь. Оно ж не сразу еще себя проявляет.

Gonzo ★★★★★
()

Нет, все равно не могу понять поведение браузера. Он часто подвисает при переходе на youtube. Вроде что-то не может подгрузиться сразу. Раньше такого не было. Может, youtube что-то намутили у себя. Я уже пробовал разные ветки freshplayer, не думаю, что дело в нем. На этот раз я ставил систему дома и на работе начисто: Debian Wheezy (минимальная, базовая система) и MATE в качестве DE из бэкпортов, после чего доустановил xorg и lightdm. Все. Может действительно не хватает чего? Я уже не знаю, что думать. Поведение одинаковое на двух машинах. Повторяю, до переустановки все было нормально (правда, до этого на одной машине был еще второгном, а на другой полугном-молу-MATE).

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

подвисает при переходе на youtube

Подвисает — это как? Вообще никак не реагирует ни на что? Или показывает окно видеоплеера, но видео не грузит, а если пытаешься нажать play, пишет, что произошла ошибка?

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

Попробовал и адобовский флеш и даже без плагина вовсе. Все равно протормоз при открытии страницы.

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

Подвисает = не реагирует, даже иконка на вкладке «не вращается». Протормоз длится от 5 до 10 секунд, по разному всегда.

Gonzo ★★★★★
()

Сорри, что не по теме. Я, наверное, спрошу об этом отдельно где-нибудь на ЛОРе или другом форуме :) Ибо это к делу не относится уже. При том, что в офтопике такое же поведение. При чем когда заходишь на главную youtube - происходит первая подрузка каких-то данных и через пару-тройку секунд вторая порция. Они могли тоже у себя что-то менять недавно.

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

Не знаю, где это глянуть. Погляжу. А вообще все решилось простым отключением «dom.ipc.plugins.enabled» и выставление таймаутов «dom.ipc.plugins.processLaunchTimeoutSecs» и «dom.ipc.plugins.timeoutSecs» = 1 вместо 45. Я и забыл, что раньше отключал эти опции. Вопрос снят, еще раз сорри!

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

Не знаю, где это глянуть.

Нажми Ctrl-Shift-i, выбери вкладку Network (или как она там называется), нажми Reload.

Должно выглядеть примерно так.

А вообще все решилось простым отключением «dom.ipc.plugins.enabled»

Проблема тормозных плагинов решается отключением плагинов. В принципе, вполне себе неплохое решение, да. :-)

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

Проблема тормозных плагинов решается отключением плагинов.

Угу, при том, что на Mozillazine пишут, что:

Note: In Firefox 3.6 releases (3.6.4 and above) the preference dom.ipc.plugins.enabled is already set to «false», by default.

Почему у меня тут было включено непонятно :)

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

Почему у меня тут было включено непонятно :)

О, я думал, что эта настройка вообще все плагины отключает. А она отключает плагины в отдельном процессе. Так что теперь если Flash с обёрткой упадёт, упадёт браузер целиком, так как всё в одном процессе.

Я попробовал у себя, работает частично, в некоторых случаях ничего не видно. У меня в коде с относительной отрисовкой не всё гладко. Когда плагин в отдельном процессе, рисование всегда начинается с (0,0). Но если ipc отключить, браузер плагин рисовать в других местах, что у меня не реализовано.

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

А у меня на странице коуба нет контролов почему-то, а если он встроен куда-то, например в посте на ФБ, то есть :-/
Вообще, с коубом и его громкостью у меня всегда были не лады, бывало по началу если не успеешь изменить громкость, то потом все, затыкай уши - контролы пропадают, а бывает если мышкой сразу не наводить над видосом, а дать ему начаться, то потом контролы появляются. Бред короче.

Gonzo ★★★★★
()

Попробовал еще раз зайти на коуб - появились, но я дал видосу начаться, после чего подвел мышку... А вообще, первый старт коуба после запуска браузера это жесть. Проц в 100%, видос тупит если мышкой над ним возить. Закрыл вкладку, открыл снова, убрав мышку в сторону - нормально :D

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

Да, лучше держать включенной эту фишку. Я вернул, но таймауты оставил равными 1. Вроде не тупит уже заход на youtube.

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