For video on demand (VoD) service, P2P based video streaming can resolve a number of issues that exist in the traditional client-server architecture. In a P2P VoD system, all peers are able to store and stream video to requesting clients. The bandwidth cost of streaming video is spread among the clients rather than being focused on VoD service providers. The available bandwidth increases with the number of peers in the network.
Applying P2P live streaming techniques for VoD is not a trivial task, and is generally more difficult compared to P2P live streaming. In P2P VoD systems, peers can watch different parts of a video at the same time. This decreases their ability to help each other. Users should be able to control the video stream using commands like stop and rewind.
In P2P VoD streaming, there are possibly many more peers leaving than in live streaming. This may create QoS problems, causing even more clients to stop watching. To avoid this, P2P VoD streaming systems require a strong failure recovery protocol that is able to reconnect abandoned peers quickly and efficiently to avoid significant delays and lost frames.
One major issue for P2P VoD streaming systems is how to accommodate asynchronous users into the system. One approach is to group peers joining the network based on the VoD content they’ve requested. Peers are combined into groups called generations. The content delivered to peers in a generation will be similar, but each peer may be viewing a slightly different moment in time. Each peer’s buffer can be used to compensate for this difference.
Similar to video streaming systems, P2P VoD systems can be classified as tree based or mesh based.