We have developed PeerStreaming, a receiver-driven peer-to-peer (P2P) media streaming system. Recognizing the fact that the peer is performing a favor for the client and the server during the streaming session, the design philosophy of PeerStreaming is to ensure that the peer is lightweight and the P2P network is loosely coupled. The peer performs simple operations, and may elect to cache only part of the streaming media. It does not collaborate with other peers, may be unreliable and may drop offline or come online during the streaming session. The client coordinates the peers, streams the media from multiple peers, performs load bal-ancing, handles the online/offline of peers, decoding and render-ing the media, all in real-time. Through the high rate erasure resil-ient code, the serving peers may hold partial media without con-flict, and the client simply retrieves a fixed number of erasure coded blocks regardless of where and what specific blocks are retrieved. PeerStreaming can stream the embedded coded media, and vary the streaming bitrate according to the serving band-widths and the client queue status. Via the Microsoft DirectShow framework, PeerStreaming is capable of live P2P streaming, de-coding and rendering a number of media format, such as MPEG1/2/4, WMA/WMV, and the embedded media.