OSMF downloads still available on SourceForge

While the hosted apps, including our MediaWiki, have been unavailable on SourceForge for a couple of days now, you can still download the OSMF 2.0 release here:

http://sourceforge.net/projects/osmf.adobe/files/

 

OSMF Resources

Just a reminder – for quick responses to issues or for more in-depth developer documentation, these are the places to go:
Documentation: http://sourceforge.net/apps/mediawiki/osmf.adobe/index.php?title=Main_Page
User group: http://www.adobe.com/go/osmf_usergroup
Developer forums: http://forums.adobe.com/community/opensource/osmf/
Feature requests/bugs: http://bugs.adobe.com/jira/browse/FM

We appreciate your interest!

OSMF 2.0 now available!

The online video world continues to grow at breakneck speed and we, at Adobe, have been fortunate to be a big part of making it happen. More video content is available today than ever before and the trend is only accelerating. The World Cup drew a record number of online viewers online and engagement levels were the highest. Users could switch multiple camera angles, watch highlights and watch on demand. I am looking forward to seeing more content, more engaging experiences and higher quality.

Adobe’s mission has been to enable you to create great content and bring it to your audiences. We are thrilled to announce the launch of OSMF 2.0. The new version of OSMF 2.0 allows you to create even more engaging experiences for your audience. We worked with some of the largest content owners with the largest online video audiences and have reworked the inner workings of OSMF. In particular, we have made major changes to the Adaptive Bit Rate (ABR) algorithm and the APIs for ABR.

The OSMF Adaptive Streaming provides two modes: i) Manual switching and ii) Automatic switching. As part of the changes, we have improved the automatic switch operation; added more information to the Quality of Service (QoS) information and history; enhanced the metric base, factory and repository; and finally optimized the rule engine to better handle bandwidth and other computer resources. More details on the changes can be found here:

http://sourceforge.net/apps/mediawiki/osmf.adobe/index.php?title=Main_Page

We hope you are as excited about this release as we are. As always, we look forward to hearing your feedback on this latest release. Thanks for your support.

Kelash Kumar, Group Product Manager, Video Solutions

 

 

Announcing OSMF and Strobe Media Playback 1.6

2011 has already been an exciting year in the world of online video. Fabio’s battle with the Old Spice Guy, the realization of TV Everywhere, user-generated videos and the Arab Spring (not to equate the importance of any of these!) – these all testify to online video’s ability to resurrect careers, entertain, and literally change the world.

As online video evolves, the technology that supports publishing video must follow. With that objective in mind, I am very proud to announce the release of OSMF and Strobe Media Playback 1.6. Over the past several months, you have provided us with valuable feedback, and that became the foundation for this release.

What’s new?

Mobile: Video usage on smartphones and tablets continues to grow rapidly. Just today, Knowledge Networks published that video viewing on mobile devices among 13 to 54 year olds has doubled over the last year. As part of the 1.6 release, we have included new features that will help you bring your content to mobile devices.

Enhanced Viewer Experience: One of OSMF’s core objectives has always been to enable you to create engaging experiences for your viewers. Towards that end, we have released the following features.

  • OSMF: DVR rolling window support, which allows you specify how far back from the live point viewers can rewind (requires the newly released FMS 4.5)
  • OSMF: Late-binding audio for providing viewers with multiple audio track options, e.g. additional languages, director’s commentary, and “home” v. “away” coverage

Core Framework: Beyond new functionality, we continue to improve the existing core framework. In OSMF 1.6, we have made improvements to HTTP Dynamic Streaming as well as the ability to better manage bitrate profiles with multi-level manifests.

Documentation: We have made the first major step in improving our documentation with the launch of a completely revamped wiki for OSMF and Strobe Media Playback. We hope this will make finding information and resources on specific topics easier, and I encourage you to bookmark it for future reference.

http://sourceforge.net/apps/mediawiki/osmf.adobe

We look forward to hearing your feedback on this latest release. As always, you can reach me at ckwon at adobe dot com. The developer forums are also great venues for discussion, and the team regularly monitors these as well.

Thanks for your continued support!

Cathi, OSMF Product Manager

OSMF 1.6 Sprint 5 is here!

We have just released the latest sprint drop for OSMF 1.6, Sprint 5, and the key new feature is support for multiple audio tracks for HTTP Dynamic Streaming, often referred to as “late-binding audio.”  This feature allows publishers to associate multiple audio-only streams with a particular video and present these as alternate audio tracks to the consumer.  For example, if a publisher wants to provide the option of hearing a video in English, Spanish, and English + video descriptions (for visually impaired consumers), they can accomplish this without having to prepare a separate video + audio stream for each.  Each additional audio track can be supplied as an audio-only stream, reducing unnecessary redundancy in content preparation workflows and storage.  OSMF also supports the ability to switch between audio tracks during playback, providing additional flexibility in the user experience.

Late-binding audio is currently available for VOD only.  We are also working on live/linear support, which will be available in our next drop.

Check out Sprint 5 here:

As always, we’re eager to hear your feedback!  Please feel free to reach out to me at ckwon at adobe dot com.

Thanks!

Cathi (Sr. Product Manager, OSMF)

 

OSMF 1.6 Sprint 3 is here!

We have just released the next sprint drop for OSMF 1.6.  We continued to address some important bugs, a list of which can be found in the release notes.

We also want to make sure everyone is aware of the following: If StageVideo mode is enabled and a video resource is being associated with a smaller container, make sure that the scale mode will not be set to ‘none’, otherwise, the video will not be clippedaccording to the containers dimensions (this is the expected behavior).

We’ve have some really exciting advanced features in development, so be sure to check back with us over the following months.  As always, feel free to ping me with any questions or feedback at ckwon at adobe dot com.

Thanks!

Cathi, Sr. Product Manager for OSMF

 

 

Stage Video and Ad Insertion Plug-In for OSMF

OSMF 1.6 (pre-release “Sprint” 1) introduced Stage Video support. With Sprint 2, we wanted to see how well the implementation works for advertisement scenarios, so we created a sample plug-in for ad insertion.

Our intent is to provide the best Stage Video support in complex, multiple video scenarios and at the same time we’d like to establish a set of best practices related to implementing advertisement plugins.

Getting the source code

The source code is in the OSMF SVN repository and you can get it directly from these locations:
svn checkout http://svn.code.sf.net/adobe/osmf/svn/osmf/trunk/plugins/AdvertisementPlugin
svn checkout http://svn.code.sf.net/adobe/osmf/svn/osmf/trunk/plugins/AdvertisementPluginSample

We have also uploaded the ZIP archive containing the source code to our SourceForge download section (check the OSMF 1.6 – Sprint 2 folder):
http://sourceforge.net/projects/osmf.adobe/files/

Using the plug-in with Strobe Media Playback

You can see a live demo of the plugin within Strobe Media Playback here:
http://osmf.org/dev/latest/advertisement-demo.html

Strobe Media Playback provides a mechanism that allows configuring and loading OSMF plug-ins through a very simple API.

A configuration snippet looks like this:

 var parameters =
 {
     src: "rtmp://example.com/mp4:sample.f4v",	   		 			
 
     // Load the Ad Plug-in
     plugin_ads: "AdvertisementPlugin.swf",
 
     // Configure the Ad Plug-in
     ads_preroll: "http://example.com/example.flv",
     ads_postroll: "http://example.com/example.flv",
     ads_midroll: "http://example.com/example.flv",
     ads_midrollTime: 20,
     ads_overlay: "http://example.com/example.flv",
     ads_overlayTime: 25
 };
 
 swfobject.embedSWF
 (  "StrobeMediaPlayback.swf",
     "StrobeMediaPlayback",
     640, 480,
     "10.1.0",
     "expressInstall.swf",
     parameters,
     { allowFullScreen: "true", wmode: "direct" },
     { name: "StrobeMediaPlayback" }
 );

You can view the source of the live demo for additional configuration samples.

Using the plug-in with your OSMF-based player

To use the plug-in in an OSMF-based video player, you’ll need to configure and load the plug-in using the OSMF API.

The AdvertisementPluginSample application demonstrates this:

 // This is a normal video player setup.
 var mediaFactory:MediaFactory = new DefaultMediaFactory();
 var mediaPlayer:MediaPlayer = new MediaPlayer();
 var mediaContainer:MediaContainer = new MediaContainer();
 var resource:URLResource = new URLResource("rtmp://cp67126.edgefcs.net/ondemand/mp4:mediapm/osmf/content/test/sample1_700kbps.f4v");
 var mediaElement:MediaElement = mediaFactory.createMediaElement(resource);
 mediaContainer.addMediaElement(mediaElement);
 this.addChild(mediaContainer);
 
 // Load the plugin statically
 var pluginResource:MediaResourceBase = new PluginInfoResource(new AdvertisementPluginInfo());
 
 // You can load it as a dynamic plugin as well
 // var pluginResource:MediaResourceBase = new URLResource("http://localhost/AdvertisementPlugin/bin/AdvertisementPlugin.swf");
 
 // Pass the references to the MediaPlayer and the MediaContainer instances to the plug-in.
 pluginResource.addMetadataValue("MediaPlayer", mediaPlayer);
 pluginResource.addMetadataValue("MediaContainer", mediaContainer);
 
 // Configure the plugin with the ad information
 // The following configuration instructs the plugin to play a mid-roll ad after 20 seconds
 pluginResource.addMetadataValue("midroll", "http://gcdn.2mdn.net/MotifFiles/html/1379578/PID_938961_1237818260000_women.flv");
 pluginResource.addMetadataValue("midrollTime", 10);
 
 // Uncomment the following lines to see a pre-roll, overlay, and post-roll ad.
 // pluginResource.addMetadataValue("preroll", "http://gcdn.2mdn.net/MotifFiles/html/1379578/PID_938961_1237818260000_women.flv");
 // pluginResource.addMetadataValue("postroll", "http://gcdn.2mdn.net/MotifFiles/html/1379578/PID_938961_1237818260000_women.flv");
 // pluginResource.addMetadataValue("overlay", "http://gcdn.2mdn.net/MotifFiles/html/1379578/PID_938961_1237818260000_women.flv");
 // pluginResource.addMetadataValue("overlayTime", 20);
 
 // Once the plugin is loaded, play the media.
 // The event handler is not needed if you use the statically linked plugin,
 // but is here in case you load the plugin dynamically.
 // For readability, we don’t provide error handling here, but you should.
 mediaFactory.addEventListener(
    MediaFactoryEvent.PLUGIN_LOAD,
    function(event:MediaFactoryEvent):void
    {
       // Now let's play the video - mediaPlayer has autoPlay set to true by default,
       // so the playback starts as soon as the media is ready to be played.
       mediaPlayer.media = mediaElement;
    });
 
// Load the plugin.
mediaFactory.loadPlugin(pluginResource);

Implementation details

We chose to use the MediaPlayer API instead of the ProxyElement, SerialElement, or ParallelElement APIs. There are a few reasons why we wrote custom control code instead of using the composition APIs:

  • We have full control over the pre-buffering of the ads.
  • We don’t change the properties or traits of the main media.
  • We wanted to provide an example of how the MediaPlayer API can be used inside an OSMF plug-in.

The plug-in relies on getting references to both the MediaPlayer and the MediaContainer instances. The player is responsible for passing them to the plug-in as configuration metadata.

Implementing a mid-roll scenario involves the following steps:

  1. Pre-buffer the ad.
  2. Once the ad is ready to be played, pause the main video.
  3. Remove the main video from the MediaContainer and add the ad to it instead.
  4. Once ad playback has finished, remove the ad from the MediaContainer and add the main video back.
  5. Resume main video playback.

For displaying an overlay ad, we simply add the ad to the same MediaContainer and configure its layout.

These are some starting points. We encourage you to check the source code, and let us know what you think.

References

For a discussion of Stage Video in OSMF, see the OSMF Developer’s Guide. You can find the latest version of the dev guide in the latest OSMF sprint drop zips:
http://sourceforge.net/projects/osmf.adobe/files/

For more on writing plug-ins with OSMF, see the OSMF Plug-In Developer’s Guide:
https://sourceforge.net/nf/redirect/?path=http%3A//osmf.org/dev/osmf/OtherPDFs/osmf_plugin_dev_guide.pdf

Check some Stage Video related articles and content here:
http://www.adobe.com/devnet/flashplayer/stagevideo.html

Technical details about our current implementation:
http://blogs.adobe.com/osmf/2011/02/stage-video-in-osmf.html

Getting started with Stage Video support in OSMF and Strobe Media Playback:
http://blogs.adobe.com/osmf/2011/02/getting-started-with-stage-video-support-in-osmf-and-strobe-media-playback.html

Sprint 2 of OSMF 1.6 is here!

We’re pleased to announce our 2nd sprint drop for OSMF 1.6.  We dedicated much of this sprint to improving OSMF’s switching logic for HTTP Dynamic Streaming and addressing some of the related bugs.  After testing the fixes and running them through several variable bandwidth scenarios, we observed a definite improvement in switching behavior.  The full list of bugs fixed can be found in the release notes.

In addition, we’ve created a sample advertising plug-in that demonstrates how to insert both in-stream and overlay ads into a video when Stage Video is enabled.  The focus here was on the actual insertion, and we hope this can be used as a starting point by someone developing an ad plug-in.  A demo of the plug-in as well as more details can be found here.

As always, we welcome and encourage your feedback.  I can be personally reached at ckwon at adobe dot com.

Thanks!
Cathi, Sr. Product Manager for OSMF

 

Part 2 of Mastering OSMF is up on DevNet !

Part 2 of the three part series of articles by David Hassoun and John Crosby of RealEyes Media has been posted on the Adobe Developer Connection (under Flash Developer Center tutorials)  It is titled Part 2: Creating and customizing your player.  John and David do a great job of covering both UI controls and the use of serial and parallel compositions with OSMF.  The article dives into the the layout and container functionlity that OSMF offers so that you as a developer or designer can have complete control over the visual experince of your player.  The article consists of a series of walkthroughs with code snippets and with a complete set of samples files so that you can follow along in the code for each subject as it is discussed.  Use it to get yourself up and running quickly with your own OSMF based video player.

Getting started with Stage Video support in OSMF and Strobe Media Playback

Introduction

The guiding principle of the Stage Video implementation in OSMF is that the current API should allow a video player developer to upgrade to the latest version of OSMF and get the performance boost of Stage Video without having to modify their existing OSMF-based video players.  For more on the what, why, and how of Stage Video in OSMF, please check out our other blog post, Stage Video in OSMF.

Here I’d like to describe the new Stage Video-related features in Strobe Media Playback which you can use for troubleshooting your setup. After this, we’ll guide you through the process you can use for testing your video player with the latest OSMF codebase.

Strobe Media Playback – Watching Stage Video in Action

We have published a live Stage Video demo in our dev space on osmf.org. See it in here.

The player is instructed to show the Info Overlay at startup, so you should see the current version of the Flash Player installed in your browser. You can also see if the hardware-accelerated decoding and rendering is being used or not.

If you don’t have a version of Flash Player with Stage Video capability installed, the player will let you know about it:

You can download a version of Flash Player with Stage Video support here:
http://get.adobe.com/flashplayer/


At this point you should be able to check that Flash Player is properly installed and see it in action:

You can see the performance boost that Stage Video brings by comparing the CPU levels in a player that uses Stage Video against a player that doesn’t. To make this kind of comparison easy, we exposed the enableStageVideo property as a configuration setting in Strobe Media Playback. When set to false, the Video object is used, even if Stage Video is available:
http://osmf.org/dev/latest/debug.html?logFilter=videoClasses&enableStageVideo=false

Check the Stage Video workflow implementation in your OSMF-based video player

Now you are probably eager to test the performance of your video player with the exploratory implementation of Stage Video support in OSMF.

For this you’ll need to get the Flex SDK that contains the latest Stage Video APIs, you’ll need our source, and you’ll need to set up your development environment.

  1. Get the source code from our Sourceforge SVN space: svn checkout http://svn.code.sf.net/adobe/smp/svn/trunk
  2. Import the OSMF and StrobeMediaPlayback projects.
  3. Download the Flex Hero SDK (Flex 4.5 SDK – build 4.5.0.19786+) here: http://opensource.adobe.com/wiki/display/flexsdk/Download+Flex+Hero
  4. Add the new Flex SDK to Flash Builder (right click on any project, Properties, ActionScript Compiler, Configure Flex SDKs). Set the new SDK as the default.
  5. Check that you can run the StrobeMediaPlayback project without any issues.
  6. Link your video player to the OSMF project that was imported in step 2.
  7. Go to the compiler properties (right click on it, Properties, ActionScript Compiler) and set “Use specific version” to 10.2.
  8. In additional compiler arguments add   -swf-version=11
  9. Go to your HTML page and add wmode=direct to your parameters. Your embed snippet should look like this:

swfobject.embedSWF(
“StrobeMediaPlayback.swf”
, “StrobeMediaPlayback”
, 640
, 480
, “10.1.0″
, “expressInstall.swf”
, parameters
, {
allowFullScreen: “true”,
wmode: “direct”
},
,{
name: “StrobeMediaPlayback”
}
);

At this point you are ready to run your video player.

Normally, your video player should behave exactly as it did before switching to the exploratory version of OSMF.

Troubleshooting

If the video is not visible, check to see if you have an opaque DisplayObject in your display list that may be covering the Stage Video. To fix this issue, you can make it transparent, for example. This was the only issue that we had to fix in Strobe Media Playback before we got seamless video playback and a great performance boost!

Resources

Getting started with Stage Video, by Thibault Imbert:
http://www.adobe.com/devnet/flashplayer/articles/stage_video.html

Stage Video on Adobe Developer Connection:
http://www.adobe.com/devnet/flashplayer/stagevideo.html

Get a Stage Video-enabled Flash Player 10.2:
http://get.adobe.com/flashplayer/

Download the latest Flex Hero SDK: http://opensource.adobe.com/wiki/display/flexsdk/Download+Flex+Hero

A great blog entry and sample code, also by Thibault Imbert:
http://www.bytearray.org/?p=2571

Simplifying StageVideo with StageVideoProxy,
by Kenny Bunch from Dream Socket:
http://www.kennybunch.com/blog/2010/12/simplifying-stagevideo-with-stagevideoproxy/

Update February 19, 2010:

Here is some background on the underlying implmentation. Feedback wanted!
http://blogs.adobe.com/osmf/2011/02/stage-video-in-osmf.html