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)

Вроде заработало, даже почти нормально.
About на сайте adobe крутится, ютуб как-то играет, только без звука.
Дело нужное.

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

А mplayer через -ao alsa у тебя нормально звук играет?

Это какой-то трудноуловимый глюк — у некоторых через PulseAudio работает, в том числе и у меня, а у некоторых — нет.

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

и когда firefox запущен в микшере пульсы появляется ALSA plug-in [plugin-container] но он ничего не играет (уровень всегда нулевой)

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

Теперь уже два файла генерятся: nacl и pepperflash. Что это дает и обязательны ли оба?

Это обёртка к Native Client, не обязательна, к тому же ещё и не работает пока. Основная обёртка теперь называется libfreshwrapper-pepperflash.so, чтобы понятно было, что где.

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

Если что, ALSA.

Эх, а так удобно было во всём винить PulseAudio. Попробую сделать по кальке с Mplayer, авось заработает.

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

В свежем флеше есть какие-то новые фичи/улучшения/исправления? Чем оно лучше застывшего 11.2 ?

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

Чем оно лучше застывшего 11.2?

Да вроде как ничем.

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

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

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

послетали настройки громоксти и пропал звук общесистемно

И что, так происходит каждый раз?

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

У меня код теперь ищет плагины по нескольким наиболее вероятным местам, но если этого не достаточно, путь можно указать в ~/.config/freshwrapper.conf

Пример файла со всеми возможными параметрами есть в репозитории в /data.

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

Спасибо, буду настраивать по ману.

А вообще спасибо огромное, сдвинули дело с мертвой точки.

LongLiveUbuntu ★★★★★
()

Че хочу сказать. Давно не компилил, решил обновить Freshplayer.
Зашел на ютуб, а точнее на страничку Fail Army. Там у них висит видос, стартующий автоматом всегда. Вот что вижу: http://uaimage.com/image/181911da, видео нет, какие-то «помехи», звук есть.
Если выбрать любое видео - все нормально. Да и вообще, видео играет норм любое абсолютно вроде.

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

видео нет, какие-то «помехи», звук есть.

А ты в него мышкой ткни, это помогает. После обновления до 14.0.0.145 флеш плеер стал просить graphics2d размером 1x1. Но если поменять фокус (достаточно ткнуть куда-то на странице, а потом обратно на плеер), то он одумывается и пересоздаёт его с нормальными размерами. Если придумаю, как это починить, не сломав всё остальное, поправлю.

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

Точно, работает, спасибо. Кстати, по ПКМ на видосе раньше сохранялось Enable hardware acceleration, сейчас нет. Стоит браузер перезапустить, снова там галочка (я ее обычно снимаю), хз, конечно, работает ли оно у тебя вообще :)

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

Стоит браузер перезапустить, снова там галочка

Хм, у меня сохраняется. Правда тут есть один тонкий момент. До сих пор файлы настройки хранятся в /tmp, так что при перезапуске оно точно стираются. Кстати, спасибо, что напомнил, надо сделать сохранение в постоянную директорию.

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

Понял. Да, я перегрузился дабы проверить предыдущий прикол со слетанием настроек аудио. Не знаю, что это было. Вероятно, звезды так сошлись :) В этот раз все норм.

З.Ы. Раньше с адобовским флешем появлялись директории .adobe и .macromedia в домашнем каталоге. Может, туда можно запихать эти настройки... Либо даже читать уже сохраненные при переходе с Адоба на твой, как фича :)

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

У меня точно такая же проблема, причём из-за этого видео с blip.tv вообще не проигрывается. «Одумываться» он «одумывается», плеер в конце концов отрисовывается нормально, но видео не запускается. Mint 17, Firefox 30, флеш 14.0.0.145.

Очень бы было хорошо, если бы ты или ещё кто-нибудь это починил.

Хочу заметить, что на той же конфигурации (да, в т.ч. с 14.0.0.145), но с freshplayerplugin версии b9a49a4885110a5631ba9d61500d2c840e32f255 всё работает.

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

Путём многих перекомпиляций удалось установить, в каком коммите эта проблема возникла.

Вот тут всё ещё работает:

commit 34b948927fb9dc05401fe5a1531dfcf2dfc0573a
Author: Rinat <ibragimovrinat@mail.ru>
Date:   Sun Jul 13 16:17:48 2014 +0400

    add main_thread.c
Вот тут всё уже сломалось:
commit 23a09a6077f088a35eb8b874957d8c089612e571
Author: Rinat <ibragimovrinat@mail.ru>
Date:   Sun Jul 13 19:25:31 2014 +0400

    call plugin's DidCreate in a separate "main" thread
Собственно, там у меня Flash просто падает. Начиная с какого-то более позднего коммита он, видимо, падать перестал, но начался этот «фиолетовый шум» вместо видео.

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

Около того коммита много чего поломалось — я выделил основной цикл в отдельную нить вместо использования нити браузера. Вызовы функций pepperflash'а стали асинхронными (контекстное меню больше не блокирует видео), и NPP_SetWindow с размерами окна вывода иногда происходят до завершения инициализации. Тогда-то и появляется визуальный мусор или чёрный прямоугольник.

Добавил обходной путь в e550ce62, должно сработать.

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

Поставил текущий мастер, 0378f7766c .

Теперь явление такое.

Заходим, например, сюда. Видео воспроизводится.

Заходим сюда или сюда. То же видео, но после запуска «помехи» возникают на секунду, потом исчезают, и видео не воспроизводится. До «того коммита» вопроизводилось.

Единственная разница, которая заметна во вторых двух случаях (кроме того, что видео встроено на другом сайте), — это то, что воспроизведение начинается по клику, а не автоматически.

proud_anon ★★★★★
()

За всё время разработки я много раз пытался винить Flash плеер во всех грехах, но каждый раз выяснялось, что ошибка где-то в другом месте. Но вот наконец-то я наткнулся на код, который хоть что-то делает неправильно.

[fresh  3953] [PPB] {full} ppb_var_var_from_utf8_1_1 data=try { __flash__toXML(window.location.href.toString()) ; } catch (e) { "<undefined/>"; }, len=87
[fresh  3953] [PPB] {full} ppb_instance_private_execute_script instance=10, script={STRING:0x2cc758a0:try { __flash__toXML(window.location.href.toString()) ; } catch (e) { "<undefined/>"; }}
[fresh  3953] [PPB] {full} ppb_var_add_ref var={STRING:0x2cc758a0:try { __flash__toXML(window.location.href.toString()) ; } catch (e) { "<undefined/>"; }}
[fresh  3953] [PPB] {full} ppb_var_release var={STRING:0x2cc758a0:try { __flash__toXML(window.location.href.toString()) ; } catch (e) { "<undefined/>"; }}
[fresh  3953] [PPB] {full} ppb_var_var_to_utf8 var={STRING:0x2cc758a0:try { __flash__toXML(window.location.href.toString()) ; } catch (e) { "<undefined/>"; }}
[fresh  3953] [PPB] {full} ppb_var_release var={STRING:0x2cc758a0:try { __flash__toXML(window.location.href.toString()) ; } catch (e) { "<undefined/>"; }}
[fresh  3953] [PPB] {full} ppb_var_release var={STRING:0x2cc758a0:ÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝ}

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

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

Эти вызовы делает Flash. Скорее всего, баг в PPAPI прослойке.

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

А мне пришла интересная идея. Флеш просто ложит на настройки прокси в браузере, а проксировать его можно только через сложный роутинг или изоляцию в виртуальной подсети или контейнере. Но ведь можно попробовать сделать export_proxy через FreshPlayerPlugin, конечно это будет уже не столько безопасно, но очень удобно. Что думаешь?

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

Флеш просто ложит на настройки прокси в браузере

Так как PepperFlash запускается Chrome'ом в песочнице, всё общение с внешним миром производится через PPAPI. Пока что я столкнулся с двумя способами работы с сетью: PPB_URLLoader и PPB_TCPSocket_Private. Первый — это работа с URL средствами браузера, её я заворачиваю в NPN_GetURL и NPN_PostURL. Так как этим занимается браузер, он сам разбирается с настройками прокси. Второй способ — это асинхронная обёртка над простыми TCP сокетами, и, видимо, сюда ты хочешь прикрутить работу через CONNECT прокси.

сделать export_proxy

Сомневаюсь, что PepperFlash использует какие-либо переменные среды.

безопасно

Я обновил README и добавил абзац про безопасность. В двух словах — её нет. Я не делаю никакой песочницы, так что если что-то прорвётся сквозь песочницу Flash'а, у этого что-то будет прямой доступ к системе. Собственно, как и у NPAPI Flash.

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

Пару маленьких вопросов.

1) Как там на счет релиза? Я давно уже не тестил плагин, но если основная часть функционала уже работает, то можно было бы использовать как основной. С основного бранча не хочется ставить, так как не всегда есть время следить и не знаешь в какой момент может что-то не работать. А с метки удобнее скачать тарбол.

2) Сокеты уже реализованы в полном объеме?

3) В каком направлении сейчас идет разработка?

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

Как там на счет релиза?

В каком направлении сейчас идет разработка?

Чиню баги. Как починю те, что в milestone v0.2.0, будет версия v0.2.0. https://github.com/i-rinat/freshplayerplugin/milestones

После доработки способа работы с нитями выползло много неприятных багов. Большую часть выловил, но есть ещё падения при открытии-закрытии вкладок с плагинами и зависания при большом количестве флеша на странице.

Сокеты уже реализованы в полном объеме?

Есть реализация TCP клиента. UDP нет. Не встречал пока что сайта, где нужен был UDP.

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

Пользоваться уже можно?

Это тебе придётся самому решить. Работает — можно, лажает — нельзя. В последние недели три было совсем страшно — постоянно падало, сейчас стало постабильнее, но я всё равно вижу как оно падает, время от времени. Из фич отсутствуют: веб камера, микрофон, работа с файлами, работа с буфером обмена. Может что-то ещё.

В stdout валятся сообщения, если Flash запрашивает или пытается использовать нереализованные фичи. Названия функций говорящие, так что там не сложно разобраться.

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

Заходим сюда или сюда. То же видео, но после запуска «помехи» возникают на секунду, потом исчезают, и видео не воспроизводится. До «того коммита» вопроизводилось.

Починил вместе с «помехами».

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

Все отлично вроде бы, но при переключении на другое видео «слетает» громкость на максимум почти, не запоминает. Кстати, ты делал хранение настроек где-то? Говорил, что запилишь вроде. На примере тех же /.macromedia и /.adobe либо в том же /tmp. Смотрю, галка hardware acceleration не появляется снова если почистить историю браузера либо перезапустить его с чисткой кэша и куксов, значит где-то помнит :)

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

Все отлично вроде бы, но при переключении на другое видео «слетает» громкость на максимум почти, не запоминает.

Слетает громкость где? Это именно громкость в flash-ролике или системная? У тебя PulseAudio или ALSA?

Кстати, ты делал хранение настроек где-то? Говорил, что запилишь вроде.

Да, поменял путь настроек на ~/.config/freshwrapper-data/Shockwave Flash

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

Сорри, не уточнил. Во флеше громкость, ползунок на максимум при смене ролика. У меня ALSA, но это не должно играть роли по идее.

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

У меня в последние пару месяцев на многих плеерах не запоминает на последнем хроме. Думаю, это бага самого pepperflash. Хотя черт его знает, может я у себя чего-то сломал.

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

Все таки слетает... Удали историю полностью, закрой ФФ, удали папку /freshwrapper-data, после чего запусти ФФ, зайди на ютуб и кликни любое видео - громкость на максимум (по идее, как и должно быть). Сделай тише и перейди на другое видео - громкость снова на максимуме.

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

Сорри, недописал: я такого не замечал нигде больше вроде...

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