Search code examples
flash

What exactly is the flash player?


I'm a little confused about the flash technology.

To watch a flash video, you need to have a Flash player installed in your browser that you get from get.adobe.com/flashplayer/

To display a flash video on your website, you need a flash player for the web, like Flowplayer or JW Player.

Why do you need it both in your browser and on your website?

In other words, what does the browser's flash player do and what does the web's flash player do?

What does the browser's flash player look like? (I assume it's a plugin but what is it precisely, instruction code for the browser or is there more to it?)

What does the web's flash player look like? (Is it just an swf file? what's inside this file?)

Thanks!


Solution

  • Adobe Flash Player might be somewhat confusing name because it isn't really a player (not a media player like VLC or Winamp), it is a runtime like JVM (Java Virtual Machine) or CLR (Common Language Runtime). It comes with some libraries able to play video, but those are too low-level for the end user to be able to watch video.

    Historically, for those not familiar with the technology from the inside, Flash has been linked to You-Tube and thus streaming videos, however, it is marginal to the technology in general. Flash is often used to do many other things on the web, like games or just useful interactive things like dressing rooms for online shops or collaborative software etc.

    One would write a video player in Flash the same way one would do it in Java or C#: you could use some ready-made components or design one from scratch.

    Now, there has been attempts at making an alternative (opensource) Flash player, the older one is Gnash, the newer one is Lightspark. Neither of them both can do much at present. Perhaps, if Flash technology survives the crisis, Lightspark seems like a promising project. We'll see...

    ActionScript is the major language for programming in Flash, just like Java is to JVM. But there's also Haxe, which can compile to Flash. There's also a cross-compiler project known as Alchemy, which can compile whatever language that can be compiled to LLVM assembler, but practically, mostly C / C++. There's also OpenLazlo... but I don't really know what exactly the language it is using.

    Flash runtime can be distributed in different ways. It can be a NPAPI (Netscape Plugin API) compatible plugin (one that runs in Mozilla browsers), a PPAPI compatible plugin (Pepper Plugin API, one that runs in Google Chrome), an ActiveX (Internet Explorer). It can be a standalone program for Windows or OSX. There existed standalone versions for Linux, but they have been discontinued recently. Adobe also discontinued support for Linux version of NPAPI plugin. There also has been players for mobile browsers, but all of them were discontinued at different times. Standalone versions, however, have developed into AIR - this is how modern Flash on mobile devices works. AIR is also the version that works on most desktops (sans Linux, where it was discontinued more then a year ago).

    There were some other less known uses of Flash player. For example Scaleform is a project which uses Flash player for rendering graphical interface in PC games. SWFStudio and MDM Zinc are two companies that can create OSX and Windows programs which embed Flash player and can interoperate with the underlying native application. .NET Framework contains an ActiveX which one can use in developing Windows.Forms applications (maybe WPF too, but I never tried). Technically, it should be also possible to embed Flash player (as a separate install) in Qt-based applications through the bindings to the WebKit browser that it has.