Monday, January 14, 2008

Between H.264 & 90% price drop, will Adobe’s new media servers mean more YouTubes?

I saw this artical and i loved the interview so im sharing it with you
the orginal artical http://blogs.zdnet.com/Berlind/?p=922

















Today, Adobe announced the third versions of its two Flash Media Servers: Flash Media Interactive Server 3 and Flash Media Streaming Server 3. While the two servers represent a range of improvements to both products, the most significant of those improvements are the built-in support for H.264 support (and its delivery to all Flash clients including Flash Lite 3, the one found on handsets) and a whopping drop in price for the Interactive Server — the one that’s quasi-clusterable (for scalability) and offers intelligent caching — from $45,000 to $4,500.


So what’s significant about that? For starters, running a streaming media service, be it for your own content or as a host for others’, thanks to Adobe, may no longer be the province of outfits like YouTube, Brightcove or media companies like CNN or Disney. Prior to shaving the cost by more than $40,000 per server, assembling a cluster of Adobe-based Flash media servers in a way that can scalably service hundreds if not thousands of simultaneously connected clients could easily run into the hundreds of thousands of dollars. Today, for what used to be the cost of one Flash Media server, companies with ambitions to be the next YouTube can now buy 10 such servers: one an “origin” server (the server that receives the initial request from a client), and the others “edge” servers (the servers to which the origin server, in an act of load-balancing, off-loads requests for servicing). Adobe’s media servers run on Intel/AMD-based machines that run Windows Server or Red Hat Linux. Of course, just because the cost of Adobe’s servers is now dirt cheap doesn’t mean that the high-bandwidth storage and networking infrastructure that the servers must connect to won’t set you back some serious coin.


To find out more about where Adobe is heading, I caught up with Kevin Towes, the company’s product manager for Flash Media Servers for a podcast interview. To listen to the interview, you can stream it from the Flash-based player above (it’s a coincidence our player is Flash-based - we’ve been doing it the same way via CastFire for a long time), manually download it through one of the player’s menu options, or if you’re already subscribed to ZDNet’s IT Matters series of podcasts (see how to subscribe), it will be automatically downloaded to your PC and/or your MP3 player.



One of the issues Towes and I cover is the shift from delivering what has been traditionally thought of as low-def video on the Net (and on-demand) to hi-def. What is hi-def video on the Net? In the TV world, hi-def is thought of as being at least 720 lines of vertical resolution if not 1080. But on the Net, the definition of hi-def is the subject of some debate. In the the interview, Towes defines 480 lines of vertical resolution as being hi-def for the Net, a full 2x the lines of vertical resolution found in the 320×240 sized video windows that were once commonplace on the Net, but are now less so (YouTube video windows are approximately 480W x 362h). Just for grins, take a look at ABC’s self-described HD channel for streamed content. I’m not sure how they do it (well, it involves a plug-in), but they do it well and wouldn’t it be something if all Net-based video-on-demand involved as many bits and full-screen video without caching problems.


Speaking of “streaming,” Towes and I talked about the differences between streamed video and progressively downloaded video and why today, so much Net-based video is still choppy when, with some better caching, it doesn’t have to be that way. From Towes’ point of view, there’s no single culprit since so many factors play a role. But, while the company’s servers support 1080 and 720 modes, Adobe’s sweet spot for streamable “HD video,” if you ask ask him, is apparently 480 lines of vertical resolution that require no more than a 3 Mbit/second bit rate (preferably 2 Mbit/sec).


Not to be forgetten, Towes and I also talked about the Flash Media Interactive Server’s little cousin: Adobe’s Flash Media Streaming Server — a far lower cost ($995), non-clusterable solution for streaming stored or live video in on-demand fashion. Towes and I covered a wide range of other video related topics and talked about the other measures that content providers can take to improve Net-based video performance as well as something called Device Central — a technology from Adobe that, once a handset running Flash Light 3 communicates its profile (handset manufacturer, model, network type, screen dimensions, etc.) to an Adobe media server, dynamically selects the most appropriate version of the content to ensure the best user experience on that given handset.


The pair of servers, announced today, won’t be available until the end of January. Sometime between now and then, I hope to get a demonstration up close and personal. In the mean time, check out the podcast interview.


Flash Media Encoder 2.0 Released - Adds MP3 Audio

Flash Media Encoder 2 (FME) has just been released. FME is a FREE live broadcasting tool and designed to enable you to capture live audio and video while streaming it in real-time to Flash Media Server (FMS).
It uses the high quality VP6 codec (and chances are that H.264 will be added to support the Flash Player's upcoming new codec) and also adds MP3 audio encoding, a much requested feature. On top of that, FME can also be tightly integrated into your streaming infrastructure with command-line control both locally and through a remote connection. Auto-restart after power failures or other system re-starts helps ensure that your live streams are reliably available.
You can download FME here.

Flash Media Server 3 Announced - New Licensing, Great Price

New Server Editions
This has been a long time coming and it marks a huge step forward for FMS as a platform. There will be no more bandwidth or connection limitations (instead it's all you can eat so to speak) and there will be two server editions which simplify the whole offering greatly: Adobe Flash Media Streaming Server and Adobe Flash Media Interactive Server. A free developer edition is also available.
As you may have guessed, Flash Media Streaming Server will allow you to - wait for it - stream video (both live and on-demand) while Flash Media Interactive Server basically presents the current feature set of FMS2 (and then some more), the swiss army knife of media servers which supports not only streaming but also has scripting capabilities, server side remote objects, and everything you are used to to date. This means that Flash Media Streaming Server (FMSS) is basically a stripped down version of the Flash Media Interactive Server, and it will cost less too (and pricing was a major sore point to date). This makes sense, because so far you had to pay for all features even if all you wanted to do was push video.

Pricing
FMSS will set you back a mere USD $995 while FMIS costs USD $4,500. Combined with the dramatic licensing improvements this means that the fully features Flash Media Interactive Server is much better value for money while Flash Media Streaming Server will allow you to push video for less than a thousand bucks. What's your excuse now for not using Flash video?

If you are like me and want to build not only video features but also throw in a bit of collaboration and multi user trickery then the Flash Media Interactive Server (let's call it FMIS) is for you. And get this: FMIS can be configured as Origin/Edge as well as standalone, which means the price point for large scale deployments has been totally slashed by about 90%.
In terms of other caps there's only the usual CPU restrictions which are in line with other platforms: FMSS supports up to 4 CPUs or cores per license (allowing for a dual CPU, dual core setup per license) while FMIS allows up to 8 CPUs or cores. This means that CPU restrictions have also been relaxed when compared to FMS2 (which all of a sudden seems really unattractive :-).

New Features
There are of course a host of new features too, such as massive performance improvements (which effectively improve value for money even further), support for H.264 streaming, added security features, streaming to mobile via Flash Lite 3 and a bunch more. There's a side by side comparison chart here.

There is also a great article and podcast with Kevin Towes, FMS Product Manager, here.

Flash Media Server 3 is due to ship in early 2008. The full press release is here, the product page here.

Flash Player 9 Update 3 released

This version is a significant milestone, and I expect it will be adopted fairly quickly once content using H.264 and AAC starts appearing. Emmy Huang has some additional information and links you should look at.

Here is a condensed list of bugs which have been fixed since the last release candidate (9.0.64.0). As you can see these have been mostly fixes for crashers and backwards compatibility issues. It's a pretty long list which explains why 2 months have passed since the last release candidate. Maybe you'll spot a few you were affected by:

  • 212379 audio playback in swf off sync.
  • 212294 on (release) events not firing on sprites
  • 212224 Heavy FMS Seeking in Vista can cause bad audio and crash
  • 211921 Crash when paging through a Flex app and closing the player
  • 211898 FileReference IO errors when uploading multiple files
  • 211840 playlist does not advance after end of commercial
  • 211836 [MP4] If you seek in the NetStream before a movie that has the moov atom at the end has completely downloaded, you can crash.
  • 211813 BitmapData draw ColorTransform not affecting all text on all platforms
  • 211759 inputted simplified Chinese characters are not correct inside of Flash Player
  • 211727 Japanese/RHEL4/Firefox 1.0 -- hang when selecting print dialog
  • 211725 Player crashes when Premiere Express is connected to a server that times out
  • 211700 Add support for Opera XEmbed
  • 211672 the pop-up print panel layout is incorrect when R-click on the red button and choose ‘print…’
  • 211625 Flash player crashes while playing servierside playlists containing MP4 files
  • 211593 Crash in NavigateToURL when using local relative URL
  • 211584 can't input anything to flashplayer for Simplified Chinese Linux OS
  • 211582 New AS3 NetStream.receiveVideoFps() should be NetStream.receiveVideoFPS()
  • 211558 Flash Player movies soft-freeze
  • 211504 getURL loading with UTF8 Japanese text data crashes IE6 on WinXP J
  • 211498 crash if flash unloads while in a JS function called by ExternalInterface
  • 211493 Audio locks up and starts looping on Linux, requiring the page with the player to be shutdown
  • 211491 AS3/2 keyDown event (Code Keys) not firing for NumPad on Linux
  • 211485 Flash previewer hangs the browser
  • 211403 Found an audio sync issue after a pause and seek
  • 211367 Memory leak when subscribing live stream with buffer time 0 published by Flash Media Encoder 2 in MP3 audio format
  • 211362 One more time: An A/V Sync issue
  • 211346 extra lines appear when a radial gradient is on top of a radial gradient
  • 211343 Video does not resume after pause and seek
  • 211298 Accessibility Plugin reads text from dynamic text field after tf.text has been set to ""
  • 211264 Fms seeking while paused won't always generate an image
  • 211263 FMS Video streams when seeking can go out of A/V sync
  • 211186 H264 files : Loss of audio sync during the playback after seek
  • 211171 site no longer automatically advances to next song
  • 211120 new file icons for F4V, F4P, and F4A for the standalone player to register
  • 211070 Intermittent (8/10) Crash on site
  • 211067 NetStream.Seek.InvalidTime NetStatus event coming in different order from other events, breaking legacy content
  • 211051 File Upload broken on leopard. FileReference throws cancel event when a file is selected for upload in the file-browsing dialog
  • 211017 Scrubbing streaming flv doesn't work (possible injection)
  • 210983 Incorrect sprite size and position on several platforms
  • 210962 Player crashes when finish streaming a mp4 movie.
  • 210957 Bitmap.draw() producing erratic behavior when subsequently drawn in bitmapfill
  • 210915 Blur filter behavior uses black on edges instead of nearest pixel
  • 210909 Fullscreen not painting over screen
  • 210907 perform execstack and strip commands on executables
  • 210901 [MP4] Handbrake videos made with certain settings play but halt batch at end of playback
  • 210871 Smart Buffering: Few issues when streaming on2 files from Flash Media Server 2.0.4.
  • 210854 scrolling images show stuttered or jumpy or jerky movement on playback in Vista
  • 210846 [MP4] Errors in the 'ilst' parser
  • 210844 Audio stutters
  • 210809 widget hangs the browser
  • 210808 Player crashes by scrubbing the playhead when streaming a mp4 file under rtmps, rtmpt and rtmpe connections.
  • 210780 All the strings for the linux context menu leak [Memory Leak]
  • 210769 Repeated use of shared objects in an event handler causes slow script dialog and hosed Settings UI to appear
  • 210767 [LNX RHEL4] Crashes interacting with site
  • 210746 When a release swf loads a debug swf, flash player doesn't look for the debugger
  • 210720 Loader acts strangely in FullScreen mode
  • 210717 Keyboard non functioning with the Netscape
  • 210716 full screen does not respond to mouse events or display context menu
  • 210715 Selecting printer dropdown cause hang with plugin on linux
  • 210679 Certain videos look bad when played on Mac
  • 210667 Context menu in full screen does not display, intermittently hangs
  • 210645 streaming checks may unnecessarily reject valid socket policy files
  • 210642 -root option sends sometimes a gtk warning, and sometimes a segfault
  • 210641 Null Objects when iterating through children
  • 210636 non-default locations not rejected for missing Content-Type
  • 210593 Cannot open Settings manager page after clicking advance settings.
  • 210574 Full episode videos don't stay in FullScreen Mode in Firefox
  • 210573 Smart buffering: Artifacts with episodes
  • 210562 dragging performs much poorer than 9r48
  • 210561 Smart Buffering: NetStream.Play does not function after NetStream.Pause is called in this app.
  • 210545 Netstream.receiveVideo parameter change is breaking existing content
  • 210538 [MP4] Pauses due to buffer running out cause loss of sound sync
  • 210532 Animation is skipped, causing audio and swf playback off sync.
  • 210501 Enhanced Seeking driving audio/video out of sync on lower bandwidth like DSL
  • 210485 Pause/Unpause on MP3 Files doesn't play from the paused location when setBufferTime is used.
  • 210476 extraneous reload of content after close of sub-pane
  • 210451 Player Crashing while playing a video through a serverside stream
  • 210434 Player crashes when streaming this bad flv under an AS3 streaming application.
  • 210433 massive performance degradation after being in fullscreen for a long time
  • 210380 Refreshing the browser when AS3 content is loaded will cause the browser to crash.
  • 210335 Flash content does not display
  • 210333 Can't input local words with IME on linux
  • 210331 [MP4] Lots of screen artifacts on certain trailers. PPC Only
  • 210292 fscommand ("fullscreen", "false") crashes the Projector on Linux
  • 210245 Can't input any words with IME
  • 210209 [MP4]: When unpausing after seek while paused, video is black for one frame
  • 210170 [MP4] AVC Profile 110 videos all appear purple on MacIntel machines
  • 210097 Multiple SWFs hang page
  • 210039 Leaking file descriptors to Flash resources
  • 209833 Intermittent Flash Player 9.x crashes in Internet Explorer 6 and 7
  • 209513 Changing IME conversion mode does not work on Mac X.5
  • 208369 Consecutive shared object flush calls causes slow script error when used repeatedly in non-mouse/keyboard events
  • 208212 Crash when loading external swf file in AS3
  • 208125 page with 9 Flash video instances generates "R6025 - pure virtual function call" and crashes IE
  • 208039 Flash plugin logs keyboard in Safari on Mac OS X
  • 207349 Linux stalls on random test cases
  • 206369 ByteArray.readMultiByte returns garbled characters from a binary file containing Win-1252 encoded characters.
  • 147787 removeMovieClip should not fail for objects > kDisplayClonedEnd in depth

New MIMIE TYPE Extensions for Flash Video and audio files

There have been a few questions around file types and mime types which should be used for the new video container format. To summarize this post, we will promote new file extensions and will stick with standard MIME types.

The new file extensions and MIME types will be the following:

File ExtensionFTYPMIME TypeDescription
.f4v'F4V 'video/mp4Video for Adobe Flash Player
.f4p'F4P 'video/mp4Protected Media for Adobe Flash Player
.f4a'F4A 'audio/mp4Audio for Adobe Flash Player
.f4b'F4B 'audio/mp4Audio Book for Adobe Flash Player


These are pretty much in sync with what Apple does offer for their downloads. Why new file extensions? It will be an easy way to distinguish files which can be played back by the Flash Player. There are simply too many instances where .mov and .mp4 files can not be played back, or vise versa, a file compatible with the Flash Player might not play back in QuickTime, an iPod or other video device. I will also be working on a technical document to exactly outline what the Flash Player does support and what it does not support although my previous posts already pointed out that we are very close to full support of the H.264 standard with the exception of Extended profile and FRExt.

Why didn't we stick with .FLV? Technical reasons, mostly. Various technologies, including our own products expect that .FLV files have a certain file structure. In case of Flash CS3 a file which was renamed from .MP4 to .FLV would stall the application at import time. Not a good experience. In case of FMS file type plug ins can only handle unique file extensions. In this context it made it impossible to have files with the new container format using the .FLV file extension. We expect other tools to have similar issues.

It's not yet clear when our video tools will start using these extensions, although I expect it to happen sooner than later. The first one to be used will clearly be .f4v, the other ones are in 'reserved' state for now and not destined for a particular product right now. Why do I talk about this now in this case? Well, as we ready the Flash Player for release we did add new icons and file extension registration of these file types into the standalone Flash Player. So it's better to make this announcement now as you will discover this on your own very soon anyway.

If you ask what the FTYP column is, it is the ftyp atom within ISO 14496-12 files. If you have a custom encoder and are targeting the Flash Player you should add one of the ftyp major brand 4CCs mentioned above. This will make it much easier for servers to handle and recognize these files. And to prevent you from panicking now: the Flash Player will not even look at this atom. This atom is nothing more than a hint for tools handling ISO14496-12 files. A list of known ftyp major brand 4CCs can be found here. We'll hopefully make this list also at some point.

It might be a good time to update your IIS mime-type entries to include the new file extensions, otherwise IIS will refuse to play serve up these files. This is the same process as for flv files described in Technote 19439, but using the file extensions and mime types mentioned above.

Update, since I am apparently not clear enough and have to repeat myself: the Flash Player will not look at the file extension when loading files. It just means that if you are targeting the Flash Player or AIR we suggest to use these file extensions.

Thursday, January 10, 2008

Flash P2P


Ok it’s not quite P2P there is a server involved but its close. I had an idea for a java servlet which allows you to download a file that is still being uploaded, so no latency unlike with the old (upload -> forward url -> download) method.



 (ZIP) (RAR)



The download includes sample FMS app, java web archive (.WAR) and java source as an eclipse J2EE web project and how to install it on tomcat.

Flash Media Server 2 basic concepts

The new Flash Media Server 2 (FMS) does no longer include or install any sample files. I think this is a good decision as it caused a lot of confusion with people being under the impression that the swf files needed to be on the same server as FMS itself. This is not the case, let me try and explain.

Flash Media Server 2 doesn't really have much in common with a web server, instead it enables your swf to make use of live or streaming media and data access functionalities. Your swf is still being served as usual via a web server and sometimes, especially in a development environment, the webserver may reside on the same machine as FMS. In most cases however the FMS machine is a separate, physical machine to your webserver.

I like to compare it to a database server: MySQL or MSSQL can run but does not have to run on the same machine as your webserver. The database server can be located half way around the world yet your database connection will still be established reliably.
This is very similar to how FMS operates - your swf will make a connection to FMS 'behind the scenes' after it has been served to the user's browser via your web server. The swf doesn't care where it was being served from - as long as the rtmp connection string points to the right place it will attempt a connection to FMS and if the connection succeeds then your application can use FMS functionalities. Macromedia has a graphic that shows this setup (see right) , I hope they don't mind me using it.

Let's look at how an rtmp address is contructed. Usually the rtmp address takes this format:
rtmp://fcserver.domain.com/app[/appinstance]
but sometimes it can also look like this
rtmp:/app[/appinstance]

app in this case specifies your application (a folder underneath FMS's applications directory) and appinstance is an optional application instance name. If you omit the application instance then FMS will automatically create and connect you to the default instance called _definst_. In the end you are therefore always connecting to an instance of your application even if you do not explicitly do so. This concept is important to understand as it directly affects the storage locations of flv files and it's something that many new users find problematic. Once you know how applications and instances are set up though it will make perfect sense.

The second rtmp string rtmp:/app[/appinstance]only shows one forward slash and no server or vhost address, this means the rtmp address is local - it will only connect successfully if the swf file has been served from the same machine as the one where FMS resides. I try and avoid this syntax whenever possible and usually only use it for local testing as it can lead to problems in a production environment when you move your FMS installation to another machine: You would either have to update the rtmp string, recompile and redeploy your video or you needed to make sure that your web server moves along with FMS. This seems cumberstone to me.

Instead I prefer the first syntax rtmp://fcserver.domain.com/app[/appinstance]
This fully qualified rtmp string is more readable and gives a lot more information about where the FMS machine is located, in this case at fcserver.domain.com
A swf using this syntax will attempt a connection to fcserver.domain.com/app no matter what happens, it could be run locally as well as served from a web server.