Saturday, September 10, 2011

Adobe announced Flash Media Server 4.5 couple of days ago at the IBC conference. It didn't take long before the 'tech journalists' started writing ill-informed posts about how this marks the demise of Flash. This post is my humble attempt to educate them about what Flash ecosystem really is.

"Flash content" ≠ videos.

Almost all posts in the above techmeme cluster seem to interchangeably use "flash content" when they are really talking about just videos. 'Flash content' means anything that can be interpreted by the Flash Player aka the Flash runtime.

The notion of FlashRuntime being a video player seems to come from the common reference of 'Flash Player'. It was originally called a player because it used to be a player for streaming vector animations. Over the past decade, Flash player has grown to do a lot more, and hence its more appropriate to consider it the 'FlashRuntime', than as 'FlashPlayer'.

I will henceforth refer to FlashPlayer as FlashRuntime to be unambiguous.

The FlashRuntime is a programmable environment that can download Flash content (packaged as .swf files) and execute it. Flash content can include text, images, audio, video and vector drawings. Soon this will also include native 3D content.

Since Video is one of the content types that FlashRuntime understands, a developer can write a videoPlayer that works inside FlashRuntime. All those video players you see on youtube, vimeo, hulu etc are created by those website developers, not Adobe. FlashRuntime provides a platform for them to build it. Adobe just provides the platform ( and sells tools to create flash content).

There are other types of Flash content that people use all the time. Browser based games like Farmville, angrybirds, Planet vs zombies etc. are also Flash content.

scribd.com serves documents online through a Flash based reader. This is Flash content too.

aviary.com allows editing images in the browser using an application written for the FlashRuntime.

audiotool.com helps artists create electronic music from the browser. This application is created using Flash too.

You could call these applications 'flash content' too. Thats what they are, from the FlashRuntime's perspective.

So video can be part of Flash content. But not all flash content is video.

Flash Media Server does not serve all Flash content.

Flash Media Server provides services that help create Flash content. One of the main uses of Flash Media Server is streaming Video content (Read more). So a developer can create a videoplayer that plays streaming video from Flash Media Server.

What changed in Flash Media Server 4.5

In its earlier days, Flash Media Server used to stream live video only over a custom protocol(RTMP). So, users who had restricted access to the web (for eg., inside corporate firewalls) were not able to view these videos. Adobe then came up with HTTP Dynamic Streaming protocol. This allowed live video to be streamed over standard HTTP. Anyone with access to HTTP could now watch videos from Flash Media Server.

When Apple built iOS, they created a new protocol - HTTP Live Streaming - to stream live video to iOS devices. This protocol was the only way to stream live video to iOS devices.

This created a problem for Adobe's Flash Media Server customers. They didn't want to create two servers - one for iOS devices and another for everything else. Enter Flash Media Server 4.5.

Flash Media Server 4.5 now streams videos using Apple's protocol too. This helps Adobe's customers to stick to their existing infrastructure. If an iOS video player needs the HTTP Live Streaming stream, FMS will deliver that. If another video player asks for the RTMP stream or HTTP Dynamic Stream, the same FMS will deliver that too.

Thats all to it. This new feature in FMS4.5 will not allow *all* flash content to be available on iOS devices. It streams videos to iOS devices. It allows Adobe to keep their FMS customers from switching to its competitors in the video streaming server market.

Will this have any impact on Flash Runtime usage?

The FlashRuntime has been capable of handling videos from non-FMS servers since the time flashRuntime included external video capabilities. Google videos, for example - built their custom video streaming server right from the beginning. This is the server app that now serves youtube videos.

Youtube will probably replace their FlashRuntime based video player when HTML5 enabled browsers reach a substantial chunk of their user base.

This FMS4.5 release does not change anything.

Is Flash dying?

When I first started developing Flash content, there was a lot of chatter about how flash is 99% bad and Flash is evil. Then video came along, and Flash not just survived but became the best tool for video delivery. Now that browsers are catching up with native video (and canvas), the anti-flash chatter seems to gain momentum again. Meanwhile, Flash Runtime seems to be on the verge of another pivot with the upcoming FlashPlayer 11. This upcoming version includes hardware accelerated 3D support. May be Flash will move on in this direction, and become a defacto standard there. May be not. The point is - to hurt Adobe, developers will have to stop using Adobe tools. If Adobe built tools that enable developers to create Flash like content, but native to browsers (HTML+CSS+js) and Flash developers will move on to using those tools, Adobe might not even mind FlashPlayer dying.

FMS4.5 will only help Adobe make new customers. Existing customers are not going to move away - infact their lives just got a little easier. So please stop writing Apple - 1 / Adobe - 0 posts. Thank you. Now, do this: