There has been a lot of change in the interactive landscape the last couple of years. Like many of my colleagues and developers in general, I have been branching out further, working with a lot of other technologies, tools and frameworks on my own and for client work. This past year I’ve done quite a bit more JavaScript and jQuery related projects. Many of them involving augmentation and integration of Flash for HTML5 related fallback, during what has proved to be a real transitional period for Flash and HTML5 delivered media. In late 2011, I helped out one of my clients, by customizing and forking the popular jPlayer project: http://www.jplayer.org/ jPlayer is a popular JavaScript library used to deliver audio and video with a focus on HTML5 delivery and fallback to Flash, or vice versa. It leverages jQuery extensively, hence the name. Pandora’s recent relaunch of their site, is one high profile example of its usage, and there are many more in the Google Groups Discussion List for jPlayer. According to BuiltWith, there are currently at least 3,740 sites using the library actively and it it ranks as one of the more popular libraries for the top million sites as well.
It’s is really rather useful, and very approachable even for someone unfamiliar with jQuery or just basic knowledge of JavaScript. One of the nicer aspects of it, is that even when using Flash for delivery, the entire UI and controls are all still done in HTML and CSS and controlled via JavaScript and communicate with Flash via ExternalInterface. This makes it very flexible in terms of layout, skinning and branding. This happened to match perfectly with what my client was trying to do, so it was a great fit. Unfortunately it only supported HTTP progressive delivery of content in Flash and there was no support for Adobe’s RTMP for for streaming audio and video sources. So that is what my fork encompasses, adding support for RTMP audio and video sources. The fork I put together can be found here: http://github.com/rmhall/jplayer/ and includes some of the more expected things from RTMP, such as multi port/protocol negotiation, re-use of connections, and some other standard stuff. No multi-bitrate support or advanced QoS metrics, but that is on the drawing board/Todo list. I actually got word just the other day, that at some point soon my additions and changes will be incorporated into the main repository. That will nice as others may poke and prod at it to improve it beyond what I have done. If you are interested in learning more, read the README and RTMP_NOTES files located in my fork. I also welcome any improvements, suggestions, etc. – feel free to open any issues and make note right in the github repo.
If you would like to see the end results of the changes in action for my client, check out Daytrotter – http://www.daytrotter.com/
I’ve been working with several other audio and video frameworks the past few months, and plan to write up some of my experiences about them all and possibly do a bit of comparison of each. With the current state of HTML5 support for audio and video being still fairly fragmented across browsers, and so many different libraries and approaches for tacking this, I’ve found that depending on the needs of the project, some libraries and approaches have real benefits over others. I’ve also been working on some custom/hybris solutions and hope to be able to share some of that work here soon also.