Selecting the Best Adobe Flash Player in Linux for x86 and ARM
I’ve had countless and recurrent crashes caused by Adobe flash plugin either in Firefox and Chromium, mainly while playing videos from YouTube or other online video services that still mostly use flash, instead of HTML5. Adobe flash death is certain, but up to now it has been soooo slow, so I doubt that thing will truly die any time soon, and unfortunately it will probably be with us for many years to come. To work around the issue, I started by enabling Youtube HTML5 player, and try to play embedded videos inside YouTube instead of the orignal website. I still had crashes from time to time, and this method did not help with other video services. So I decided to check out what I could do to fix the issue.
When you go to http://www.adobe.com/software/flash/about/ you can check your flash version, and Adobe will also list the player version for different combination of operating systems and web browsers.
Adobe has stopped provided updated for Linux and Solaris for a while, so Firefox will always be stuck to 11.2.x in Linux. Google has however developed their own Pepper-based Flash Player for Chrome, as Google consider flash (and Java) to be insecure.
There are currently three main options in Linux x86 to support flash:
- Gnash – GNU Flash, open source version of the player. Found in browser-plugin-gnash package.
- Adobe flash – Version 11.2. Found in flashplugin-installer or flashplugin-nonfree package. The library is called libflashplayer.so.
- Google Pepper – Version 12.0. Found in google-chrome-stable package. The flash library is called libpepflashplayer.so.
Adobe flash and Google Pepper are not compatible, and Mozilla has no intention to implement the Pepper API, at least for now.
In my case, Firefox and Chromium both used Adobe flash library, and both crashed with version 11,2,202,346. I’ve tried to install Gnash with “sudo apt-get install browser-plugin-gnash“, but it did not seem to work. The only remaining option was to use Google Pepper, so I installed Chrome with “sudo apt-get install google-chrome-stable“, and I have to say flash content seems to be pretty stable now. So for Ubuntu on x86 / AMD64, the best option for flash support seems to install Chrome.
If for some reasons you’d like to keep on using the open source Chromium instead of Chrome,. but still make use of the Pepper library, simply edit /etc/chromium-browser/default, and edit CHROMIUM_FLAGS as follows:
You’ll need to install Chrome to get libpepflashplayer. Your libpepflashplayer may be in another location in your computer. To find it, run locate libpepflashplayer.so.
Go to http://www.adobe.com/software/flash/about/ to verify the version, and you show see:
You have version 12,0,0,77 installed
Let’s have a look at ARM Linux. In Ubuntu, I used to be able to install flash with sudo apt-get install flashplugin-nonfree, but all “flashplugin” packages have now completely disappeared from Ubuntu repository, at least in 13.10. So the only option are Gnash, and Pepper. Gnash can install fine, Adove “About Flash” page returns “You have version 10,1,999,0 installed”, but I was enabled to play any YouTube videos. Chrome is not available for ARM, at least not via the Ubuntu repositories, so we need to use Chromium with libpepflashplayer.so extracted from Chrome OS in the Samsung ARM Chromebook.
The guys behind Radxa Rock have just released Android, Ubuntu, and dual boot images for the board, and the Linux images (Linaro 13.11 Desktop – Lubuntu) happen to support libpepflashplayer.so. Instead of modifying /etc/chromium/default, they’ve changed /usr/bin/chromium-browser script with the following:
/usr/bin/chromium-browser-bin --ppapi-flash-path=/usr/lib/libpepflashplayer.so --ppapi-flash-version=22.214.171.124 --ppapi-flash-args=enable_hw_video_decode=0,enable_stagevideo_auto=0,enable_trace_to_console=0
Adobe “About Flash” page returns “You have version 11,5,32,0 installed”, which confirms this is not Adobe flash for ARM, although it may not be the latest version (12.0). It does not work, but since hardware decode is not available in Linux, performance is poor. A 360p video plays OK within YouTube, but if you zoom or switch to full screen I get about one frame per second. Other flash content appears to be rendered just fine.