Hacking FCSubscribe Support Around OSMF

Recently I had the task of recreating a video player for a customer for which no source code was available. The player needed to support on demand and live streaming, so I opted for an OSMF based player - why reinvent the wheel?

Things went well until the time came to add the live streaming support. The chosen CDN uses the FCSubscribe method for live streaming. In case you don't know, FCSubscribe is a serverside method which the player needs to call in order to instruct the CDN to deliver the requested stream to the edge server that you are connected to in order to play the stream.
Some CDNs (including Akamai and Limelight) provide custom OSMF plugins for this task, and if your CDN does the same then you have nothing else to do apart from using their plugin and you are set. However some CDNs do not (yet) provide such plugins, and since the task of creating one is no mean feat (and it was certainly not part of the budget for the player I was working on), another solution had to be found.

› Read Full Article


Apple HTTP Streaming Support Added To OSMF

Matthew Kaufman, one of the engineers who brought us RTMFP but who is no longer with Adobe, has written and published an AS3 library which adds support for Apple HTTP Streaming (draft-pantos-http-live-streaming) to OSMF. The classes constitute a plugin for OSMF's HTTPNetStream that supports Apple's m3u8 index files and MP2 transport stream media file.

Matthew outlined his efforts on the FlashMedia List:
"I've put the initial commit of this code up at http://apple-http-osmf.googlecode.com with an open-source license (MPL).

No guarantees that it is complete or optimized, but it does appear to play most of the things I've been able to throw at it. Supports H.264 video and AAC audio... adding MP3 audio support is on the list, just need a sample stream to test with and a couple hours to do it."

Thanks Matthew!


Dynamic Streaming Using F4M And Flash Media Playback Via CloudFront

Here is a quick heads up on an issue you may encounter when streaming video using Flash Media Playback and f4m files to provide dynamic streaming whereby the player will automatically pick the correct bitrate version depending on the user's connection speed.

In my case I wanted to stream my videos using Amazon's Cloudfront service. A typical RTMP URL will look something like this:

view plain
1rtmp://saaabbbccc.cloudfront.net/cfx/st/mp4:myvideo.mp4
If you go ahead and create an f4m file using this you may end up with something like the following (presuming 3 bitrates at 500, 1000 and 1500 kbps):
view plain
1<?xml version="1.0" encoding="utf-8"?>
2<manifest xmlns="http://ns.adobe.com/f4m/1.0">
3<id>Dynamic Streaming</id>
4<duration></duration>
5<mimeType>video/mp4</mimeType>
6<baseURL>rtmp://saaabbbccc.cloudfront.net/cfx/st</baseURL>
7<media url="mp4:myvideo_500.mp4" bitrate="500" width="640" height="480" />
8<media url="mp4:myvideo_1000.mp4" bitrate="1000" width="640" height="480" />
9<media url="mp4:myvideo_1500.mp4" bitrate="1500" width="640" height="480" />
10</manifest>
Unfortunately this file will not work when fed into Flash Media Playback. The reson (and fix) is quite simple and one some of us may remember from using the FLVPlayback component in Flash. It is a missing application instance name. In our case this is the default instance _definst_ that needs to be added to the baseURL. The correct f4m listing would therefore be as follows:
view plain
1<?xml version="1.0" encoding="utf-8"?>
2<manifest xmlns="http://ns.adobe.com/f4m/1.0">
3<id>Dynamic Streaming</id>
4<duration></duration>
5<mimeType>video/mp4</mimeType>
6<baseURL>rtmp://saaabbbccc.cloudfront.net/cfx/st/_definst_</baseURL>
7<media url="mp4:myvideo_500.mp4" bitrate="500" width="640" height="480" />
8<media url="mp4:myvideo_1000.mp4" bitrate="1000" width="640" height="480" />
9<media url="mp4:myvideo_1500.mp4" bitrate="1500" width="640" height="480" />
10</manifest>
I hope this helps someone. I was slightly confused by this as any one of my files would play fine using the FLVPlayback component without specifying the _definst_ in the video RTMP URL.

And one final gotcha: if you host your f4m files in an Amazon S3 bucket (but not your streaming bucket, you need to use a separate non-streaming bucket for non-video files) you may require your own crossdomain file inside it or the Adobe hosted Flash Media Playback SWF won't be able to load it.

A free tool to help you manage your S3 buckets (if you are on Windows - I run this tool in a VM) is CloudBerry Explorer. It's one of the better S3 related tools out there. Do you know an equally good one for OSX?


Strobe Media Playback Presentation

There's a live online presentation about the new Strobe Media Playback player coming up tomorrow at the OSMF user group. Ovidiu Eftimie from Adobe's Strobe Media Playback team will be presenting the features of this new versatile "ready-to-go" video player. There'll be an insight into the roadmap for future additions to the player, and time to ask questions.

The presentation starts at 12:00 (West Coast), 20:00 (London), and can be accessed by anyone through this URL http://experts.na3.acrobat.com/osmf

You can find out more about Strobe Media Playback at http://labs.adobe.com/technologies/strobemedia


OSMF 1.0 Is Here

The Open Source Media Framework has today reached 1.0 status. If you're like me and have been holding back on using OSMF until it is out of beta then now would be a good time to dive in and start getting familiar with it.
As you probably know, OSMF is a standardised foundation on which developers can build fully featured media players (not just for video playback) that encompass pretty much every aspect of delivery the Flash Platform has to offer be it dynamic streaming, live and on-demand content, image slideshowsn audio players and much much more. Some of the video components in the newly released Flash Builder product are also based on OSMF, and ship complete with source code.

Go check out OSMF and have a play.


OSMF 0.9 Released

Version 0.9 of the Open Source Media Framework has just been released. For those who haven't heard about OSMF (formerly codenamed Strobe) yet, it is an ActionScript based framework to help facilitate the easy development of media players running on the Flash Platform. The framework is open source and supports not only video and audio playback but also other asset types such as images, SWFs and the like. It could develop into a de-facto standard for Flash based media player development.

With the 0.9 Sprint release the team have effectively locked the APIs in order to prepare for version 1.0.

Some of the new features in 0.9 include support for HTTP streaming (a sign of things to come), a SMIL plug-in and an OSMF Sample Player. There's also a comprehensive Developer's Guide in PDF format.

If you have plans to take a closer look at OSMF then now would be a good time as the 1.0 release is getting closer.


Strobe Media Framework Presentation

Sumner Paine, Product Manager of the new Strobe media framework, recently presented on this very topic to the FMS User Group. You can see the recording here.

If you haven't heard about Strobe yet, the official summary is: "Strobe provides new delivery and monetization options for video distribution. Anyone can develop modules that plug into Strobe media players and enable things like advertising insertion, content delivery and syndication, micropayments, viewer authentication, transaction handling, and business model controls. With an open framework, the future of web video monetization can be developed collaboratively with lower costs and faster turnaround."

Watch the recording here.


Adobe Strobe - A Video Player Framework

Adobe Strobe is the code-name for a new video player framework with an aim to help drive standards for media players.
Strobe is a great idea and sorely needed. These days every publisher, agency, developer, CDN and ad network are rolling their own video players and integration logic which means there is virtually no best practices approach as far as industry standards go. Why? Because there are no standards as of now, and you can bet that video player A which was developed with CDN B in mind will not work with CDN C unless some pretty major surgery is applied to the player's code.

Strobe is trying to alleviate these pains by providing a player framework which can be extended through a plug-in model. For example the connection routine between CDN A and CDN B differs drastically. In this case Strobe should (once released) allow both CDNs to provide connection routine plug-ins for Strobe (these may simply be some ActionScript3 classes) which developers can leverage easily without having to rework their existing video player code - provided it is built on top of Strobe.

Connection routines are of course just one aspect. Other implementation points may include advertising insertion, content syndication, micropayments, viewer authentication, transaction handling, and business model controls.

According to the FAQ Adobe Strobe is planned for release around the third quarter of 2009.