Tag: Flash

Live streaming video is not an easy thing to take cross-platform at the moment. Flash can do really well on the desktop using RTMP and HDS, but there’s no Flash on mobile devices. HLS is Apple’s horse in the live streaming race, and it does very nicely on iOS and occasionally works on some Android. But if you take HLS to the desktop and you’re limited to Safari on Macs.  Wouldn’t it be nice if we could consolidate a bit?

flashls is a plugin for the Open Source Media Framework and other frameworks that allows you to play back HLS in Flash. There are actually several plugins that allow this now, but flashls is the one we’ve settled on as the best performing and best supported. This is great! Now you can have a little more consistency in how you stream. But here’s a downside: a number of the fancy, fun things you could do with RTMP or HDS are missing. If you want to inject stream metadata for example, all that gets tossed out when the source file gets chopped into fragments for the HLS stream by the live-packager app on Adobe Media Server.

An important piece of data to us that got discarded were time codes in the stream. We use GMT time codes to synchronize video with time-based data feeds as well as other videos. With most encoders, including Flash Media Live Encoder, you can choose to inject timecodes into your video stream. For RTMP and HDS streams you can pick out the data by adding an onFI method onto a NetStream’s client object property. But switch to a live HLS stream and that all disappears.

Fortunately, a few things have changed recently. First off, Adobe made some changes to AMS in version 5.0.8. The included Apache server got upgraded to 2.4, and with that came a change to the live packaging of streams. Now you can inject ID3 data into HDS and HLS streams! Adobe has a good article about this. This new feature provides a lot of different ways to now put useful metadata into the live HTTP stream of your choice.

Unfortunately, the flashls plugin didn’t pick up on the injected data. The way Adobe included the ID3 data was a bit different than expected. However, the wonderful folks behind flashls took notice and added in support for extracting this ID3 data from the HLS stream. This is why continuing support of a plugin is important! With the changes we now can get an ID3 frame out of an HLS stream.

Here’s the high-level workflow:

  1. On the Flash Media Server, make a copy of the live-packager app in the applications directory and roll up your sleeves for some Server-Side ActionScript.
  2. In the live-packager copy’s main.asc file, we need to add in an onFI listener to the incoming F4F stream in the application.publish() method. In this listener we pull the time code out of the metadata object. In this case the info.sd property is the date and the info.st property is the timestamp.
  3. Next we need to inject the metadata into the stream as an ID3 frame. The Adobe article lists the supported ID3 frames. I decided to use the Comment ID3 frame to send the information along. This frame only has a single data property, so I join the time code parts together into an easily parseable string. Then we send the metadata object through the stream using the NetStream.send() method.
    s.onFI = function( info ) {
    var metaData = {};
    var comment = { language: "eng" };
    comment.data = String( info.sd + '|' + info.st );
    metaData.Comment = comment;
    delete comment;
    comment = null;
    s.send("onMetaInfo", metaData);
    delete metaData;
    metaData = null;
  4. Now we can switch back to AS3 and start working in our OSMF player. I won’t cover the implementation of the OSMF plugin, as the flashls site has a nice sample. The flashls OSMF plugin dispatches events about metadata off of an instance of the HLS class. You can get access to this object by listening for the load trait being added to your media.
    protected function onMediaElementTraitAdd( event:MediaElementEvent ):void
    if( event.traitType == MediaTraitType.LOAD )
    var hlsNSLoadTrait:HLSNetStreamLoadTrait = MediaElement( event.target ).getTrait( event.traitType ) as HLSNetStreamLoadTrait;
    if( hlsNSLoadTrait )
    var hls:HLS = hlsNSLoadTrait.hls;
  5. Then add a listener to the HLS object for the HLSEvent.ID3_UPDATED event.
    hls.addEventListener( HLSEvent.ID3_UPDATED, onID3Data );
  6. This is where things get a little complicated. We need to then pull the ID3 frame out of the string of hexadecimal data that is attached to the ID3_UPDATED event. First step is to convert the hexadecimal string into a ByteArray, which we can then parse using AS3’s ByteArray API. Fortunately, flashls provides us with a utility to access this.
    protected function onID3Data( event:HLSEvent ):void
    var hexData:String = event.ID3Data;
    var hexBytes:ByteArray = Hex.toArray( hexData );
  7. The next step is to parse the ByteArray to extract all the information. Fortunately, that Adobe article describes how the ID3 headers are constructed. That gives us a guide on how to read byte data out of the ByteArray. We end up with something like this:
    var frameName:String = hexBytes.readUTFBytes( 3 );
    var version:int = hexBytes.readByte();
    var revision:int = hexBytes.readByte();
    var flags:int = hexBytes.readByte();
    var size:int = hexBytes.readInt();
    var frameID:String = hexBytes.readMultiByte( 4, 'utf-8' );
    if( frameID == 'COMM' )
    var frameDataSize:int = hexBytes.readInt();
    var frameFlags:int = hexBytes.readShort();
    var groupID:int = hexBytes.readByte();

    Note that we are checking to see if this is the type of ID3 frame we care about (Comment). The Adobe article references the IDs of the different frame types, and tells us that the Comment frame ID is ‘COMM’.
  8. Now we’ve actually gotten to the data we care about: the ID3 frame’s metadata payload. It appears that the object comes through not as an AMF object, but rather as values separated by a 0 byte character. The first 3 characters we read off the data make up the language code of the ID3 metadata.
    if( frameID == 'COMM' )
    var frameDataSize:int = hexBytes.readInt();
    var frameFlags:int = hexBytes.readShort();
    var groupID:int = hexBytes.readByte();
    var lang:String = hexBytes.readMultiByte( 3, 'utf-8' ); //eng
  9. Then we can read out the 0 byte separator. Then the remaining bytes give us our time code.
    var separator:int = hexBytes.readByte(); //0
    var timestampString:String = hexBytes.readUTFBytes( hexBytes.bytesAvailable ); //2015-06-12|22:03:06.543
    Keep in mind that the seconds come in as a decimal. In order to convert your time code to a Date object, you will need to either round off the decimal or convert the decimal to milliseconds.
  10. Finally, fire up Flash Media Live Encoder, or the encoder of your choice, and make sure it is injecting time codes into your stream. For FMLE, the option is a Timecode checkbox in the lower left. Click the wrench next to it to access the options and check the “Embed system time as Timecode” option.
  11. Then target your custom live-packager app for publishing and consume the outgoing HLS stream in your OSMF player. You should then start to receive your time codes via ID3 events.

Obviously there are many other uses for extracting in-stream metadata from HLS. There are also many other types of ID3 frame types. They may not follow the same structure as our simple Comment frame, and if you venture into making your own custom ID3 frames, that may be even more complex. However, this proves that it can be done in Flash using the existing tools available. Just remember that you need to be on AMS 5.0.8 or greater and also be on the latest codebase of the flashls plugin.

Many great thanks to Guillaume du Pontavice (a.k.a. mangui), who is the man behind flashls and helped immensely in making this functionality available.

Three years ago we decided it was necessary to put a plain-English description of Adobe Connect licensing together. As of March 9th, 2015, Adobe has released Connect 9.4 and with it a whole new licensing model. So, while our old post about licensing has been a great staple for us and the Connect Community, it seems that it is time to put a new version out, rather than just updating the old post.

As we have stated in the past licensing for Adobe Connect is probably near the top, if not at the top, of the list of complicated things to deal with in Connect. It often is either not properly explained or not properly understood and customers can get left with deployments that either don’t meet or grossly exceed their needs as a result. This post is intended to be a reference for what the different licensing models do (how they work, limitations, advantages, etc.) but will not discuss pricing. If you are interested in pricing, feel free to contact us directly, sales@realeyesconnect.com, or through our contact page here.

Adobe Connect is still available in three different deployment options:

  1. On-Premise (Enterprise) – This deployment is typically hosted on your server(s), and behind your firewall. Since it is a server platform product, it is subject to perpetual licensing. This means that the server software itself and all licensing must be purchased initially, but thereafter (year 2, year 3, etc.) only the Maintenance & Support is required to be purchased annually. M&S is required at time of purchase, and is normally 20% of the total Connect product purchase. In some cases, special exceptions and/or agreements, contracts, etc. have been established and agreed upon by the end user(s) and Adobe, so they may differ. Please visit the Adobe Platinum Maintenance & Support homepage for further details. Please also note that On-Premise deployments can also be a Managed Service offering; meaning that the deployment is an On-Premise installation that is managed by another company.
  2. Hosted (SaaS) – The hosted deployment option is also known and referred to as a Software as a Service (SaaS) model. In this case, your Adobe Connect deployment is hosted on Adobe’s reserved server clusters. That being said, you are behind Adobe’s firewalls. In some cases, having your account Hosted may or may not be the best solution. It is always best to first check with your IT Dept., Systems Admin, etc. to see what may or may not be a requirement. Since there may be several compliance regulations that your institution may need to adhere to, or if you may need full integration with other pre-existing server based products, Adobe’s servers may be able to suffice, but those kinds of questions cannot be answered here and now, as the scenarios tend to vary greatly. Hosted account purchases through resellers typically include baseline standard Adobe Connect Help and Support.
  3. Adobe Connect Managed Services (Enterprise & SaaS) – This deployment is hosted on dedicated server(s) and managed by Adobe Systems. It includes all of the benefits of an Enterprise deployment, (adhering to your firewall settings, LDAP and/or AD integration, etc) but since it requires no internal network administration, it feels like a SaaS deployment. It is a perpetual licensing model where all licensing must be purchased initially, and must be renewed annually. In some cases, special exceptions and/or agreements, contracts, etc. have been established and agreed upon by the end user(s) and Adobe, so they may differ. Please contact us directly if you have questions about the Adobe Connect Managed Services option. A PDF overview on Adobe Connect Managed Services can be viewed and/or downloaded here.

While the deployment options have stayed the same, Adobe has re-worked the licensing models for Connect. So here is where you will see the changes. I’ll start with the modules that haven’t seen a change. New licensing will have the titles in italics.

Meeting Module

  • Concurrent User: With this licensing, the total number of licenses you purchase will be the total number of users that can be online in a live meeting at any given time, either hosting or attending a meeting. These licenses are not assigned or applied to named individuals; they are first-come-first-serve. So, if you have 100 Concurrent User licenses, then you can have a single meeting with 100 people, 100 meetings with 1 person each or anywhere in between, so long as the total number of attendees for meetings is less than or equal to your Concurrent User licenses. This model works as a “licensing pool”, the same as the Concurrent Learner licenses described below.
  • Named Host: With this licensing, a Named Host can host a Connect Meeting at any given time of up to 100 attendees. The licensing model itself refers to a named, specific user (cannot be a general login) that is in the Meeting Hosts Group. For instance, if you purchase 15 Named Host licenses, you have the ability to place up to 15 people in the Meeting Hosts Group. Each of the people in that group can have up to 100 attendees (internal users and/or external users, etc.) in any Meeting Room that they’ve created. Each Meeting Host Group member can run any one of their rooms at a given time and they must be present in the room for it to have full functionality.  This licensing model is best used for frequent usage in Meeting Rooms, or also very adequate for webinars that will not exceed 100 attendees. Meeting Hosts also get Author rights, described below, which gives them the ability to publish Content to Adobe Connect so it may be displayed in their Meeting rooms. This is currently the most popular licensing model.

Note: Named Host and Concurrent User cannot co-exist on any Connect deployment, as they are both representative of the Meeting Module

Content Module

  • Content Publish – Also known as Author licenses. These licenses are indicative of Content Module within Connect. This will give anyone placed in the Authors System Group the ability to publish Content to Adobe Connect for on-demand access. For instance, if you purchase 15 Content Publish licenses, you have the ability to place up to 15 people in the Authors System Group.

Note: Content Publish licenses are purchasable for On-Premise Connect deployments, as the Content Module is open to an unlimited number of users. Since you are in control of the amount of disk space available to Connect, you can decide how many individuals you want to be able to push content to the server.

Training Module

  • Concurrent Learner – With this licensing, Connect is enabled to deploy Curriculums and/or Courses on the system. Any enrolled users will have their results tracked via the lightweight LMS functionality that Connect offers. The concurrency portion translates to having the ability to have up to the total amount of licenses purchased online at any given time, having their results tracked. For instance, if you purchase 100 Concurrent Learner licenses, you have the ability to have up to, but no more than, 100 enrollees online concurrently having their results tracked. Unlimited Curriculums and/or Courses can be created, and you can enroll an unlimited amount of users, but you are capped at how many concurrent licenses you have. So if you have 1,000 enrollees and only 100 licenses, only 100 enrollees can be tracked at any given time, and the remaining enrollees will have the ability to engage in the training content and have their results tracked once the one of the enrollees have completed the training and are no longer accessing the training content.
    • Changes with Connect 9.4 – The Concurrent Learner module will be for the creation and delivery of on-demand training. The use of the Virtual Classroom, and delivery of Courses within the Virtual Classroom, is no longer associated with the Concurrent User license.
  • Named Virtual Classroom Manager (NVCM) – With this licensing, a Named Virtual Classroom Manager can create and run a Virtual Classroom at any given time with up to 200 attendees. The NVCM can also create Courses within the Training Module of Connect, but they will only be able to be delivered within a Virtual Classroom as synchronous training. This is a simplification from how the Virtual Classrooms used to work, which was through a combination of your Meeting licensing and Concurrent User licensing. This licensing also comes with access to the Events tool. Meaning that members of the NVCM group can create and manage Events to allow users to self-register for their sessions in the Virtual Classrooms or other objects that they have access to in Connect Central.

Note: Concurrent Learner and Named Virtual Classroom Manager licenses can co-exist on any Connect deployment. If you have both, then the ability to deliver both synchronous and non-synchronous training will be available.

Webinar Rooms

  • Named Webinar Manager (NWM) – In an effort to simplifiy the old Seminar Room licensing and more closely align with offerings from other competitive products, a new licensing option has been created. The Named Webinar Manager is similar to a Named Host for the Meeting module. NWM licenses are assigned to members of the new Webinar XXX Managers group, where the XXX will be the number of attendees that that manager can have in their session. NWM licenses will come in 100, 500 and 1000 seat capacities, and also include the Events module. The NWM can create as many instances of their webinar room as they want/need, but can only run one at a time. NWM must be present in the Webinar room for it to run.
  • Shared Webinar Rooms – These Webinar rooms work the same as the old Seminar rooms but are only available in capacities of 500, 1000 and 1500 seats. Anyone may be assigned as a Seminar Administrator group (formerly known as the Seminar Host group) and can run a session in those Webinar rooms. Sessions must be scheduled as they have been in Connect 9 to get access to the full licensing limit. Unscheduled sessions can have full access to the licensing limit if no pre-scheduled sessions will cause a conflict.

Note: Named Webinar Manager and Shared Webinar Room licenses can co-exist on any Connect deployment.

Events Module

  • No Longer Available for Stand Alone Purchase– In the past the Events module was available for purchase independent of any other module of Connect. However, with the changes of the licensing structure of Connect 9.4, this is no longer the case. If you are looking to acquire the Events module for your Connect deployment, you will need to look at purchasing either Named Virtual Classroom Host, Named Webinar Host or Shared Webinar Room licensing.

If you are a current Adobe Connect customer, you will be given a grace period to change any existing licensing over to the new licensing offerings. If you don’t have any licenses that are changing, then you don’t need to worry about anything, Adobe Connect will remain the same for you. If you are a new customer or an existing customer looking to add new functionality to your Connect deployment, you will only be able to purchase under the new licensing moving forward.

And there you have it, the new licensing for Adobe Connect as of March 9th, 2015. If you have any questions or comments, feel free to post them below. You can also contact us directly and we’ll do all we can to help you move forward with your Adobe Connect needs.

Adobe MAX 2013It’s that time of year when the excitement at RealEyes for the Adobe MAX conference begins to brew.  And this year looks like it’s going  to be another exciting and inspiring event filled with great networking opportunities and motivating sessions.  Our very own David Hassoun will be passing his knowledge onto all those interested in Adobe Primetime and the Primetime Media Player. If you want to hear about Adobe’s next generation of online video offering,  make sure to not miss this session!

Creating a Multiscreen Video Player for Adobe Primetime

 Wednesday, May 8th @  9:30 AM

Learn how Adobe Primetime Media Player provides the foundation classes and services to deliver premium video to Flash, iOS, and Android enabled screens, satisfying the needs of audiences today who view content on many devices and expect high-quality video, delivered immediately, within a unique user experience.

Join community leader David Hassoun, founder of RealEyes, as he walks through video player development techniques that:

  • Monetize with seamless ad insertion
  • Implement rich video analytics
  • Optimize content for devices on mobile networks
  • Protect HD content with Adobe Access

Sign up here to register for the session.

In addition to David’s Presentation,  the RealEyes team  will strongly be represented in attendance by many of our developers. Make sure and follow them on twitter and get their thoughts of the conference in real time.

See you there!

Adobe Media Server 5 is Shipping!

Posted on June 22, 2012 at 3:33 pm in Blog, Media Solutions, Products

Adobe Media Server 5 is Shipping!

Adobe Media Server 5Adobe Media Server 5 begins shipping June 21st!

As some of you may or may not know, Adobe Media Server 5 was officially announced last month. This blog post from Kevin Towes (FMS/AMS Product Manager at Adobe) also gives a little more insight:


To better clarify, the Adobe Media Server product line (formerly known as Flash Media Server) began shipping  June 21st 2012, in a staggered release format. The Linux version for new licenses is available immediately. The Windows version and upgrades will ship later this year. There are very few resellers able to offer the new Adobe Media Server 5 at this time, and it just so happens that RealEyes is one of them, so contact us for further details and questions.

It is also important to note that all Flash Media Server products will be getting a name change with this release as well. To avoid any confusion, the name changes are as follows:

–          Adobe Flash Media Development Server Adobe Media Server 5 Starter

–          Adobe Flash Media Streaming Server  Adobe Media Server 5 Standard

–          Adobe Flash Media Interactive Server Adobe Media Server 5 Professional

–          Adobe Flash Media Enterprise Server  Adobe Media Server 5 Extended

Some of the features of this version release include:

  • Dynamic copy protection for Flash, Android and now Apple (DRM)

Reach a wider audience with a premium video experience consistently across devices, TVs and desktops with a single infrastructure to protect with a single protection solution.

  • Simple publishing workflows for protected HTTP streaming

Use the same source media and live streams to deliver and protect full adaptive bitrate experiences to Adobe Flash, Android and Apple devices to help reduce storage and infrastructure costs.

  • Standalone offline packaging utilities for HDS and HLS

New HLS packaging utility with integrated encryption to prepare your media content and lock it down with a wide variety of protection options including DRM with Adobe Access 4

  • On-Demand stream packaging

Publish faster, reduce storage costs and save time by publishing video once with full adaptive bitrate support.

Contact us if you would like to learn more about the Adobe Media Server.

The past week has brought a series of announcements from Adobe that has elicited myriad speculation and concern from the Flash Platform and Adobe community.  As a leading Adobe Solutions provider for Flash Platform solutions, RealEyes wants to address these announcements and how we see their impacting our focus in the technological ecosystem.

Before we begin this analysis, from our vantage point, the largest issue with these announcements is the way in which they were communicated—to the public, to partners, everyone.  There was much good news in what Adobe announced; unfortunately, their public relations team chose to focus largely on what was being deprecated, which colored the resulting dialog.

We’d like to take a moment to refocus this conversation for our customers and community.  Contrary to popular debate, Flash is NOT dead.  And here’s why:

Adobe Focus on Mobile Applications

Adobe announced that it would be more aggressively contributing to HTML5, with future Flash Platform development to focus on personal computer and mobile applications.  Great!  Our clients who are developing mobile experiences are universally doing so with the intention of making installable applications.  More Adobe focus in this area will only enhance the experiences that we are able to work with them to deliver.

The Flash Platform is still the best way to develop mobile application experiences intended to be deployed across the major application marketplaces: Apple, Android, and Blackberry.

However, what got the most attention in this announcement was that Adobe is discontinuing development of Flash Player for the mobile browser.  While this got many people up in arms, declaring the general demise of the Flash Player, we at RealEyes can respect this decision and see the validity of it.  For Adobe, the return on investment for this runtime simply wasn’t there, and with the fragmented nature of Android (and a few other issues that contribute to delivering an application to all browser, OS, and mobile hardware configurations) the continued development of the mobile Flash Player would be exponentially complex.

For application developers, the mobile Flash Player was never as good a runtime as the desktop one.

So, how is the discontinuation of mobile Flash Player affecting our clients? Really, it isn’t.

Because mobile device users are more likely to look exclusively toward installable applications for rich media content—and RealEyes’ Flash Platform applications largely deliver rich media content—our customers have been developing applications built using the Flash Platform and relying less on the mobile web.  Mike Chambers does a nice job of discussing the differences in how users consume rich content on mobile devices compared to the desktop, and we agree wholeheartedly that this is the way to go.

Because Flash Player doesn’t have the same ubiquity on mobile devices as it does for desktop browsers RealEyes was already advising our clients to create fallback experiences for their Flash content for mobile browsers.  For most of them we could achieve the same functionality in HTML as in Flash (video being the exception as you’ll see below).  Why not forgo Flash entirely and have a single HTML codebase to support?  Seems like a decision that makes good business sense.

Not that we aren’t sad to see mobile Flash Player go: we are.

If only because we don’t want the web to have missing plugin alerts. Having the Flash Player plugin available to Android and Blackberry mobile browsers was a convenience that offered a great marketing pitch, but, truthfully, delivered very little.  This is due, in large part, to the fact that the majority of the web was design for the desktop and was not meant for (nor is it very functional for) mobile phones – period, full stop.

In truth, we’ve seen just a very few Flash applications developed specifically for the mobile browser.  We at RealEyes have developed just one of these for commercial release. And this application was built before AIR for Android and was always intended to be a stop-gap until this runtime was available.

Now, tablets make a better use case for Flash’s place in the mobile ecosystem; however, the number of tablets that support Flash is under 30% of market share.  Given this and Apple’s seemingly prohibition on Flash, the Flash Player was just never going to achieve the same ubiquity as it has on the desktop for tablets, or for mobile phones for that matter.

Adobe Supports HTML5 Development

As Adobe is a multimedia creation company it will want to be at the forefront of whatever technology is defining exceptional user experiences for multimedia delivery.  And, for a few years now, Adobe’s been looking toward HTML5.  Unfortunately, the announcement from Adobe that contains the information about the discontinuation of the mobile Flash Player makes it sound like Adobe’s just jumping on HTML as a development platform.  That’s just not true.

Even more unfortunate in the present debate is a perception that Steve Job’s thoughts on Flash have somehow won and that this was just fallout from an Apple v. Adobe war.  Not so fast.  Apple and, to some degree Microsoft, have done much to market HTML5 development to the point that its perception overpromises what it can deliver.  Although Adobe has been working to educate its community about the benefits of the Flash Player over HTML5 and was backed by legions of developers, animators, designers, and content creators, they couldn’t overcome the tactics of a such powerful and cunning marketing machines.  While standing its ground on the mobile Flash Player, Adobe was, in many ways, able to achieve what critics said was not possible with Flash Player on mobile devices.

So, if Steve didn’t win, who did?

Well, Adobe is still poised to win and … more importantly so is its community of developers and customers.  Look at tools like Adobe Edge and the new mobile enhancements to Dreamweaver.  Also, with Adobe’s acquisition of PhoneGap, Adobe developers are poised to deliver the best HTML5 experiences out there.  Yeah, it’s not Flash … but that’s OK. While it seems like Adobe’s making a sharp turn toward HTML5, from where we sit, they are more fully committing to a direction that Macromedia, and then Adobe, started in some time ago.  Remember the HTML and Flash being friends video from Adobe MAX last year?

And, with other recent innovations for mobile AIR such as the availability of native extensions, the future of mobile development is exhilarating for any Flash Platform developer.  We’re hopeful that Adobe will use this opportunity to sharpen their focus on native mobile functionality and continue the path of making the Flash Platform the best choice for developing multi-platform mobile applications with a single code base.

However, the perception that Adobe’s making a rash decision is very damaging and something that we’re working with our clients to help them understand.  The reality of the situation is that not much has changed; however, poor communication, horrible messaging, and virtually no community outreach from Adobe regarding this messaging has made the perception the accepted reality in the short term.

And, if that weren’t enough news for one week …

Adobe Really Open Sources Flex

In clarifying its future plans for the Flex SDK, Adobe announced that the Flex SDK will be contributed to an open source foundation.  The good news in this move is that the Flex community is mature enough to take on the governance of this robust framework moving forward.  This wasn’t the case in February of 2008 when Adobe released Flex 3 as open source (Adobe had been planning to open source it since April of 2007).

For several years now, Adobe has been moving towards a more open standard with their development and this decision to contribute the Flex SDK to an open source foundation isn’t something that’s Adobe has done in isolation, and not just to the Flash Platform.  Some other projects that are on this path are:

  • PhoneGap
  • BlazeDS
  • Flex SDK

And, in reading Adobe’s clarification to this open source announcement, we see even more reason to be excited.  They are also open sourcing tools that support Flex including an experimental one (Falcon JS) that cross-compiles MXML and ActionScript to HTML and JavaScript.  Now, that’s exciting!  And, we’re sure that more is on the horizon.  Maybe HTML and Flash can be friends after all.

And, let’s be honest, the original model that Adobe used to open source Flex didn’t go as planned.  While Adobe always said they welcomed contributions from the community to grow and improve the Flex SDK, the process for getting a change accepted was unclear and many community contributions were rejected for any number of reasons (valid or invalid).  Adobe simply did not have the process or the resources to handle the influx of developers who wanted to contribute.  It was a frustrating situation for the Flex development community (and arguably Adobe as well).

So, the vibrant Flex community answered back earlier this year by creating the Spoon Project to better organize and test Flex SDK modifications submitted by the Flex community.  It proved to be an excellent model, drove innovation of the Framework, and was an initial step toward the full open source move that Adobe just announced.

Who’s governing the future of Flex? We are!

In case the nuance in what’s different now versus Adobe’s 2007 decision to open source Flex isn’t apparent, the major difference is that the Flex community will extend the Flex code base without needing Adobe’s permission to do so.  A new governance, following Apache’s well-established community rules, will be formed to determine the future direction of the codebase.

Since our inception RealEyes has been in close contact with Adobe’s Flash Platform team, we’re excited for this change in governance. RealEyes has always been super excited about the Spoon Project, and our Development Manager (Jun Heider) is very active in this community as the Infrastructure Chairman.  We’ve seen that this is truly a community-driven initiative that is supported by Adobe to increase the volume, speed (and maybe even the quality) in which the Flex framework can grow.

We are excited to contribute further to the future of Flex and confident that, like other successful open source communities, the language will continue to evolve.

Also … Flex isn’t all of the Flash Platform

Sadly, many of the announcements that we’ve been talking about, including the open sourcing of Flex, led many to say that Flash is dead. That simply isn’t true.  Let’s talk about what the Flex framework actually is: a particular framework used to structure Flash Platform development.  Do you have to use it to develop Flash Platform applications? No. And, to be honest, RealEyes doesn’t use Flex in every Flash Platform project because sometimes that framework can make applications to “heavy”.  If performance is of paramount concern for a Flash Platform application, Flex often cannot replace pure ActionScript.

Flash and Flex are not going away.  Adobe is still committed to developing tooling to support development for the Flash Platform. Further, Adobe hasn’t open sourced the Flash Player, the most installed piece of software in the history of the internet.  Adobe plans on steadily contributing to the Flex SDK in its open sourced project and we are working with the Flex community to make us contributors as well.

Adobe and Enterprise Applications

In a week of poorly handled communication, probably RealEyes’ largest concern was Adobe’s statement that “In the long-term, we believe HTML5 will be the best technology for enterprise application development.” Ouch.  Big enterprises have invested millions upon millions of dollars in the development and maintenance of Flash Platform applications.  At the very least that statement can erode the confidence that large companies (or companies of any size, really) have when building systems based upon Adobe technology.  Something that we feel is probably a bit of an over-reaction.

Also, without context this statement is very misleading.  Currently, HTML5 does not have full functional parity with the Flash Platform.  A few days after making this statement, Adobe clarified it by indicating what it intended as a timeframe for HTML5 to be able to truly complete with Flash Platform development: three to five years. That timeframe could be heavily extended when considering corporate browser adoption timelines.

There’s no enterprise that can wait three to five years for functionality.

As Adobe stated, “Flex has now, and for many years will continue to have, advantages over HTML5 for enterprise application development – in particular:

  • Flex offers complete feature-level consistency across multiple platforms
  • The Flex component set and programming model makes it extremely productive when building complex application user interfaces
  • ActionScript is a mature language, suitable for large application development
  • Supporting tools (both Adobe’s and third-party) offer a productive environment with respect to code editing, debugging and profiling and automation.

We see all that as being the case and some more:

  • Enterprise clients tend to have slower adoption rates for software, meaning that not all enterprises support the advanced HTML5 features that exist.
  • In particular, the video capabilities in HTML5 are not as robust as what is available in the Flash Platform including multicasting with integrated hardware acceleration and advanced security models.
  • The testing issues for supporting browser fragmentation can be daunting to enterprises, compared with supporting a Flash Platform application that can be deployed across desktop browsers with consistent display and functionality.

RealEyes will continue to recommend Flex and Flash Platform development to our clients where it makes real business sense to do so.  That said, there are reasons to use HTML over (or alongside) the Flash Platform, and we have plenty of clients we support who do that as well.

The Impact to RealEyes

So, what does all of this mean to RealEyes?  In the short term, it has meant a challenge to bring context to Adobe’s announcements and dispel rumors and misinformation to our clients. In the long run, it probably doesn’t mean a lot.

We have already been on a path of technology diversification with continued focus and adoption of HTML5, its supporting technologies, and native mobile development. Many of us are in the technology space because we enjoy the challenge of evolving our skills as the industry grows.  However, for the next few years, we anticipate that the Flash Platform will continue to be our predominant focus.

Our development specialty has been in delivering industry-leading streaming media solutions and multiscreen development. Flash and AIR are still the best solutions for this and will be for a while.  The timeline for that largely depends on Adobe and, as a valued Adobe Solutions Partner, we will continue to support them in as educated and balanced way as possible.

We are actively involved in the future of the Flex framework through the Spoon Project and excited about the potential for future growth for that project.  We are now even more apt to contribute to the betterment of this already robust framework for the benefit of the Flex community.

Finally, RealEyes has always helped our clients to choose the best technology to power a given project and we will continue to do this.  And, as HTML5 becomes a more comprehensive solution, we will likely recommend it more frequently. It is truly about what is right for the current and future on a case by case basis. Our clients and projects will continue to be industry leaders, no matter the technology behind them.


Now, we can’t see all of the news in a positive light.  And not all of it is positive – certainly not for the 750 Adobe employees who were laid off and their families. However, this degree of restructuring in the fourth quarter isn’t unprecedented for Adobe.  We’ve seen this over the past couple of years.  This year, as in years past, we lost meaningful relationships with Adobe employees that we’ve been happy to collaborate with on community and development projects.  We at RealEyes have close contact with Adobe and tend to focus on how individuals shape the platforms, products, and communities that we work with instead of quarterly earnings and fiscal projections.  While adjusting to this restructuring, we wish all of the affected employees only the best in their next moves and hope that they will continue to make positive contributions to the technical community they have helped to shape.

Additional Links:

OSMF 1.6-Sprint 5 is Here!

Posted on June 06, 2011 at 2:27 pm in Development, Media Solutions

Today Adobe announced the release of the latest sprint for OSMF 1.6, and it includes some exciting new features in terms of how it can handle audio. The biggest new feature is support for multiple audio tracks for HTTP Dynamic Streaming. Known as “late-binding audio”, this methodology allows producers to present multiple audio-only tracks attached to a particular video to the end user. Consider, for example, the need to deliver videos in more than one language. Late-binding audio allows producers to include seperate audio tracks for each language, and then have the viewer choose the appropriate one based on their needs. The benefits to having multiple audio tracks associated with a single video file are savings in encoding time, as well as reduced storage requirements-much more efficient than having to encode and store several different versions of each video. OSMF also supports the ability to switch between audio tracks during playback, which allows even more flexibility in terms of what kind of user experiences are possible.

Currently late-binding audio is available for video-on-demand only, but Adobe promises live/linear support in their next drop.

Check out the original announcement here.

Challenges of the Mobile Platform

  • Delivering a multimedia experience
  • Performance & Memory
  • Usability and User Experience


  • Flash Player 10.1
  • Open Source Media Framework (OSMF) based media playback
  • Custom, light-weight framework for visual presentation and data management
  • CSG Systems’ Content Direct


Realeyes Media, together with CSG Systems, built the Content Direct Mobile media streaming application. CSG Systems (NASDAQ: CSGS) provides software and services-based solutions that help clients improve commerce by better engaging and transacting with their customers. CSG provides enabling applications and a monetization platform to engage customers wherever they consume content.

Content Direct, a business unit of CSG, is focused on providing a complete ecosystem of online, mobile and OTT content and merchandising solutions.  Its solution empowers service providers, content creators, aggregators and distributors to easily and effectively market, monetize and manage their members and build engaging relationships by leveraging rich content.

Content Direct was created  to manage live events, content for video, music, games, other digital wares and physical merchandise and provide a flexible “browse, buy and belong” membership experience.  Content Direct provides consumer the ultimate flexibility in how they find, pay and manage their content choices and how they interact with their entertainment brands.

Content Direct is architected as a set of application modules (Member, Content, Commerce and Advertising) that expose its functionality through a set of well defined web services to applications such as the Online Storefront for Devices, , a Customer Care  Portal, Reporting Portal and the Invision Portal, a metadata manager.

Some of CSG’s  clients include:

  • Ultimate Fighting Championship
  • NBC Universal Sports
  • Onlive (Gaming)

CSG chose RealEyes as their partner to extend Content Direct’s online experience to mobile, enabling customers to market their premium video pay-per-view or subscription content on mobile devices.  Content Direct enables consumers to be able to watch, buy and manage their content from any device at anytime, anywhere.  Having established online, OTT and connected device solutions, Content Direct Mobile provides another way for customers to view and manage their content.   Content Direct Mobile allows users to search for content, buy video, manage their account and watch videos from their Flash enabled phones.

CSG partnered with RealEyes and Adobe to create Content Direct Mobile.  RealEyes and Adobe were obvious partners to extend Content Direct Mobile’s strategy.   RealEyes’ deep experience with Flash, Flash Mobile, OSMF combined with their relationship with Adobe were invaluable, and Adobe’s Flash penetration and the planned rollout to the mobile devices worldwide made Adobe a natural partner in deploying the Content Direct Mobile solution.

The Application

The Content Direct Mobile application uses the Content Direct’s existing data services and streaming media built for existing browser based clients and leverages the Flash Player 10.1 mobile player to create a rich and engaging mobile client experience to search, manage and view personalized media selections and libraries. Using a custom and light-weight visual presentation framework, the Content Direct Mobile application manages visuals and content in such a way as to conserve as much memory and resources as possible.

The Framework

Taking into account the Flash Player 10.1 improvements and optimizations already provided by the Flash Player team, the Content Direct Mobile application framework was built for speed and light weight. RealEyes built a powerful lightweight layout management system and UI controls that were optimized for mobile application development. This provided the application a versatile and sturdy foundation to build upon. Some of the challenges that we looked to address early on were screen rotation, and resolution independent layout. One of the benefits to both of the above challenges was there was no need of new ActionScript API’s or Flash runtime to build and manage such issues. This allowed us to utilize our past experience and apply it to the mobile application arena without losing a step.

Another area of focus for the framework and optimization was screen transitions and dynamic media asset management. Utilizing the robust ActionScript 3 bitmap management and caching appropriately for both content and motion played a major part in this. The custom bitmap management allowed us to maintain high quality motion and frame-rate while still keeping power and file weight low.

We enabled full branding and UI skinning via the clients data services and an Adobe Flash Professional source file created and managed in Flash CS5. Currently this media asset package creates a library file (SWC) that is utilized by the pure ActionScript 3 application developed in FlashBuilder 4.

The Media Player

The Content Direct Media player was built using Adobe’s Open Source Media Framework (OSMF). A testament to the quality of the OSMF and Flash Player 10.1, is the ability of the player to perform on a mobile platform without modification. In the future the media player could be an area of modification for optimization and performance enhancement, but right out of the box OSMF filled our needs and exceeded our expectations.

The extensibility of the OSMF allowed us to build in a custom control bar that is highly customizable for any client of Content Direct. In addition the OSMF plugin extensibility capabilities are a major benefit to the project and offer a high level of extensibility with ease.

The Bonus of AIR for Android

Having built the Content Direct Mobile application as an ActionScript 3 application, the transition from a browser based application to a natively installed Android application was accomplished with minimal effort. The following is a basic overview of all we needed to do to create a the AIR for Android application package:

  • We began by extending the main ActionScript class from the browser based application in our AIR for Android application.
  • Integrate features built into to the Android Operating System, such as keyboard functionality and navigational features using the updated APIs from the AIR for Android SDKs.
  • Listen for and respond to events associated specifically with the mobile application to handle screen orientation and sizing efficiently.
  • Package an AIR file by use the Andoird SDK adt commands to create the Android package (apk).


As the Flash Platform matures and grows on mobile we are looking forward to the ability to collaborate with Adobe and other companies allowing us to use our existing, skills, content and code on an ever increasing number of devices. Another exciting facet of the improvements and optimizations for Flash Player on mobile is how it will affect other device platforms – from laptops and netbooks, to set-top boxes and consumer devices – the possibilities are expanding and very exciting for us.

Overall we at RealEyes have been incredibly impressed with the capabilities and the development process for Flash applications on the Android devices. Some challenges were encountered with integration into the browser when it comes to rotation and form inputs, but Adobe has recently released an excellent article which addresses many of those issues. Performance and battery life have been nothing less than astonishing, and even the video playback without hardware acceleration (a temporarily missing feature) has been very promising.

The biggest changes in development are solely around form factor for UI, and optimization for devices with lower power capabilities than the desktop. For those who are more reliant upon a full framework like Flex it may be a little more of a challenge, but with reasonable ActionScript skills and consideration for complexity and optimization it is amazing how easy it is to make robust applications for a Flash enabled mobile device.

Peer to Peer using the Adobe Flash Platform

Posted on February 22, 2010 at 3:25 pm in Development, Media Solutions

Adobe Flash Player 10.1, Adobe Stratus 2, and Real-Time Media Flow Protocol (RTMFP) are setting a firm foundation for peer-to-peer (P2P) with peer-assisted networking. Using the capabilities of groups and the new features around them, you can make deployments of nearly any scale and take advantage of multiuser interactive applications for data and media. Everything from application-level video multicasting to swarming file delivery and multiuser games are within easy reach of developers, without the heavy burden being laid upon a server infrastructure.

RealEyes’ David Hassoun and Jun Heider have just released the first in a series of articles for Adobe’s Developer Connection that focus on the P2P capabilities of the Adobe Flash Platform, Adobe Stratus, and RTMFP. Future articles will dive deeper and provide a hands-on approach to utilizing the new groups and peer-assisted network topologies to make corporate enterprise, social media, and entertainment applications.  Read the article.

RealEyes Media at Adobe MAX 2009

Posted on September 15, 2009 at 11:00 am in Development, Media Solutions

David Hassoun and Jun Heider of the RealEyes team will be presenting at MAX 2009 October 4–7 in Los Angeles, California. David will be presenting on Video in the Enterprise and Jun Heider’s topic will be Tackling Memory and Performance in Flash, Flex, and Adobe AIR.

Be sure to sign up and check out David and Jun’s sessions. Register here for what promises to be an amazing event!

Video in the Enterprise – David Hassoun
Learn how you can deploy video in Flash within your enterprise. This session will walk you through how you can support employee generated video, control access with LDAP and how to install, configure and customize the Adobe Flash Media Server within your network. The lab will focus on the specific challenges faced within large enterprises and implementing user authentication techniques using server side ActionScript. Step through the processes to deploy and discover the benefits of edge caching and other deployment techniques for high volume streaming using Flash Media Server within your network to publish live and recorded media.

Tackling Memory and Performance in Flash, Flex, and Adobe AIR – Jun Heider
Learn everything you need to know about managing memory during the lifetime of your application. We’ll address how objects are created and deleted, how the garbage collector works, and how to debug your applications to find any leaks. We’ll also cover how you can monitor the memory and performance of your application using the Flash Builder 4 Profiler. You’ll walk away with code in hand that provides solutions to common problems likely to be encountered when creating a wide range of applications.

RealEyes Media has been working at fever-pitch for the last few months to bring you the most Flash-tastic event in Denver’s history: Rocky Mountain Adobe Camp.  And, of course, our crew will be there (alongside other premiere designers and developers) to present sessions on how you can best use Adobe’s web technology in your career.  We invite you to join us in Downtown Denver on June 22, 2009 for the first ever Adobe Camp!

Here are the sessions that our team is presenting:

  • Building Flash Video Players: Progressive and Streaming (David Hassoun)
  • Enterprise Encoding and Encrypting (Jun Heider & David Hassoun)
  • Building Your First Flex/AIR Application with Flex 4 (Jun Heider)
  • Building Custom Connect Pods in Flash with Sync SWF (Nils Thingvall)
  • Creating Courses and Curricula in Adobe Connect Pro (Jorma Jennings)

And, while we’re giving props to our team, we want to thank the Adobe Camp planning duo: Amanda Johnson and Josh Lucero.  Make sure to meet them at the camp as well – they are making sure it will be a great day!