So i havnt been good at all about posting pretty much this whole year. Its been a crazy one. I hve some great samples and info I will post soon on some advanced FMS and OSMF projects weve worked on. Stay tuned if anyone is left
Its been a tumultuous week with the announcements from Adobe (110811-Adobe Financial Analyst Meeting) invoking a wide spectrum of speculations and concern. Below you will find some of my personal thoughts and opinions. It started with the termination of 750 employees, more than handful of which we at RealEyes had good long standing relationships with. Now unfortunately this isn’t the first time we saw Adobe do such an end of year ‘house cleaning’. Unfortunately they are instilling such lack of faith in themselves as an employer for long term committed employees right around the holidays, but business is business, and 4th quarter numbers mean a lot for large publically traded companies. In truth we focus little on the quarterly earnings and fiscal projections and focus more on the industry and platforms as a whole.
Now aside from just the layoffs there were some major announcements regarding the direction and focus of the company as it pertains to the Flash platform (http://blogs.adobe.com/conversations/2011/11/flash-focus.html
) and web development strategies and tooling. Starting with the announcement that Adobe will discontinue future development on the Mobile Flash Player (specifically for Android , but also pertains to RIM/BlackBerry). Now this got some tempers flaring and a lot people fairly upset. In truth I respect their decision and understand the validity of it. The ROI simply isn’t there, and the complexity is and will continue to grow due to the fragmented nature of Android and a number of other issues. How this impacts the work we do it is nearly non-existent. Having the Flash Player plugin available to the Android Mobile Browser was a convenience, that offered a great marketing sales pitch but delivered often very little. This is in large part due to the simple fact the desktop web is not meant for nor very functional for mobile – period. In truth I have seen very VERY few applications made to date that were made in Flash specifically for mobile and delivered to the browser. We at RealEyes have only done one and it was simply a stepping stone as we waited for AIR for Mobile to be released during the initial days Adobe was rolling this out. To use the Mobile Flash Player for viewing existing content was acceptable but not a good experience and due to the lack of mobile optimizations could have a negative impact on the perceived quality of the platform. Now tablets starting making a better use case for web based Flash Applications but even after a couple/few years of Android based tablets on the market, they still don’t compare in adoption to Apple and the iPad. So in the end we understand and support the decision to drop the Mobile Flash Player plugin. With the market direction of installable applications, and decline of favor of plugin enable browsers so be it.
However what I believe Adobe has done horribly with regarding the Mobile Flash Player and many other items is their communication, messaging and timing.
The truth is the web is having a field day with this announcement and toting such saying as Steve Jobs was right or Apple wins – what a joke! And Adobe did it to themselves. Much of the glamour and desire for HTML5 isn’t suited it what it can achieve – it is simply great marketing. It truly shows how giants – especially such as Apple and even Microsoft on a good day – can sway the industry to their desire, not for the good of the industry but for their own purposes. They are precise, tactful, cunning, and smooth with a result of being deadly to those who try and stand their ground. Adobe did try and stand their ground although not gracefully, and they were backed by legions of developers, animators, designers, and content creators. They were able in many ways to achieve what was said not possible with the Mobile Flash Player, and in truth still today you can do MANY things with Flash that are simply impossible or incredibly unwise with HTML 5. So aside from being pummeled by Apple directly – speculated in his new biography due to their dictator’s personal distaste with Adobe – and under the guise of HTML 5 and an ‘open web’ from the leaders of the most closed companies, Adobe continued on. Now they take a sharp turn without properly educating the public once again and the PERCEPTION is not good, albeit the reality makes much more sense. Unfortunately in the end perception wins at least in the short term, and so Adobe in their messaging and timing have failed in some part. The timing being so bad since it was only in the near to mid future that I believe HTML5 glamour may continue to fade and Flash could have shined a bit more. The bottom line is the change was minor but due to poor communication, horrible messaging, and virtually no pre-emptive spin the end result is a PR shit storm.
So for those who hadn’t gotten so upset by the above and continued to read on they would notice there is some very good news as well – at least so it seems. First is Adobe’s commitment to really contributing and adding focus to HTML5. A little late to the party but good none the less. Not to say there aren’t major concerns with the direction, speed, or ability with this. The biggest issue is lack of details or an understanding how this differs from what they have said for the last year or 2. One might wonder how it actually works out to say were dropping one focus for another, yet at the same time dropping a large number of employees. Maybe they believe in the mantra of ‘doing more with less’ <– good luck with that. The other reason given for the change in direction and termination of active development on the Flash Mobile Browser plugin is to draw more focus to the Native Application capabilities of the Mobile AIR products. This is an excellent move and has been shown by Adobe to be a priority for some time now.
So overall a bad week for Adobe right? Well unfortunately that’s not all or the biggest of RealEyes’ concerns. In the original announcement there were also some very vague references to a directional change in the enterprise products and direction. Initially a big hit to the LiveCycle team, and also a hit to the Flex Enterprise team – which could have meant any number of things. About a day later as many of the evangelists were running damage control (kudos to them by the way – I’m guessing they aren’t the ones who picked the PR firm) the product managers for the Flex team posted the following article (http://blogs.adobe.com/flex/2011/11/your-questions-about-flex.html). At first read this can be infuriating and once again Adobe has done a horrendous job at communicating and delivering key data in the proper context. In its simplest form the post details Adobe’s plans to greatly reduce its development effort with the Flex application framework. Now Flex has its issues, it can be bloated and if not developed properly can have performance issues (as anything could). However it does offer an excellent mature development platform for web, desktop applications and we were just starting to see the fruits of such a framework making it into the mobile screen space. Much of the work we do at RealEyes revolves around the Flex framework or media delivery and infrastructure.
In addition Adobe goes as far as to say “In the long-term, we believe HTML5 will be the best technology for enterprise application development”. This is where it all falls apart. Big enterprises have invested millions in development and maintenance in Flex. Not such bright ideas to alienate so many that have adopted your technology. At the very least this is a massive issue in the future for confidence in anything adobe releases. More so such a statement is incredibly dangerous without the right context. For instance I believe the statement to be true in SOME, maybe many cases, but not for the next 2-5 years minimum. The immaturity of the language, the lack of support, and simply the adoption timelines for browsers within a enterprise all surmount to massive issues with HTML5 – and that’s aside from key functionality and experiences that you simply CAN NOT ACHIEVE WITH HTML5. Enterprise level live video communication with multicast capabilities integrated with hardware acceleration for an example of just one issue that faces us today, let alone security and advanced data management. Now also take in account the ability to cross over between the browser and the desktop and there are MASSIVE issues HTML5 has ahead of it, and browser fragmentation always compounding the issues. Many have asked what is the industry supposed to do until HTML5 truly has the same capabilities, and hopefully better development and management capabilities?
Once again I think the messaging and delivery are compounding the issues and not making clear the solutions or current placement. To illustrate this a little background info may be in order. Adobe years ago made Flex an open sourced language, with the initial promise of allowing the language to grow and improve with contributions and help from the community. This was very well received and exciting news. However the implementation of such plan did not go as smooth. Although the language was indeed open source contributions from the community were difficult and often rejected for any number of valid or invalid reasons. Adobe simply did not have the process or the man-power to properly make it successful and stable with a large involvement from outside of the walls. So the vibrant and extremely skilled (and committed – at least until recently) community answered back with something called the Spoon project (http://www.spoon.as/), something that RealEyes has been excited to support and in which Jun Heider (our dev manager) is one of the officers on the project. The Spoon project is a truly community driven version of the Flex Framework supported and partially funded by Adobe to increase the volume, speed, and maybe even quality in which the Flex Framework can grow.
So with Adobe announcing they will be stepping more into the background on Flex Framework development this really just seems to be the natural progression, and fulfilling on the promise they made to the community years ago. However the language and messaging left something to be desired. More specifically the lack of notice and rapid pace of such a change is what bothers us. There have been mentions online in regard to how hard it is for such large companies to change their direction and Adobe is doing that very rapidly. There is a reason most large companies take time to invoke change, and its because its important with such great change that it’s done right and you don’t alienate your customers or supporters – this is where the folly of Adobe’s decisions and implementation leave them. There would be little surprise if Adobe backpedals on some the changes they have lain out. Maybe their large and rushed changes will pan out, only time will tell.
One point that Adobe has contradicted itself on with its direction changes is Adobe stated they wanted to focus more on the AIR Mobile platforms and delivering exciting applications directly to the devices. But with reducing their effort and responsibility on Flex they are terminating active development on the mobile development framework that allowed their development community to handle many of the initial challenges creating multi-platform applications. This can raise questions regarding the success of the mobile framework and other such implications. We at RealEyes have found the mobile Flex framework excellent for certain business cases, but with the general understanding that if performance is paramount Flex cannot replace pure ActionScript, although the development benefits often weigh heavy on the ROI.
So what does this all mean for RealEyes? In the short term it means a challenge in continue to clarify and dispel bad or lacking information from Adobe and others. In the long run probably not a lot. We have already been on a path of technology diversification with continued focus and adoption of HTML5 and more native development in the future. In the meantime and in the next at least few years the Flash Platform will still be our predominant focus. With our specialty in streaming media solutions, and continued drive in multiscreen delivery Flash and AIR are still the best solutions and will be for a while. How long will depend on Adobe and we will watch closely and support them in an educated and balanced fashion moving forward. As far as Flex we are already involved in the Spoon project and the changes by Adobe will only enhance our desire to contribute to an even better and robust framework for the future. If the focus changes further away from the Flash Platform for our clients we will continue to lead the way and provide our clients and the community with our experience and solutions. With every client and every project RealEyes will continue to evaluate the requirements/needs and provide the best solution for it no matter the technology behind it.
So if you are familiar with the Flash Media Server (FMS) you have probably worked with the FMS Admin Console before and the Live Log view which lets you see realtime trace() statement in your Server Side ActionScript (SSAS).
Super handy stuff if you are making custom FMS applications. Well if you ever wondered how they get those trace() statements in your code in a realtime fashion for FMS applications see below for the code.
The basics are creating a NetConnection to the FMS Admin then you play a NetStream with your application and application instance (yes you MUST define which instance) as part of the stream name. Then on that streams client Object it will automatically trigger an onLog( info:Object ) handler, where the info Object it receives as its single parameter has the trace details as well as a time stamp, code, and indicator of which application fired the trace().
nc_admin = new NetConnection();
nc_admin.addEventListener(NetStatusEvent.NET_STATUS, onNetStatus );
nc_admin.connect( “rtmp://localhost:1111/admin”, “adminUser”, “adminPW” );
nc_admin.client = this;
ns = new NetStream( nc_admin );
ns.addEventListener(NetStatusEvent.NET_STATUS, onNetStatus );
ns.client = this;
ns.play( “logs/application/APPLICATION_NAME/_defInst_”, -1 );
function onLog ( info : Object ) : void
// trace( info[ "description" ] );
trace(“onLog — “)
for( var i:String in info )
trace( ” ” + i + ” = ” + info[ i ])
function onNetStatus( e:NetStatusEvent ):void
trace(“ADMIN: ” + e.info.code);
if( e.info.code == “NetConnection.Connect.Success”)
One of our resident awesome community guys (Scott Sheridan) at RealEyes wrote up a slick article on how to publish H.264 content with the new Flash Player 11.
Check it out here in all its hands-on goodness: http://www.realeyes.com/blog/2011/10/31/new-in-flash-player-11-encoding-live-video-to-h-264avc/
Ok heres a little advanced OSMF tip for you – brought to you in collaboration on an issue that myself and John Crosby ran into.
When you are using F4M’s with OSMF you are essentially giving the framework a XML manifest file which in its contents tell it what to create an actual MediaElement for. However it has to take a few steps to get there.
For instance to simplify what happens under the cover a lot first a URLResource is defined with the path to the F4M file. Then the MediaFactory will create a F4MElement. From that element and manifest file, the appropriate target MediaElement – such as a VideoElement – will be generated also by the MediaFactory. Now along the way Plugins can also chime in and change or proxy the elements during their creation cycle. Now that’s fine and dandy but in the end it can be tricky to pass along key data with the original request of the manifest file. A normal procedure for this might be to add MetaData to the original URLResource and expect to be able to use it in the final MediaElement or ProxyElement.
A real world example could be the ClosedCaption plugin that originally shipped with the OSMF framework. It relied on such meta data to know what eternal text file to load with the appropriate time and text data to display the actual closed captions. However since it simply tried to pull the meta data off the resource it would not function properly when using it with F4M generated content – Ouch!!
The issue is when the plugin is notified of the final MediaElement it has lost the meta-data needed since it has cycled from F4MElement to VideoElement leaving the data behind with the originally element generated.
However there is a solution. If you apply MetaData to a URLResource before you pass it to the MediaFactory it will remain available even to its final MediaElement form through something called Derived Resource Meta-Data.
Its accessed like:
resource.getMetadataValue( MetadataNamespaces.DERIVED_RESOURCE_METADATA );
Then from there you can access your original meta data!!
This is a bit more advanced but VERY powerful. I will try and get a sample up upon request if anyone is interested.
HTTP Dynamic Streaming (HDS)
Speaker: John Crosby
Tuesday, June 28 at noon Eastern / 9am Pacific
HTTP Dynamic Streaming enables leveraging of existing caching infrastructures – for example, content delivery networks, ISPs, office caching, home networking – and provides tools for integrating content preparation into existing encoding workflows.” That is great, but what does it mean for me?
To answer this question we’ll cover the following:
• What is HDS?
• How do I get started with HDS?
• When should I use HDS?
• How can I integrate HDS into my content creation workflow?
Want to learn more – attend the FMSUG Meeting to ask John questions, and follow his blog post on this series at http://www.thekuroko.com/
Here are the slides and source files from our recent Flash Video Across The Screens presentations. This presentation in varying forms has been delivered at 360|Flex, Flash And The City, and E-Learning Dev Con.
[ Slides ]
[ Source Files ] (Flash Builder Projects Export)
Note: Server paths will need to be updated and video paths replaced.
So if you are having issues with FMS and stream QoS try checking out this post to get more details on what might be happening.
I think you will have to allow the http command in the fms config files for the admin, but it seems kind of useful.
I am really siked about the new BlackBerry AIR support coming in the future. The PlayBook looks like a really awesome device and the path RIM is taking at a whole all the way from the developer support to the devices is really exciting.
This is something to watch out for. RIM is the king of corporate mobile – the possibilities are going to be killer.
I think the PlayBook could be a major competitor for the IPad. The tech specs alone and the video capabilities have me sold. The fact that the Adobe AIR is a integral part of the device OS really speaks to the capabilities of AIR and makes me feel all warm and fuzzy on the inside.
Ohh and you can get one for free as a developer if you are motivated enough:
The free PlayBook offer:
Check out some info and resources:
BlackBerry PlayBook Dev Resources:
- Adobe Labs: http://labs.adobe.com/technologies/flash/blackberrytabos/
- Renaun Erickson: http://renaun.com/blog/
- Getting Started Windows: http://docs.blackberry.com/en/developers/deliverables/21877/
- Getting Started Mac: http://docs.blackberry.com/en/developers/deliverables/21878/
- BlackBerry Tablet OS SDK for Adobe AIR AIR Reference: http://www.blackberry.com/developers/docs/airapi/1.0.0/
- Dev resources: http://us.blackberry.com/developers/tablet/devresources.jsp
- Forum: http://supportforums.blackberry.com/t5/Tablet-OS-SDK-for-Adobe-AIR/bd-p/table
- BlackBerry Development Blog: http://devblog.blackberry.com
Here are a few links to help get started with FMS.
Great place in general for info and links: http://www.adobe.com/devnet/flashmediaserver.html
A great set for getting started:
Great set of articles for getting started with FMS. Goes through installation and basics of streaming options. 7 article set:
Hardening Guide for Flash Media Server. A must read for security settings and FMS admin:
For links to useful documentation this is the main one:
The following 2 out of the set above are of high importance when just getting started:
- Installing Adobe Flash Media Server 4: http://help.adobe.com/en_US/flashmediaserver/install/index.html
- Adobe Flash Media Server 4 Configuration, and Administration: http://help.adobe.com/en_US/flashmediaserver/configadmin/index.html