Thoughts on Streaming Media
Here are some random thoughts.
Well there are three main types of players: Real, Quicktime, and Windows Media Player. They all use different protocols. Most media players have two network “connections”. One for control and one for data. RTSP is the standard control channel. RTP is the standard data channel.
For Microsoft Windows Media Player they use MMS, a proprietary protocol, instead of RTSP. The data channel is also proprietary of course.
None of the players can use the other's streaming protocol. Apple and Real have open software versions of the server software so you can take a look at it. Apple’s is called Darwin. Real’s is called Helix. Interestingly they both say they support RTSP. If this is true why can't you play a Real stream with a Quicktime player? Maybe it's a codec issue, not a protcol issue.
Typically the data channel is UDP and has the encoded video/audio. The control channel send messages like “play” or “pause”. See the RTSP spec for details.
There is also support for multicast but most places don’t enable multicast so that’s probably not a big issue….
For monitoring there are well known ports used by these players. Each company has documentation on how to configure firewalls so the traffic can get through. This would be a good place to look for information on which ports each player type uses.
These players can also get their content via HTTP. Real has a “cloaking” mode where they send RTSP and maybe RTP over an HTTP connection. This is to fool proxies. You might be fooled by it as well if you base your traffic monitoring on ports only.
Generally the players will try multiple methods to get the data from the server. HTTP is the final fallback.
There is an open source media player for linux called mplayer. It can handle mms. If you want the mms details you could look at that code I believe. They might be using windows DLLs for that though, I’m not sure.
