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)

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

Все нормально?

Да, вполне. Стоит выключить трассировку (-DTRACE_ALL=0), иначе она все логи зафлудит.

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

Да, спасибо. Перекомпилю. Не совсем понятно, от чего такое поведение. В Wheezy ведь не было таких боков.

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

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

Тут скорее всего произошло вот что. При сборке бинарники требуют libsomething.so, без номера версии, но в зависимости библиотека прописывается уже с версией, libsomething.so.2 (версия и имя находятся внутри библиотеки). libGLESv2.so в системе был, а libGLESv2.so.2 — не было, поэтому сборка прошла успешно, но плагин загрузить было нельзя. Firefox попробовал это сделать, заметил, что не получается, сделал запись в pluginreg.dat. Потом ты сделал симлинк, отчего и ldd и dep_check показали, что всё в порядке, а Firefox из-за записи в pluginreg.dat даже и не пытался плагин загружать.

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

Выключил использование аппаратного декодера по умолчанию. Если всё же хочется его использовать, нужно дописать enable_hwdec=1 в конфигурационный файл.

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

enable_3d включает OpenGL|ES 2 интерфейс. Это позволяет переложить масштабирование картинки на плечи графического адаптера. При проигрывании видео декодирование производится на CPU, затем полученная YUV картинка преобразуется в RGB, загружается в текстуру, а потом с помощью GPU растягивается до нужного размера. Без enable_3d растягивание картинки производится на CPU, что довольно затратно.

enable_hwdec включает использование аппаратного декодера там, где он есть. В этом случае в GPU загружается только H.264 поток. На GPU он декодируется, преобразовывается в RGB, загружается в текстуру и растягивается до нужного размера.

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

Не вполне понял, что тебе хочется получить, но, наверное, да. Пустой конфиг эквивалентен enable_3d=1 и enable_hwdec=0.

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

О, спасибо! Ибо Wheezy не хочет собирать:

--   package 'libavcodec>=54.39.0' not found

В системе стоит libavcodec-dev, у него версия 6:0.8.17-1, но присутствуют просто кодеки libavcodec53 (установлен) и libavcodec54 (не установлен). У них такая же версия 6:0.8.17-1 (вероятно системная какая-то). Вот такое вот. Может понизить версию можно или хз...

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

Может понизить версию можно

Можно, но надо код переделывать. В современных версиях API стало попроще, и та версия — первая, в которой это API появилось. Как-нибудь переделаю для поддержки более старых версий, но вряд ли это случится скоро.

Как выяснилось, аппаратное декодирование — штука нестабильная, так что ничего страшного, если его не компилировать.

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

RelWithDebInfo и Debug для "-DCMAKE_BUILD_TYPE=" одно и то же?

Нет. RelWithDebInfo это компиляция с оптимизацией, а Debug — без. В обоих вариантах включена отладочная информация. Release — вариант с оптимизацией и без отладочных символов.

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

Для отладки больше подходит вариант Debug, в остальных номера строк могут съезжать. В принципе, на Debug можно и постоянно жить, всё равно вся ресурсоёмкая работа выполняется либо в самом PepperFlash, либо в библиотеках.

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

А теговая версия скоро планируется?

Или на текущий момент есть не закрытые критические баги?

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

Надо переделать hwdec код для работы со старыми версиями libavcodec и добавить обработку ошибок. Неделя, может две, как получится.

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

Выпустил v0.3.0.

Основные отличия от v0.2.4:

  • Добавлена поддержка захвата звука с микрофонов;
  • добавлена поддержка захвата видео с веб-камер;
  • добавлены интерфейсы для UDP сокетов и DNS клиента;
  • больше нет попыток подавить хранитель экрана, если он уже запущен;
  • курсоры могут быть созданы из картинок;
  • добавлен транслятор шейдеров из ANGLE;
  • добавлено аппаратное декодирование H.264 через VA-API.

Транслятор шейдеров отключен на этапе конфигурирования, чтобы его включить, нужно добавить параметр -DWITH_GLES2=0 к вызову cmake. Но скорее всего он вам не понадобится.

Чтобы включить использование аппаратного декодера, нужно добавить параметр enable_hwdec = 1 в ~/.config/freshwrapper.conf.

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

Делал что-то с версиями libavcodec?

Да, добавил пачку псевдонимов для типов и функций, чтобы и старые версии ffmpeg работали.

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

Да свяжись ты уже наконец с Mozilla и потребуй у них сделать твой freshplayer в Firefox изкоробки. А то добавляют в новых версиях всякое говно, а нужные вещи, типа поддержки PPAPI - даже не чешутся. И вообще - NPAPI в 2015 - это стыд и срам.

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

И вообще - NPAPI в 2015 - это стыд и срам.

Как и PPAPI, в общем-то. Их позиция ясна — от плагинов надо избавляться, вместо них есть JS API к браузеру.

Вот тут есть замечательная фраза:

Feel free to create your own Firefox build with a Pepper API

Вот я и делаю «свой Firefox» с PPAPI, как могу. :-)

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

Кстати, вопрос: как заставить играть «360° Video», где можно мышкой вращать камеру? Например, это. Что для этого нужно?

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

Что для этого нужно?

Выбросить Flash :-)

Эта фича есть только в HTML5 плеере (как и видео с нескольких точек). Теоретически они могут её реализовать в плеере на Flash, но тогда придётся выбросить StageVideo. Вряд ли они вообще этим будут заниматься, ведь на Youtube Flash объявлен устаревшим.

StageVideo, который нужен для аппаратного ускорения видео, накладывает серьёзные ограничения. За обычной сценой Flash как бы появляется виртуальная поверхность, в которой проигрывается видео, а в самой сцене проделывается прямоугольное отверстие, через которое это видео просвечивает на экран. Натянуть такое видео текстурой на 3d объект в рамках API Flash нельзя, его там как бы и нет вообще. Можно для такого использовать Video, но тогда всё декодирование будет программным.

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

Кстати, вопрос: как заставить играть «360° Video», где можно мышкой вращать камеру? Например, это.

А как по этой ссылке что-либо вращать? У меня HTML5.

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

Значит, надо попробовать в Chromium. В Firefox у меня тоже не работает, оказывается.

Попробовал. Ничего не вращается. Видео ведёт себя как самое обычное видео на YouTube.

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

А как по этой ссылке что-либо вращать?

Так отож. Сам не могу понять, а у людей работает. Надо еще попробовать на офтопике в хромом...

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

Подозреваю, что это нечто другое нежели ютубовские «360-видосы». У меня с таким и раньше не было проблем.

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

К тому же, на этом сайте под видео есть ссылочки. Так вот ютубовская «desktop» версия как раз и не пашет...

Gonzo ★★★★★
()

Не собиралось в Fedora 22. Пока я не проставил (1) В файле ffmpeg-compat.h Походу что-то с проверкой.

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

Кстати, вопрос: как заставить играть «360° Video», где можно мышкой вращать камеру? Например, это. Что для этого нужно?

Сменить user-agent на хромовский :/

Ни в опера, ни в хромиум, ни в safari не заработало пока тупо user agent не сменил

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

В Fedora заголовки в отдельные поддиректории кладут. Совсем недавно правки на эту тему продавил в репозиторий. Перед сборкой стоит удалить всё содержимое директории build и сконфигурировать заново.

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

добавить в сборку тестовых бинарников с pkg-config

Примерно так там и делается. Pkg-config используется для обнаружения нужных библиотек и флагов, которые они хотят. Всё потом собирается по категориям в списки — директории для заголовков, директории для библиотек, имена библиотек, особые определения. Просто я забыл модулю cmake передать список. Библиотеки сложно забыть, там обязательно нужно имя, а вот с заголовочными файлами легко — в Debian всё складывается в /usr/include, так что обычно в этой части в выводе pkg-config всё равно пусто.

У меня в Fedora 21 в виртуалке теперь собирается. У тебя всё ещё ошибки? Какие?

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

так что собираем с WITH_HWDEC=0

Я сейчас стараюсь сделать так, чтобы собиралось с достаточно большим количеством разных версий ffmpeg/libav. VA-API туда добавили достаточно давно, по крайней мере, в Debian 7 теперь собирается и работает.

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

Даже в хроме менять user-agent? Что еще за ерунда? :) Кстати, попробовал в офтопике пока что - вроде как HTML5, все дела, но не хочет работать :/

Ни FF, ни Google Chrome.

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