I made a client/server video streaming system for my Advanced
Operating Systems class. The system supports a simple communications
protocol whereby clients can "subscribe" to video channels they want
to view. The server maintains all of the channels and subscriber lists,
and streams video to each. Clients can issue VCR-like (fast forward,
rewind, etc.) commands to the server to interact with the video stream.
The code is unoptimized, so the streaming is not in real-time, but that
is because the focus of this project was in getting the communications
infrastructure implemented so that it would scale.
Below is a screenshot of the system in action. The window on the bottom
left shows the console of one of the clients (the other is minimized.)
Their video output windows are visible on the upper left. On the upper
right, is the server's output.