Issues With Adobe Flash Player
On our Music page, I've installed a flash-based MP3 player applet. If you've got a fairly recent version of Adobe Flash installed, you should see a small "play" button next to each song title. Clicking on one of the play buttons is intended to play a sample of the song right there in the web browser.
But there's a problem. Due to a bug in the latest version of Adobe Flash, if you happen to be running a specific combination of operating system, browser, and Flash version, then the song clips won't play. In those cases, theoretically, if I've implemented my work-around correctly, you should still see a play button, but the button will download an MP3 song clip that plays in a separate media player program, rather than playing right there in the browser.
Quick Work Arounds
If you're still having trouble playing the song samples, here are some different things you can try:
- Easiest and fastest: Switch to Internet Explorer and make sure you have the latest Adobe Flash. The problem only seems to be with Firefox on Windows, so if you need this workaround, I know you've got IE sitting there ready to use. Just hold your nose and use it. Remember to wash your hands afterwards.
- If you want to use Firefox to listen to the samples directly in the web browser rather than downloading them, you have to Downgrade to a version of Flash that is between version 7.x.x.x and version 9.0.47.0. The problem only seems to happen with version 9.0.115.0 or later. (To find your flash version, right click on the applet and select the "About" menu.)
- If you get the play button, and when you click on it, it changes to a square instead of a spinning "loading" icon, then it's actually working OK and your only problem is that your volume is turned down or muted. See if you get sound in YouTube videos and similar Flash applications.
I'm hoping that my MP3-download work-around is working for everyone. If you still can't get the clips to play, please let me know by responding to my Livejournal thread about it. List the browser, operating system, and the version of Flash you're using, and describe the behavior you're seeing.
Technical Details
If you're technically inclined, and you want to know more about this problem, I'm going to use this page to detail the information I'm gathering on this bug. Hopefully this will be useful to someone, hopefully even Adobe themselves. I have submitted this bug to Adobe via their bug reporting system. If you've got information about this that you'd like to share, please respond to my Livejournal thread about it with any information and insights you care to offer.
I spent days trying different Flash Player applets out. They all exhibited the same or similar symptoms. So it's not the applets, these are all Flash applets that have been around for a long time, they have all been tested and used on many different popular web sites, and they all work the same way. They all pretty much do the same thing and call the same functions within Flash.
Bug Description
All of the applets I tried, failed when faced with this particular combination, and failed in the same way:
- OS: Windows (XP or Vista).
- Browser: Recent Windows Firefox, Windows Opera or Windows Safari.
- Flash Plugin Version: 9.0.115.0 or 9.0.124.0 (124 is the latest version as of this writing).
- The resulting bad behavior is: Flash applet looks like it's going to work, but instead of playing the MP3 file, sits on the "loading" animation and never plays. In the case of the XPSF applet that I use, the loading animation is a circle of dots that cycles clockwise. This animation never changes to the desired "square" icon, which would indicate it was playing the song.
- IMPORTANT: The page must have more than approximately 16-20 of the same Flash player object on the same page. 13 objects and it's fine, 14-16, maybe a problem, 20 and up, definitely problem every time.
- I had previously reported that <embed> fixed the problem. That turned out to be incorrect. I don't know what I was smoking, but later tests show it doesn't matter whether it's <object> or <embed>.
The applets always work perfectly in the following conditions:
- MacOS X always works, even with Firefox and with the latest Flash version.
- Internet Explorer always works regardless of OS or Flash version.
- Fewer than 14 applets on the page always works, regardless of OS or Flash version.
- Flash Version 9.0.47.0 or earlier always works, regardless of the number of objects on the page or the way they are called from the HTML.
Bug Demonstration Files
Please Click Here to see a set of pages that demonstrates the problem consistently on all of my Windows Firefox systems with 9.0.124.0 of Flash installed.
More Details
So it's clearly something Adobe changed after version 9.0.47.0, and it's something that breaks almost every quick-and-dirty little MP3 player out there in this strange and specific way. It even kinda/sorta breaks the little play buttons on Jonathan Coulton's Music Page, and he's using a completely different player applet than I am. (In fact, he is using the del.icio.us mp3 player, via a WordPress plugin). Although here's an interesting report I got about the way JC's player and my player interact:
"Ok, here is another data point for you. If I load the JC page and start playing one of his songs, then open your music page in another tab then at that point your Flash player works fine. If I then close the JC page your music player will continue to work fine, until I reload your page at which point it is broken again. If I load your page and try and play some music and also then load the JC page in a tab the JC page is then broken."
My notes: He says that was with build 124. I cannot replicate his results with build 124. Instead I get this: My page always fails, whether I play something from JoCo's page first or not. JoCo's page works if I hit his page first. JoCo's page fails if I hit my page first.
The del.icio.us mp3 player, by the way, works because it only implements a single Flash object on the screen and uses Javascript code to feed individual MP3 links to it. This Flash bug only comes up when you put more than 15 Flash objects on the screen.
Another point of data, something I tested on a suggestion: If you put 13 songs onto a page, and then put 10 more songs into an <iframe> within the page, you get the same failure behavior as you would if you'd put all 23 songs onto the same page. Not surprising, but good to know nonetheless.
Incidentally, the player applet I'm using right now is Fabricio Zuardi's XSPF Player, the "Music Player Button" version. I've looked at a few other player applets and of the ones I tried, they all failed in some way based on the parameters I've described above.
Most notably, I have tried the player that CDBaby uses, which is the Wimpy Player button, which is a commercial for-pay applet. Guess what? After some poking around at it, I found that Wimpy player fails identically to the XPSF player, based on the parameters I described above. To prove it, you have to find a page on CDBaby with more than 15 songs that have active "play" buttons on the page, such as this one, and compare it with a page that has fewer than 14 songs, such as our page.
Details of My Work-Around
I'm currently using Javascript to check and see which browser and flash version is running. If it's IE, I do nothing. If it's non-IE, I look for whether or not Flash is installed and check the flash version. If Flash isn't installed, or if it's one of the known-bad versions running under Windows, then I hide all of the Flash player buttons and show the direct-download buttons.
Hopefully this is working for more or less everyone, and gives everyone a chance to hear the song clips. I could envision some odd situations where it might not work, but they all involve very old browsers, very old versions of Flash, or important browser features such as Javascript disabled. I'm hoping that if you're surfing the web and expecting to play multimedia content, you're probably using a new enough browser, and wouldn't do things like cripple your browser and then blame me for it. If you still can't get the clips to play, please let me know by responding to my Livejournal thread about it. Report the browser, operating system, and the version of Flash you're using.
Thanks for your patience!
- Tony
