Today we released two free tools; the new DVRCast application for Flash Media Interactive Server 3.5, and an update to FLVPlayback component. You can find them both on the Flash Media Server productivity tools page: http://www.adobe.com/go/fms_tools/. You can read more from a new article from David Hassoun posted here: http://www.adobe.com/devnet/flashmediaserver/articles/live_dvr_pt2.html
Live streaming on the web has exploded with Flash over the past 12 months – thanks to the support of our CDN and encoding partners – the capacity and volume available today for live events is staggering. Recently we’ve seen nearly every major sporting league, concert, conference come to the web (usually in Flash). Inside businesses, company meetings and training are exploding because of the direct impact to saving money by limiting the need for travel.
When we released Adobe Flash Media Server 3.5 last January, we extended live recording functionality in 2 ways. First we added support for H.264/AAC recording on the server and second we added support for playing a live stream from a file that is expanding. We upgraded the recording engine really for selfish reasons – we were tired of being the growing volume of compelling live content on the web, as if it was 1960 with no control over how we consume it.
Flash Media Interactive Server 3.5 can enable many of the experiences we expect from watching television in our living room with a DVR set top box. The DVRCast application extends the base functionality of the server to allow publishers to manage their live DVR-enabled streams and enable features within Flash Media Live Encoder 3.0 and the FLVPlayback component update. We hope you find the functionality compelling enough to introduce into your future live events.
I’ll use this blog posting as an FAQ of sorts to help explain what is now possible with this new technology.
As we were putting the final touches on the server before we released, it came clear that enabling DVR on streams may not be obvious for everyone, so we set out to make it easier, and provide some free (yes, free) tools to get you started faster.
The tools include
- DVRCast 1.1 – server side application that makes DVR easy.
- FLVPlayback 126.96.36.199 Component update – a prebuild video player for Flash Professional CS4 and Flex SDK.
- Flash Media Live Encoder 3.0 – a high quality live encoder
- F4V Post Processor – a tool to remove the fragments from H264 DVR caches so you can edit or play progressively in Flash Player.
The goal of using these tools in combination is to make DVR as code-less as possible, and provide developers insight into how to create scalable robust DVR-enabled live streams.
What is DVRCast?
DVRCast is a server side application that runs on top of Flash Media Interactive Server 3.5 to provide more control over DVR-enabled streams by introducing a series of API’s to control the start/stop and scheduling of future live streams. The API’s are developed using ServerSide ActionScript and can only be used with Flash Media Interactive Server 3.5 (note: the Flash Media Streaming Server 3.5 is not supported)
Do you need DVRCast to use DVR with Flash Media Server?
No. DVRCast uses existing technology built into the server, DVRCast extends the server functionality with abilities to manage metadata, start and stop and scheduling of DVR-enabled streams. You can learn how to use DVR without DVRCast by reading the Adobe Developer Connection article by David Hassoun – there is also a terrific sample application in his article. http://www.adobe.com/devnet/flashmediaserver/articles/live_dvr_pt1.html
What Codecs are supported?
All codecs supported by Flash Media Server 3.5 are fully supported, including H.264/AAC, ON2VP6/MP3, H263(Spark)/Nellymoser/Speex. Flash Media Server 3.5 added support to record H264/AAC on the server in the F4V Container (an MPEG-4 ISO standard).
Can you use DVR for audio-only streams?
Yes! You do not need a video stream, so if you want to create a DVR-enabled radio stream you can absolutely do that. Flash Media Server will create the cache as an FLV (for MP3) and F4V (for AAC)
What can you do with DVR on Flash Media Server?
DVR changes the way we engage with live video online. You can leverage DVR-enabled streams in ANY version of Flash Player that supports video. That’s right – rollback to Flash player 6, and create something new again (just be aware of the codecs supported)!
Here are some ideas we considered when we designed the feature – mostly from our team sitting at home watching how we interact with live television today (a fun homework assignment).
- Instant Replay – This is the killer experience that changed the game. As you watch a live stream, allow the viewer to skip back to re-watch an amazing shot on goal from your favorite hockey team, or skip back to re-watch your CEO explain your new bonus structure.
- Start from Beginning – Put another way, this is time shifting. Imagine watching a live stream from the beginning while the live event is still happening. This is what we’ve come to expect in our living room, since the days of the VCR. It’s incredible that for the past 10 years of live video on the web we’ve forced people to log in at a specific time and place to watch the live stream and if things get disrupted – too bad. DVR helps make live streams available to more viewers on their own time and resistant against failure.
- Resume after failure – The internet is a unreliable place, and when connection issues hit your PC while you’re watching a live video, guess what happens – you will lose the content from when the disruption happened to when you start again. This could happen due to network congestion or network failure. DVR features can help prevent the loss of stream. When network failures happen and you reconnect, you can resume the stream from where you left off (just like VOD). Without DVR, to watch the period you missed, you must wait for the video to be available in VOD – something I (personally) hope I never experience that again (hint hint).
- Real time clipping – This is a real exciting feature for publishers, and a way to take engagement to the next level. Imagine watching a live concert, and in the background the publisher is creating clips of the songs and posting them in real time. Or imagine you’re watching a hockey game, and the publisher is cataloging the big hits and shots on goal, and posting them live. What’s great about the DVR Cache is you can treat it just like VOD. (BIG IDEA HERE) Imagine creating a tool that allows a publisher to create in and out points during the live stream, and publish the clips in real time. You can see a little of that technique today on MLB.com – where they clip the innings, and allow you to watch each inning separately in real time.
- Manage Limits– Flash Media Server has built-in mechanisms to make sure you don’t blow up your disks. We’ve run tests for DVR that included a 24×7 stream running for up to 3 weeks – creating a multi-GB DVR cache, but it’s realistic to think you could do this (think fish tank, or eggs hatching!) The server has limits in the configuration that let you set “quota” rules that could be bound by either max duration or max size. Located in either the XML configuration (application or server level) or even build something custom using the C++ plug-ins.
- Instant VOD– one of the coolest side features of the DVR cache is the ability to instantly publish the VOD version of the live stream. Think about blurring the line between live and VOD. So publishers, get rid of the time to re-encode and upload the VOD version of your live event. If you want to do some quick editing of the cache (i.e. you want to change the start / end time) – no problem – Flash Media Server does that – simply start playing from the point you want, and set the duration to end where you want. (You can even bring the cache into Adobe Premiere, but I’ll cover that later).
How is DVR in Flash different than the DVR in my home?
There are a lot of differences – specifically related to where the cache is stored. Your DVR at home has a hard drive, and the cache is stored locally. This is handy if you want to skip commercials, or “own” the show. It’s not very interesting for publishers of live content – because control is lost and most importantly the opportunity to draw revenue from the media is lost (because you will fast forward through the commercials, we all do it). The core difference with our approach is that the cache is stored at the server. This allows the publisher to provide the experiences that the viewer wants, while maintaining control over the media. For the viewer, the benefit is revealed when you forget to record your show. In Flash, the server will always give you the ability to play from the beginning.
Here is a high level overview of how DVR works in Flash Media Server 3.5
What does DVRCast do?
DVRCast provides you deep control for managing your single or multiple DVR-enabled streams by giving you controls for starting, stopping, scheduling and deep control over. We strongly recommend that you leverage this application and use the application’s API’s to develop a custom live stream management utility. We’ll keep updating DVRCast, fix bugs and make it better over time.
Here are some enhancements enabled by DVRCast
- Start the DVR cache – This may seem obvious – but let’s look at some situations that add complexity – Starting the DVR cache can be done after the live stream begins or at the time of publish. In most scenarios broadcasters will start a live stream long before the actual event. You don’t want to be burning valuable disk with the cache, that no one will watch. Starting the DVR cache after the stream is published is key. Another important scenario is multi cameras (think football) – where starting the DVR cache needs to happen across all streams at the same time. Ok, now add another layer – most live events use redundant ingest points – basically the live stream is published to at least 2 servers, incase 1 goes down. In this scenario, you now need to start the DVR cache not on 1 server with 1 stream, but multiple servers and multiple streams. DVRCast helps solve this problem (see the scheduling feature, below)
- Schedule future DVR Streams – Often times live events have a scheduled start and end time. DVRCast lets you pre-program the server to wait for the live stream to be published, and at the scheduled time, the server will automatically start caching the live stream. You can program any number of streams and duplicate the program over multiple servers.
- Add/Change Metadata – Metadata is used in streaming to add descriptive information about the live stream (i.e. name, author, copyright) but also information about the stream – most importantly the duration. The duration data is important so you can build a user interface (i.e. Seek Bar). If you watch your DVR at home, you will notice that the Seek bar has a set duration. What happens if the event runs long or short? The visual interface needs to be updated. DVRCast makes it easy to add/change metadata such as duration. The updated FLVPlayback component will respond to duration change, but modifying the seek bar scale.
- Extend or trim the end time of an existing stream – Have you ever known a live event that has ended on time? DVRCast will let you extend or reduce the stop time of a DVR Cache. You can build a utility that lets you manage this easily.
- Append to an existing cache – An original feature of FMS is to support appending to existing media files. DVRCast makes it easy to use that feature with Flash Media Server 3.5.
- Support for Dynamic Streaming (Mulitbitrate)– Multibitrate live streaming is a new feature with Flash Player 10 and Flash Media Server 3.5. The start DVR button in the Flash Media Live Encoder 3.0 will begin the DVR cache for all bitrates streaming from the encoder. You can also use the scheduling feature in the DVRCast application to start the cache at the same time for multiple streaming coming in from the server.
Can you customize DVRCast?
Absolutely yes. DVRCast is available as “Sample Code” and it is within the EULA to modify, and use this application to suit your custom needs. Some ideas for extending DVRCast could be adding functionality to return all existing streams on the server, and selectively enable/disable DVR on the streams. You can also build protection mechanisms within DVRCast to limit usage of the API’s or signal content management systems when the DVR stream is complete to create a smooth transition between live and VOD.
Does the FLVPlayback component support DVR?
Yes, we have updated the component to support DVR functionality. We now support this component in both Flash Professional CS4 and the Flex SDK. The current version is FLVPlayback 188.8.131.52, and is included in the DVRCast download. You can also download it separately.
Can I edit the DVR cache?
Yes. Part of the design was to allow customers to edit the DVR cache in our CS4 Production tools such as Adobe Premiere CS4 or Adobe After Effects CS4. There are a couple caveats. First you need to use H.264/AAC. Second you need to use the F4V Post Processing tool (from our tools page). This tool will remove the fragments from the F4V, and make it usable in the production tools. Note, this will not work with VP6 content.