Lately Digital Asset Management and more specifically media streaming has been a pretty hot item. I’ve found myself in a number of conversations discussing Oracle UCM’s capabilities and how to integrate it’s features in to web sites. The content server is an excellent platform for media storage, management and conversion, but when partnered with WCM it can become a single platform capable of handling the functional requirements of a YouTube or Flickr.
A little background on Oracle UCM Digital Asset Management
Before we go any farther, in the interest of saving me some typing I’ll now be using one of the more awkward acronyms in technology to describe Digital Asset Management, DAM.
I like to say that the content servers’s DAM features(hehe) are exactly that, Digital Asset Management features. The DAM components handle the calls to the conversion engines and then also manages the resulting multitude of renditions. They do not however actually convert anything on their own. Oracle UCM like many other DAM applications relies on third party conversion tools to handle that work (usually Handmade’s Image Alchemy for Images and Telestream’s FlipFactory for video). This is really an excellent design because the conversion engines end up being loosely coupled to the conversion server, allowing converters to be changed out, added or upgraded, without major changes to system. With a few simple configuration changes they can also often be piggy-backed together, so that several different conversions actions can be set for the same content item.
From a high level here’s what a typical DAM process looks like with Oracle UCM.
- A content author checks in an image or video
- The file is identified as a digital asset needing conversion
- The file is then passed over to the conversion server
- The conversion server looks at the metadata to determine what rendition package and/or conversion need to occur(An image for instance might be converted to a large jpg and a smaller gif. It might even have a watermark applied).
- The conversion is executed.
- The resulting renditions are packed up and sent back to the content server
- When the content is viewing the content item, the DAM component adds an extra “Renditions” tab to review, download and in the case for video watch the different versions
That’s the high level overview, there are some more features there that I am glossing over, but the primary point is that the DAM components handle the management and the conversion engines handle the conversions.
The Delivery Question
Oracle along with many other ECM vendors, identify DAM as one of the four quadrants of ECM(doc man, records and wcm being the others). In this view DAM is often seen as a sort of a close cousin to document management. Digital assets are stored, secured and in Oracle’s case even converted just like regular documents. But what about delivery..how does that factor in? Would your average user log in to your content server to view a video or download an image rendition? Possibly, but what if you’re running a web site out of that content server instance? If doc man is DAM’s close cousin, could WCM be it’s girlfriend?
If you think about it, going back to the YouTube and Flickr references earlier, Oracle UCM has the capability to accept and store video and images, manage a conversion to a common web delivery format and then through Site Studio deliver that content back through a web site. How does that differ from a what a YouTube or Flickr does and honestly how cool is that just in general?
You’re getting off track, Isn’t this post suppose to be about streaming Flash?
Out of the box UCM’S DAM components convert and integrate with several streaming formats and servers: Windows Media, Quicktime and RealMedia can all be outputed from Flip Factory and if a streaming server is identified, the conversion server will copy the streaming file over. Any calls to content server for the streaming format will return a url to the streaming server instead.
Very cool stuff, but there are a couple limitations with the Flip Factory and UCM DAM combo.
- Flash FLV format is not an output format
- Flash Streaming Servers are not a supported integration
- There is not support audio conversion to a streaming format
I called Telestream recently and asked about the FLV output and according to them, FlipFactory customers who desire FLV output can purchase an additional plug-in. I’m not sure if any one has tested that add-on with the content server, or even if Oracle is even recommending it, but if it works then issue one probably has a pretty good solution. And if FLV conversion is an option, then streaming server integration and even audio support become pretty easy issues to over come.
Why is FLV a big deal anyway, can’t we just use Windows Media or one of those other formats?
Windows Media is an excellent format and actually if you have DRM requirements, it may even be the preferred one. Flash media has a wider audience and is the media format of choice for many of the user contributed video sites. It’s the big kid on the block right now and you would naturally want it as an option.
Here’s a chart from Adobe boasting how great they are. I’m little skeptical about these numbers…it’s pretty hard to get 98.8% of the world to do anything, much less install a piece of software. Still the web stats from my site do appear to support these numbers.
The biggest thing to me though is not the 98.8% penetration for Flash player, it’s the the 83% penetration for Windows Media. Integrating with Windows Media Services means that 1-2 of every 10 visitors won’t be able to view your streaming content. That may or may not be a big deal for your implementation. Perhaps the majority of your users are on Windows, perhaps you’re streaming internally or maybe you’re holding out hope for Sliverlight…whatever you’re reasons…there’s nothing wrong with Windows Media, it’s just not as prevalent as Flash.
How would you stream FLV video with the content server?
For this post I’ve put together a simple proof of concept that demonstrates a simple FLV conversion and streaming integration. I’m on the record with quite a few folks decribing this as an easy integration, so I thought it was about time for an example.
The POC is a bundle containing two components, one for the content server and one for the refinery. The refinery component contains a pretty simple class that preforms a command line call to the conversion engine and then copies any FLV files over to a streaming server if one is available.
The path to the conversion engine as well as the command line parameters can all be configured in the components environmental.cfg file. This is important because I’m not including a conversion engine with the project. During development I used an open source converter called FFMpeg which really was a very powerful and versatile application. Around the time I started this post though, I took a look at their legal and licensing considerations section and was a little concerned with their aversion to software patents and have decided not to include thier converter with this project.
If you’d like to use FFMpeg with this project or another, I found the compiled executable for Windows here or you can download and compile a version yourself. I did take a look at some other command line tools available and there appears to be quite a few, though I haven’t tested any others. Since this converter component just makes simple command line calls, it should play pretty well with any other command line applications.
Also included in the bundle is a component for the content server. That conversion support component includes an open source flash player as well as some overrides for the DOC_INFO page to display the player just above the links section. There’s also a single filter attached to the afterLoadRecordWebChange event that fires during an Indexer action for a content item. Whenever an item with a streaming version is deleted, it also deletes that version on the streaming server.
In testing I used two different streaming servers, both of which worked very well; Adobe’s Flash Media Server 3 which is probably the commercial standard for Flash streaming and RED5, an open source Flash server. Adobe, like Oracle offers a free developer license for thier Media server.
I think you’ll find that the overall application is very, very simple. There is no integration with Oracle own DAM components and really no security considerations with regards to the streaming server(all video regardless of security group is available). Still I think it’s a pretty good demonstration of how FLV conversion and streaming integration can be accomplished with the content server.
Where is this component?
You can download the bundle here, please take a look at the readme files for installation instructions:
Of course, like the other samples on this site, it’s provided with our warrenty or support. If you do run in to any issues though or have questions, please feel free to post them to the forums or send me an email. Also if you have any ideas, perhaps a maybe a better converter to use or something else you’d like to see, let me know.