views:

437

answers:

3

Is it possible to synchronize videos running in a WPF application across two or more computers? Synchronizing several videos running on the same machine seems to work well using the ParallelTimeline class and MediaTimelines for each video instance, but I haven’t figure out a way to do this across different computers, which if possible, would enable some incredible multi-screen installations.

So to all those WPF gurus out there, what do you think? Could this work with WPF or do I need to fall back to DirectShow? Some pointers about how to do this, would also be nice.

[Edit]

There seems to be some confusion regarding my question so let my clarify . I am thinking about the possibility of building a large multi-screen video installation, let’s say 8 or more screens. Each screen plays a full HD (at least 720p) Video building a unified display, in this case a video wall with a resolution of 10,240 x 5,760. All the videos have to be synchronized of course. Playing all 8 HD videos from a single computer (even if the computer was capable) implies a lot of performance stress on the hardware, hard disks, memory, graphic cards etc. On the other hand, if you were able to get 8 computers hooked together with TCP, each responsible from playing their video with a clock synchronized to a master computer, you could build some really cool stuff with a lot of flexibility. I have seen similar installations done with Max/Jitter. But I don’t like the Max/Jitter paradigm, I like WPF better and was wandering if it would be possible to build something like this.

[/Edit]

Thanks a lot,

Julio

A: 

Get WPF to stream ASF over RTSP and playback the stream(s) on one or more PCs using Windows Media Player or VLC / MPlayer. From the sounds of things the RTSP stream is non-standard so it's likely you're stuck with WMP.

http://www.windowskb.com/Uwe/Forum.aspx/windows-media-player/85238/RTSP-Problems

SpliFF
A: 

I'd think a more compatiable, as far as client's which can enjoy your HD broadcasts's here, would be for you to use silverlight. In case you havent herd about it, it's a browser hosted very thin version of WPF ;).

This Codeplex article, by the epic "Karl Shifflett", is quite extensive about the various encoding options available and platforms supported (beyond ASF that's for sure).

There's a bit of a focus on the Microsoft Live.com hosted silverlight streaming service, which may also suit your needs, at least for prototyping.

http://www.codeproject.com/KB/scrapbook/HowToCreateArticleVideos.aspx

As far as syncronization goes, that sounds like something your going to have to bake in yourself.

RandomNickName42
+2  A: 

You can try using my project, WPF Mediakit. It should set you way ahead if need access to the low level DirectShow stuff.

To do this, essentially you would designate one computer as the "server" and the rest as "clients". The clients would connect to the server to get the current position, compare it to their current position..and if there is n-amount of disparity, seek to adjust.

Out of the box in MediaKit, the MediaUriElement control has a property called "PreferedPositionFormat". If you set that to Frames (and the codecs you are using supports it..most of the time they dont and just support MediaTime), you can have frame granularity of where to set the "Position" property. Even the MediaTime format may be enough.

Jeremiah Morrill
Thanks a lot. Your project is fascinating and the solution promising. Your blog is already registered too.
Julio Garcia