Deconstructing the Power of OSMF

| No Comments
Flashstreamworks has a post by Jens Loeffler breaking down the why and the what behind OSMF.  Here's a taste:

So why do you need a framework?
The decision depends on your use case. If are building a small website, with some static videos, the existing components might work well and provide a great default UI. A different case are more advanced video projects. The players might simply not fulfill your requirements, therefore you have to build a wrapper on top of it, or even build your own framework from ground up - if you ever built your own video framework, you probably know this can be a pretty intensive task, and certainly something you don't to do for each individual video project.

Read more over at Flashstreamworks...

OSMF v0.9 released

| 2 Comments
The ZIP file for the latest OSMF release is live!  Here's a high-level summary of the latest changes:
  • OSMF Sample Player with Chrome.  We've heard your feedback about the need for a configurable, embeddable sample player.  The new OSMFPlayer supports all OSMF media types, and comes with a nice-looking, dynamic control bar. If you play a progressive video, you'll have basic playback controls.  If you play a dynamic streaming video, you'll have an additional set of controls (for monitoring or switching streams).  The sample player uses the new ChromeLibrary, a reference implementation for how to create UI controls with OSMF.  You can see the player in action here.
  • SMIL Support.  A new SMIL plugin allows you to create MediaElements out of SMIL documents, and play them back.  Supported SMIL features include dynamic streaming (via the <switch> tag), parallel and sequential media, and the core media types (video, audio, and image).
  • HTTP Streaming Support.  We've added support for HTTP streaming in the latest OSMF release.  If you'd like to test this new functionality, please sign for our pre-release at: https://www.adobe.com/cfusion/mmform/index.cfm?name=prerelease_interest.  (Note that the prerelease enrollment form at this link won't be available until approximately 2/12.)
  • Enhanced Plugin Support.  We've added a new plugin type (CREATE_ON_LOAD) to allow a plugin's MediaElement to be created as soon as the plugin is loaded.  This is useful for plugins that monitor the status of other media (e.g. for analytics & reporting).
  • API Lockdown Progress. We continue to make progress on our lockdown of APIs, and we expect the lockdown to be largely complete in the next release at the end of sprint 10. Details of API changes in sprint 9 are included in the release notes.  We have been aggressively working with an internal review board to review the public APIs, and have made sufficient progress now that we consider the API to be functionally complete.  The review process is likely to go on for at least another month, during which the primary focus will be on ensuring that terminology and conventions are consistent with other Flash Platform APIs.  For information on overall status of the API lockdown effort, please see our API Lockdown Status wiki page.
Please note:  While we understand that using an API that isn't fully frozen yet carries some risk of additional refactoring work later, we believe that most of that refactoring will amount to renaming of methods/classes/packages rather than fundamental changes to the workflow, and we encourage you to start developing real world applications based on this build. Your feedback in the next month will really help us ensure that we enable your unique use cases before we truly freeze the API for our final release.

And here are the links:

OSMF v0.8 now available

| No Comments
We've posted the ZIP file for the latest stable OSMF release.  New features include:
  • Live Stream Support.  Player developers can now specify the stream type (live vs. recorded vs. either) when connecting to FMS.
  • Subclip Support. This feature allows for playback of subclips, or contiguous sub-sections, of a streamed video, which lays the groundwork for presenting mid-roll ads.
  • Captioning Plugin.  We've implemented a new plugin that can handle captioning for OSMF-based players, using the W3C's DFXP timed text format.
  • Flash Media Manifest Support.  Adobe is proposing a new XML format for representing a Flash Media asset (including MBR information) and its related metadata.  The latest drop supports this through the F4MLoader class.
  • Preassigned Durations.  You can now specify a default duration (via the defaultDuration) property on VideoElement and AudioElement, so that the media can reflect its duration before playback.
  • CompositeElement support for bytesLoaded and bytesTotal.  In a previous sprint,we added support for tracking download progress for a single VideoElement.  Now, you can track the download progress when your video (or other downloadable media) is part of a composition.
  • Improved Metadata Merging Support.  CompositeElements now reflect the metadata of their children.  The Metadata API exposes finer-grained control over how a child's metadata will surface on its parent.
In addition, we've made great progress in refactoring and renaming our core APIs to address customer feedback, and to be more consistent with other APIs in the Flash Platform.  In the short term, this means that virtually every player and plugin built on top of previous versions of OSMF will need some code changes to integrate with the new APIs.  (The release notes contain a summary of these changes, as well as some tables with the old and new names, which should be helpful when updating your app.)  In the long term, this moves us one step closer to solidifying our APIs and our 1.0 release.

And now the links:

Using Dynamic Plugins

| No Comments

The plugin framework for OSMF can appear complicated at first glance, but from the point of view of a player developer, it's actually fairly simple. Loading plugins can be as simple as one line of code added to an existing player. Early versions of the framework required the plugin exist on the same domain, but now the framework can load plugins cross domain, given that the player is hosted from an http:// url and the plugin is also hosted from an http:// url, and the plugin's webserver has the appropriate cross-domain policy file in place. This means loading a player locally (using a file:// style url) won't work with dynamic plugins. A local webserver is the suggested setup. Using the PluginManager, a plugin can be loaded in one line of code. The following code snippet demonstrates how one might load a CDN plugin:

... 

private var mediaPlayerWrapper:MediaPlayerWrapper = new MediaPlayerWrapper() ; 

private static const REMOTEPROGRESSIVE:String = "http://mediapm.edgesuite.net/strobe/content/test/AFaerysTalesylviaApostol640500_short.flv";

private static const PLUGIN_REMOTE:String = "http://example.com/samplePlugin.swf"; private var manager:PluginManager;

private function init():void

manager = new PluginManager(new DefaultMediaFactory()); manager.addEventListener(PluginLoadEvent.PLUGINLOADFAILED, onPluginFailed); manager.addEventListener(PluginLoadEvent.PLUGINLOADED, onPlugin);
manager.loadPlugin(new URLResource(new URL(PLUGIN
REMOTE)));

 }

private function onPlugin(event:Event):void 

trace('loaded'); 
mediaPlayerWrapper.element = manager.mediaFactory.createMediaElement(new URLResource(new URL(REMOTE_PROGRESSIVE))); 

}


private function onPluginFailed(event:Event):void
trace('failed'); 
}

 .....

The above code snippet will attempt to load the plugin at http://example.com/samplePlugin.swf. This line needs to be changed to the location of the plugin the player wants loaded. For instance it can be changed to the location of the Akamai plugin, once Akamai releases their CDN plugin.

This feature releases the player developer from having to maintain plugin code. It allows bug fixes and updates to reach players using 3rd party plugins, without having to recompile players.

Upcoming Beta Program on the way to OSMF 1.0

| No Comments

With nearly eight sprints of development under our belt, it's time for an update on the release plan for OSMF 1.0, which is scheduled to land in Q2 2010.  The focus of this post is to preview the upcoming beta program that starts in late January.

First, a couple of small adjustments to the immediate schedule: to accommodate the Thanksgiving and end of the year holidays, we've expanded Sprints 8 and 9.  As a result, Sprint 8 will finish in mid December, and Sprint 9 finishes at the end of January.

In fact, the Sprint 9 release at the end of January will represent a major milestone on the road to version 1.0:   Beta 1.  This release will be mostly feature complete (HTTP streaming support will still be in progress) but more importantly it will include stable APIs.  After Beta 1, Beta 2 will follow, then a Release Candidate, and finally 1.0 in Q2.

The goal of providing a set of beta releases is to show the developer community that the framework is ready for prime time, and that you can use it to start building real world media players with a reasonable expectation that your code will continue to work into the future.  It's also the last chance to let us know something needs to be changed or fixed before we release 1.0.  The beta program is essentially a dress rehearsal for the APIs that will be supported into the future.

Between now and the end of January, we're taking a number of steps in order to ensure that we have a solid API for Beta 1.  We've been conducting detailed reviews with the API review board here at Adobe in addition to several team reviews, and we're also working on writing real world player applications to vet the API.  In addition, we'll be taking a close look at performance and package/class level dependency with an eye towards impact to the public API.  In short, Beta 1 will be the milestone by when we've evaluated and triaged all the feedback received to date and made resulting API changes necessary for 1.0.

Unless you tell us something is missing, the Beta 1 API will be what ends up getting released at 1.0.  We encourage you to put OSMF through its paces and use it to build a real world player for your production website.  If something doesn't work quite right or if your use case isn't enabled, we want to hear about it!  (You can file bugs and enhancement requests in JIRA.)

More details on the beta program to follow in the coming months...

For an up-to-date summary of the OSMF feature set and release schedule, check out:
http://opensource.adobe.com/wiki/display/osmf/Features

Happy Thanksgiving!

Recent Comments

  • Brian Riggs: OSMF is a media framework for building media players (including read more
  • judah: Will OSMF stream in YouTube videos? read more
  • Charles: In the case of FLV files, it reads the cue read more
  • george donnelly: Does this load the whole video? Or just reads the read more
  • Brian Riggs: The HelloWorld app is a pure AS3 app rather than read more
  • Davi dSalahi: Are there language incompatibilities with FlashBuilder 4? I'm running FB4 read more
  • Brian Riggs: The code snippet in the blog was abbreviated to leave read more
  • michael connor: well, i'm very confused. in Flex Builder, i went into read more
  • Brian Riggs: The omission of a current item getter on SerialElement is read more
  • Buck: Thanks for this rundown, Brian. I was wondering if you read more

Recent Assets

  • sample-app-scrn-shot.png
  • max_2009_properties.png

Tag Cloud

Find recent content on the main index or look in the archives to find all content.