6 years ago, I used to work at a p2p video CDN company, that have since then been bought by Level 3 (now Lumen), and is now part of their product offering[1].<p>Using p2p to offset bandwidth cost is a really cool idea, but it doesn't come without difficulties:<p>- WebRTS doesn't work everywhere: for this kind of thing you really don't want to use a TURN server, and only work with true p2p. This means you can't use it for users behind a symmetric NAT.<p>- `libwebrtc` (Google's implementations, used by Chrome and derivatives and also by Firefox) performs very poorly when there's a big number of open connection (I don't remember why, but you couldn't expect to maintain more than a dozen of connection on a laptop before having CPU load issue and dropped frames. This is probably an implementation issue, but Chrome's team were uninterested in investigating it). This means you can only be connected to a small pool of peers at any given time.<p>- Probably related to the previous point, it drains a lot of battery on mobile devices.<p>- Adaptive Bit Rate make things complex, since the user will switch tracks at random point, meaning they will need to be grouped with a different pool of peers. (since you cannot maintain a big group of peers, from different tracks at all time).<p>- it doesn't works that well on VoD: for new videos gathering many people at the same time it works really well, but for the long tail of old videos you're often the only one watching it at any given time. Unless you're Youtube scale indeed.<p>- it works better in live streaming, since everyone is indeed watching the same thing, but to maximize p2p efficiency you have to ad some latency (to have a bigger video buffer to work with), this isn't acceptable in every situation (sport events broadcaster don't like that at all for instance).<p>- to work well (especially regarding ABR, and live-streaming) you need your system to be quite tightly integrated to the video player. Polyfilling XHR/fetch with your own library isn't good enough (or competitors were doing so, and their product was less efficient for that reason). And surprisingly enough, there are (or at least there were) a <i>ton</i> of custom video players: many companies forked dash.js or hls.js and customized it, sometimes quite heavily.<p>- there's a serious privacy issue: the peers you're connected to know what video you're watching right now, and can identify you thanks to your IP address. Maybe this isn't too big of a deal when watching mainstream stuff, but for things like porn it can be a bit touchy…<p>[1]: <a href="https://www.lumen.com/en-us/edge-computing/mesh-delivery.html" rel="nofollow">https://www.lumen.com/en-us/edge-computing/mesh-delivery.htm...</a>