Can someone help me with how peertube P2P works? I can understand how ActivityPub is used for all the "social" parts but I'm a bit confused about the actual video player.
Redundancy:
I have my own instance and I made a redundancy of a video from the blender instance. if I watch the video on my instance I see 2 peers, my instance and the blender one. I can seen both in Firefox dev tools.
If I watch the same video on the blender instance I see 7 peers, the blender instance, mine, and others. why are these extra peers not showing on my instance? do I need to do something? If I watch the video on one of these other instances mine does show up in the their peers list.
I also made a video from framatube redundant but my instance doesn't appear as a peer on framatube.
Client P2P:
If I watch a video does my browser share It over P2P? if so what is the point of this? it seems to lose the video as soon as I leave the page so this functionality seems a bit useless to me.
EDIT: Answered in comments.
BitTorrent:
If I download a video I get the option of a BitTorrent torrent. If I seed this torrent can it be leeched by web clients? I tried and It doesn't show up in the peer list. What's the point of running a full BitTorrent tracker if it doesn't work with the main P2P system?
EDIT: BitTorrent is incompatible with webtorrent that peertube uses. Peertube also uses HLS instead of webtorrent and behaves a bit different (you can't seed it with a webtorrent client).
Peer discovery:
As I said in 1 and 2 how does the player actually find peers? Is there something like DHT or a tracker built in to peertube? if it's an internal tracker how does the tracker find peers?
EDIT: It uses a tracker build in to peertube.
Thanks for any help.
Would it not make more sense if your instance downloaded and redistributed the torrent? then you could keep seeding after the tab closed. it also wouldn't leak your IP then.
What about peer discovery? I opened that webtorrent website in two browsers and they didn't peer, is that demo real?
This is about visitors re-seeding the video they watch, but yes like all p2p systems it leaks their IP to other peers.
Why not also use the instance to re-seed? it could keep seeding after the visitor closed the video.
AFAIK it does, but if the instance seeds it then that is no different from hosting the video directly on the website, thus this doesn't help with bandwidth at all.
why? if 5 instances are seeding the video, clients should be able to download from all 5 instances and spread the bandwidth usage right?
Other Peertube instance are not hosting the video at all AFAIK. The ActivityPub federation and the webtorrent p2p bandwidth off-load are two fully separate things.
Webtorrent seems to have some issues with peer discovery. I've tried the instant.io site they have linked on webtorrent.io and I can't get it to download or share anything, the desktop client managed to download a torrent from my peertube instance over normal BitTorrent but I can't share it over webtorrent. I downloaded a video from my peertube instance using btorrent.xyz over webtorrent but I can't seed new files because the peers don't find each other. when I use a webtorrent with a tracker (like peertube) it works fine but how were sites like instant.io supposed to discover peers without trackers? I don't think DHT exists for webtorrent yet.
You can manually seed videos on instances using redundancy but I was thinking automatic redundancy for watched videos might be a good idea, I guess you can do automatic redundancy for entire instances but that would take up a lot of storage space.
One of the nice thing with BitTorrent is the high reliability so I assumed that was what peertube was trying to do, I guess the idea is not to provide data redundancy but to split load instead?
Yes, the sole reason.
I have done some testing and I found a few reasons I'm having issues with webtorrent:
The only reason they where working at all is because they were downloading from the HTTP URL in the torrent file, P2P was not working at all.
To download the webtorrent from the blender instance I need to have the video watched in my browser to peer with the webtorrent client, the instance peers don't work on non-peertube webtorrent clients.
The reason instant.io was broken is my adblocker was blocking the tracker.
~~The tracker in my peertube instance is broken.~~
EDIT:
I was a bit wrong here, there are two different formats in peertube: webtorrent and HLS. I was getting confused why the video on my instance (HLS) and the one on the blender one (webtorrent) was behaving differently with webtorrent clients. They are completely different formats so that makes sense now.