Since my TunerFreeMCE code has been out there for almost a year now, I have picked up a fair bit of experience of playing flash on windows media center.
Another annoyance with flash is that it is not supported in MCML – the vista and windows 7 presentation layer for writing media center applications. That means that any application like this has to exit MCML and enter html to play flash content. That’s not that hard to build, but it does have the additional pain that you can’t use the MCMLPad debugger with the code any more, because it’s not compatible with the Add-In required to go to html. Doesn’t effect the end user, but is a pain for the developer.
A further annoyance is Flash’s full screen behaviour. For some security reason, they don’t allow any mouse or keyboard input to be received by the flash player when in full screen, except the escape key. Probably to avoid someone creating a fake version of your PC and tricking you in to doing things, but its much more of a pain than a benefit in my opinion. That means that to pick up remote event, you need to exit full screen. You could just have a large flash window to work round that, but flash add some hardware acceleration in full screen mode that you miss out on with just a large flash player.
The really big problem with flash though is extenders. The way that extenders work is that they have one dedicated channel for music and video, and everything else is sent via a remote desktop connection. Microsoft have a great article on it here;
To summarize it though, you will get WMV, MPEG-1, MPEG-2, WMA, MP3 and WAV-PCM to play fine on an extender, and everything else is routed over the remote desktop protocol, which has quite a few limitations. Most notable of those limitations is that the frame rate is poor, and in some cases no sound (I have never worked out why no sound – if anyone knows the explanation, I would love to know). Microsoft’s advice is not to use flash on extenders. It’s a shame they didn’t make a flash engine part of the technology requirements on the extender, but it’s too late for that now.
As part of the windows 7 beta testing, I grilled Microsoft on support for flash in the MCML layer and on extenders. Unfortunately the answer is that they don’t see it as a priority at this time. I think that is very short sighted given the direction that online video is going. Over the past year, I have noticed more TV providers move away from WMV to flash, because it is cross-platform compatible. That gets the Mac and Linux lobbyists off their backs. I also suspect that the DRM on WMV being cracked didn’t endear that format to them either.
So, since the future of online video for the moment lies with flash, and Microsoft aren’t interested in providing better support for that in media center and extenders, the only real way of getting great support for online video in media center is for someone to write a transcoder for converting the flash stream to WMV or MPEG-1/2. Since the flash streams typically contain H.264 video for high def, simply unpacking it from the rtmp stream isn’t enough for it to play on extenders or pre-windows 7 media centers, since they don’t support that video format. That conversion is not a trivial thing to do on the fly (as opposed to downloading the whole thing first then converting it).
I am hoping that this mini-essay on the topic is going to prompt someone out there to start an open source project to convert flash streams to a media center compatible format. There are lots of add-ins that would benefit from it, like my TunerFreeMCE code, Yougle and I’d imagine SecondRun.tv when it gets release, so go on someone, make a name for yourself by taking up this challenge.