Как заставить работать Firefox в Linux с новейшей версией Flash Player (выше 11.2)
Как известно, новые версии Adobe Flash Player существует в нескольких версиях:
- ActiveX — для Internet Explorer’a (только в Windows)
- NPAPI — существовал долгое время для всех остальных браузеров, в последнее время остановился в развитии (в Linux, для Windows всё ещё выходит)
- PPAPI — существует с относительно недавнего времени для браузеров на движке Chromium
Компания Adobe с 2012 года отказалась поддерживать плагин Flash Player для NPAPI, и поэтому у многих пользователей FireFox в Linux версия плагина не поднимается выше 11.2
При этом сейчас (сентябрь 2016 года) уже есть Flash Plugin версии 23 и даже старше.
Решение придумал Ринат Ибрагимов, программер из Казани. Он написал обёртку (враппер) между NPAPI (системой плагинов Firefox) и PPAPI (системой плагинов Chromium). Эта обёртка выглядит для FireFox как обычный NPAPI-плагин, в то время, как для самого плагина, она выглядит как браузер с поддержкой PPAPI (как например Google Chrome).
То есть, схема работы такая:
Новый Adobe Flash PPAPI <=> Враппер FreshPlayer Рината <=> Firefox
Вот аккаунт героя на гитхабе: https://github.com/i-rinat
А вот и репозиторий с враппером: https://github.com/i-rinat/freshplayerplugin
Хотя в самом репозитории есть инструкция по установке, запишу здесь чёткую последовательность действий, чтобы не забыть, да и другим помочь.
Итак, как сделать чтобы FireFox или IceWeasel смогли работать с новым Flash Plugin’ом в Debian и Ubuntu:
В моём случае, новый Flash Player нужен в браузере IceWeasel версии 34 (Это тот же FireFox но для Debian, просто названный иначе в соответствии с лицензионными ограничениями налагаемыми на торговую марку FireFox и его логотип).
Если у вас не IceWeasel а FireFox — абсолютно ничего не меняется.
Кстати, если кому интересно, где взять последнюю версию IceWeasel (ту же самую что последняя версия FireFox) — вы можете воспользоваться инструкциями отсюда: http://mozilla.debian.net/, там достаточно выбрать, какая версия вам нужна (обычно это release) и какой у вас дистрибутив Debian — и вам датут строчки для /etc/apt/sources.list которые позволят вам установить нужную версию прямо из репозитория.
1. Проверить, какая версия флеша установлена у вас и удалить её.
Для этого в FireFox/IceWeasel открываем адрес about:addons и выбираем вкладку «плагины».
У меня до начала всех операций там была вот такая картина:
Как правило, флэш в Debian/Ubuntu устанавливается при помощи пакета flashplugin-nonfree. Поэтому удаляем его:
# aptitude remove flashplugin-nonfree |
2. Раздобыть новый флеш.
Помним, что для работы нам всё-таки нужен новый флеш — его PPAPI-версия, которая подходит для Хрома, но не подходит (пока) для Firefox.
Сделать это можно одним из следующих способов:
- Можно скачать плагин с сайта Adobe, в последнее время, когда другие методы срабатывают не всегда, этот метод наиболее надёжный
- Если у вас дистрибутив новее чем Debian Wheezy (например Debian Jessie), либо Ubuntu Wily Werewolf — достаточно установить пакет pepperflashplugin-nonfree
- Также, если у вас подключен репозиторий wheezy-backports, там тоже есть этот пакет
- Можно скачать этот пакет прямо вот отсюда: https://packages.debian.org/wheezy-backports/pepperflashplugin-nonfree
- Можно установить Google Chrome, скачав его с сайта Google — он тянет с собой новую версию флеша и ею мы и воспользуемся. Кстати, pepperflashplugin-nonfree втихоря делает тоже самое: качает пакет с хромом и выковыривает оттуда новый Flash-плагин.
Скачать плагин с сайта Adobe можно здесь: https://get.adobe.com/ru/flashplayer/, при этом вам будет предложено скачать старую версию флеша (11-ю):
1) Слева внизу нужно нажать ссылку «Нужен проигрыватель Flash для другого компьютера».
2) В выпадающем списке «шаг 1» нужно выбрать вариант Linux 32-bit или Linux 64-bit (в зависимости от того, что у вас)
3) В выпадающем списке «шаг 2» нужно выбрать вариант FP XX.X for other Linux .tar.gz (где вместо XX.X будет версия плеера, у меня там 23.0),
4) Нажать справка кнопку «загрузка»после закачки файла, распаковать его, и найти файл libpepflashplayer.so, это и есть плагин.
5) Создать папку /opt/google/chrome/PepperFlash, и положить в неё файл libpepflashplayer.so
Если пакет есть в репозитории (у вас Jessie, Wily Werewolf, либо wheezy с подключенным Wheezy-backports), тогда:
# aptitude install pepperflashplugin-nonfree |
Если скачали deb-пакет, то:
# dpkg -i ./pepperflashplugin-nonfree.deb |
3. Скомпилировать обёртку FreshPlayerPlugin
Именно она обеспечит связь между новым Flash-плагином и нашим FireFox’ом.
Установим необходимые для сборки пакеты (запуск от рута):
Для Debian Wheezy:
# aptitude install git cmake pkg-config ragel libasound2-dev \ libglib2.0-dev libconfig-dev libpango1.0-dev libgl1-mesa-dev \ libevent-dev libgtk+2.0-dev libgles2-mesa-dev libxrandr-dev \ libpulse-dev libssl-dev libgtk2.0-dev libicu-dev |
Для Debian Jessie и Ubuntu Wily Werewolf:
# aptitude install git cmake pkg-config ragel libasound2-dev \ libglib2.0-dev libconfig-dev libpango1.0-dev libgl1-mesa-dev \ libevent-dev libgtk2.0-dev libgles2-mesa-dev libxrandr-dev \ libpulse-dev libssl-dev libgtk2.0-dev libavcodec-dev \ libavformat-dev libavfilter-dev libv4l-dev libv4l-0 \ libva-dev libvdpau-dev libicu-dev |
Клонируем репозиторий с исходными кодами и создаём папку build (все это уже от имени простого пользователя)
$ cd /tmp $ git clone https://github.com/i-rinat/freshplayerplugin.git $ cd freshplayerplugin $ mkdir build $ cd build |
Скомпилируем плагин-враппер:
$ cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo ..
$ make |
После сборки в папке появится файл libfreshwrapper-flashplayer.so который и является плагином для FireFox/IceWeasel и позволяет использовать новый флеш.
4. Установим и настроим плагин для FireFox/IceWeasel
Файл libfreshwrapper-pepperflash.so нужно скопировать в папку ~/.mozilla/plugins — она уже должна у вас быть, если FireFox/IceWeasel установлен и хотя-бы раз запущен. Если же нет — можно просто создать её вручную.
Исходя из того, что мы всё еще находимся в папке build:
$ cp ./libfreshwrapper-flashplayer.so ~/.mozilla/plugins/ |
Также, нужно скопировать конфигурационный файл из папки ../data (там лежит пример) в папку ~/.config
$ cp ../data/freshwrapper.conf.example ~/.config/freshwrapper.conf |
После копирования файла настроек нужно открыть его и проверить параметр pepperflash_path, он должен указывать туда, где лежит ваш плагин pepperflash.
- Если вы устанавливали google chrome, тогда путь там правильный «/opt/google/chrome/PepperFlash/libpepflashplayer.so»
- Если вы устанавливали flash с помощью deb-пакета, тогда он должен лежать там же, так как, в соответствии с данной статьёй https://wiki.debian.org/PepperFlashPlayer, пакет просто скачивает стабильную версию Google Chrome, «выковыривает» из неё плагин и кладёт туда, где им сможет пользоваться браузер Chromium (то есть в то же самое место)
Проверьте, действительно ли там если плагин, и если да — всё в порядке.
5. Проверим FireFox/IceWeasel
Поскольку наверняка вы не выключали браузер все это время (инструкцию то как-то надо читать), самое время его перезапустить.
После перезапуска снова открываем about:addons, выбираем там «плагины», и видим какая версия там написана. В моём случае это аж 23-я версия (возможно это версия не Flash Plugin от Adobe, а версия гугловского плагина, который мог быть как-то допилен командой гугла):
Для проверки откроем какой-нибудь сайт, где требуется Flash Player (но не ютюб, потому что в нём видео будет работать и без Flash, на голом Html5), например vimeo.com, и пробуем открыть какое-нибудь видео.
Комментарии от создателя враппера (и от меня)
- В плагине в основном работает все, но некоторые функции еще не реализованы (от себя рекомендую время от времени загружать из репозитория очередную версию, компилировать, и заменять ею старую.)
- Хотя интерфейс PPAPI считается более безопасным за счёт встроенной «песочницы» (именно поэтому в Google Chrome отказались от NPAPI в пользу PPAPI), само API по умолчанию не включает «песочницу», но позволяет использовать механизмы песочницы при реализации собственных плагинов. Данная реализация никакой песочницы не содержит, так что безопасность тут не выше чем в обычном NPAPI-плагине
- Все изестные проблемы перечислены на странице https://github.com/i-rinat/freshplayerplugin/blob/master/doc/known-issues.md
- Для Ubuntu существует PPA (пользовательский репозиторий) содержащий уже собранные пакеты freshplayerplugin, и он поможет устранить этап компиляции плагина вручную. Гуглится он по запросу «Install fresh player plugin in ubuntu via ppa». Сами deb-пакеты вот http://ppa.launchpad.net/nilarimogard/webupd8/ubuntu/pool/main/f/freshplayerplugin/, я его не пробовал, если хотите — используйте на свой страх и риск.
Не работает на Debian/Jessie amd64 ;-(
В ближайшее время дополню статью для Jessie-64
буду следить за новостями )) это будет очень полезно многим
Только что полностью выполнил установку на Debian Jessie amd64, всё работает.
Уточни, что именно не работает у тебя.
постоянно стоит на «паузе» перемещатся могу по видео ползунком, отрисовывает кадры
debian:~/.config$ iceweasel
(process:19445): GLib-CRITICAL **: g_slice_set_config: assertion ‘sys_page_size == 0’ failed
NOT SANDBOXED
[fresh 19578] not implemented: PPB_OpenGLES2DrawBuffers(Dev);1.0
ALSA lib pcm_dmix.c:1022:(snd_pcm_dmix_open) unable to open slave
[fresh] [error] alsa_create_stream, snd_pcm_open, Нет такого файла или каталога
[fresh] [error] alsa_create_stream, snd_pcm_open, Нет такого файла или каталога
[fresh] [error] do_ppb_audio_create, can’t create playback stream
[fresh] [error] do_ppb_audio_create, can’t create playback stream
[fresh] [error] ppb_audio_start_playback, bad resource
[fresh] [error] ppb_audio_start_playback, bad resource
У тебя установлен PulseAudio? Судя по сообщениям, не удаётся запустить звук, причем сначала он пробует dmix, потом alsa, это может говорить о том, что PulseAudio он почему-то не нашел.
И еще — попробуй запустить полностью без конфиг-файла (т.е. freshwrapper.conf), у меня работает без него, и один товарищ говорил что ему приходилось что-то там в этом файле подкручивать чтобы добиться чего-то от флеша.
Возникла трудность, после $ cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo ..
сам $ make пишет: make: *** Не заданы цели и не найден make-файл. Останов.
Какие варианты?
Debian 8 Jessie testing (i386 32bit)
make’у для работы нужен Makefile, причём в той папке, откуда make запускается, либо из указанной насильно.
Если он говорит «не найден make-файл», значит ты его запускаешь не из той папки где этот Makefile лежит, либо не указываешь ГДЕ он лежит.
Проверь последовательность команд, выполняемых перед запуском make. Ты должен его запускать из папки build, но при этом указывать в конце команды «..» — указание на то, что Makefile лежит уровнем выше.
Выполнял шаги последовательно, как указано в посте. cmake выполняется находясь в папке build, судя по тому что указывается .. в статье, то и у меня тоже makefile должен был оказаться на каталог выше чем build, но как показал терминал, у меня там нет этого файла. Пойду попробую еще раз.
Неверно я тебе подсказал. Суть в том, что сначала ты запускаешь cmake, а он находит все нужные библиотеки, проводит конфигурирование, и создаёт файл Makefile прямо в текущей папке. А вот make ты уже запускаешь без параметров, и он ожидает что Makefile будет в текущей папке. Если этого файла в текущей папке не появилось — это значит что cmake отработал с ошибкой. Надо смотреть его выдачу. Перед запуском cmake заново, нужно сначала отчистить папку build.
Кстати, вчера пробовал ребилдить обёртку, и выяснил что теперь в Jessie нужен пакет libvdpau-dev, добавил его в список необходимых пакетов. Возможно именно из-за него у тебя cmake не отработал как надо.
Нашел вариант с dpkg -i попробовал, ребутнулся, встал и полетел. Спасибо за помощь!
То есть просто скачал deb-пакет по ссылке? Незачто 🙂
Скачал и поставил. В iceweasl он есть, 12.1 r720.
Однако как оказалось я поспешил, при запуске flash файлов появляется классное сообщение:
We’re sorry, Lightspark encountered a yet unsupported Flash file
SWF file: http:// ссылка на файл
Cause: Unhanlded ActionScript exception
Press Ctrl+C to copy this error to clipboard
И соответствено не запускается.
Удалю, попробую скомпилировать.
Ну так LightSpark это же «open source Flash player implementation» — то есть попытка сообщества реализовать функционал флэш плейера. Думаю он не скоро сможет проигрывать любые SWF файлы
Поступил иным путем. Поставил chrome, в нем все заработало с полтычка. Но я не люблю хром. Сижу гуглю как вытащить flash из хрома и удалить его. В любом случае, Ваша статья решила мою проблему. Добавлю сайт в Speed dial!!!
Суть именно в том, что в Chrome находится Flash, работающий через PPAPI, и мы его именно и пытаемся включить в FireFox, который умеет работать только через NPAPI, и вот с помощью fresh-player, которыйты и пытался скомпилировать, как раз создаётся мост между NPAPI и PPAPI. Так что без последней версии флэша из хрома ты всё равно бы ничего не заставил работать.
Хм, и то верно. Ок, позднее попробую повторно скомпилить тексты и запустить PPAPI на IceWeasel.
Failed to load «libpepflashplayer.so».
Frashwrapper is a translation layer which needs
PPAPI plugin backend. Ensure your system have
«libpepflashplayer.so» available.
Paths tried:
~/.mozilla/plugins/libfreshwrapper-flashplayer.so
Причем, файлик там лежит. Правда при компиляции попадались какие-то строки красного цвета.
хелп
Привет. «libpepflashplayer.so» — это сам PPAPI-плагин. Если говорит что его нет, значит скорее всего и правда нет. Для эксперимента — установи Google Chrome, он с собой сразу же тащит этот плагин, так что должно заработать. Также, если у тебя Debian Jessie или Wheezy с бэкпортами из Jessie, то у тебя должен быть пакет pepperflashplugin-nonfree
ха! просто закоментил строку
pepperflash_path = «~/.mozilla/plugins/libfreshwrapper-flashplayer.so»
в конфиге
И все заработало!
Правда хром я перед етим поставил таки.
Ну вроде работает, спасибо!
— Performing Test HAVE_AVPixelFormat
— Performing Test HAVE_AVPixelFormat — Failed
— Performing Test HAVE_AV_PIX_FMT_VDPAU
— Performing Test HAVE_AV_PIX_FMT_VDPAU — Failed
— Performing Test HAVE_AVCodecID
— Performing Test HAVE_AVCodecID — Failed
— Performing Test HAVE_AVCodecContext_get_buffer2
— Performing Test HAVE_AVCodecContext_get_buffer2 — Failed
— Performing Test HAVE_AVVDPAUContext
— Performing Test HAVE_AVVDPAUContext — Failed
— Looking for av_frame_alloc
— Looking for av_frame_alloc — not found
— Looking for av_frame_free
— Looking for av_frame_free — not found
— Looking for avcodec_free_context
— Looking for avcodec_free_context — not found
— checking for module ‘libv4l2’
— package ‘libv4l2’ not found
CMake Error at /usr/share/cmake-2.8/Modules/FindPkgConfig.cmake:283 (message):
A required package was not found
Call Stack (most recent call first):
/usr/share/cmake-2.8/Modules/FindPkgConfig.cmake:337 (_pkg_check_modules_internal)
CMakeLists.txt:133 (pkg_check_modules)
— Configuring incomplete, errors occurred!
Никакими силами libv4l2 не устанавливается …..
Какой дистрибутив?
Все библиотеки из инструкции установил?
В частности, там есть библиотеки libv4l-dev и libv4l-0. Установлены?
Привет. В Debian 9 ещё не пробовал, через некоторое время буду обновлять свои системы — попробую, тогда допишу в статье. А пока тебе можно сделать так: положить pepperflash туда куда хочешь, а в плагине для фаерфокса настроить путь к этому файлу.