Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente Prochaine révisionLes deux révisions suivantes |
txs:peertube-a18:decouverte_peertube [2018/12/19 18:05] – [Stack technique] clement.brizard | txs:peertube-a18:decouverte_peertube [2019/01/12 19:41] – [Streaming peer-to-peer avec WebTorrent] clement.brizard |
---|
Quand une instance A //follow// une instance B, elle donne accès à ses utilisateurs aux vidéos de l'instance B. Pour ce faire, B fournit à A des //metadata// sur ses vidéos : en particulier la [[https://fr.wikipedia.org/wiki/Magnet_(standard)|magnet URI]] du fichier torrent, une image miniature et une description. | Quand une instance A //follow// une instance B, elle donne accès à ses utilisateurs aux vidéos de l'instance B. Pour ce faire, B fournit à A des //metadata// sur ses vidéos : en particulier la [[https://fr.wikipedia.org/wiki/Magnet_(standard)|magnet URI]] du fichier torrent, une image miniature et une description. |
| |
Pour ce faire, PeerTube utilise , un outil s'appuyant sur [[https://fr.wikipedia.org/wiki/WebRTC|procotole WebRTC]] (//Web Real Time Communication//). Cette technologie connecte les clients pairs entre eux (les navigateurs) pour permettre la **distribution des torrents directement dans le navigateur**. | Pour ce faire, PeerTube utilise [[https://en.wikipedia.org/wiki/WebTorrent|WebTorrent]], un outil s'appuyant sur [[https://fr.wikipedia.org/wiki/WebRTC|WebRTC]] (//Web Real Time Communication//). WebRTC définit les spécifications de quelques API javascript pour permettre la communication temps réel entre navigateurs (cf. [[https://www.w3.org/TR/webrtc/|www.w3.org/TR/webrtc/]]). Ces spécifications sont ensuite implémentées par les différents navigateurs web. WebTorrent utilise le même protocole que [[https://www.bittorrent.com/lang/fr/]|BitTorrent]], qui permet de //streamer// le contenu avant d'avoir fini de le télécharger. La vidéo est fragmentée en //chunks// (morceaux) qui sont partagés en temps réel par les navigateurs des utilisateurs en train de visionner la vidéo. Chaque client est donc bien lui-même fournisseur du contenu, on parle de //streaming peer-to-peer//. |
| |
Le problème qui pourrait se poser, c'est **si une vidéo devenait virale**, ce qui est loin d'être improbable. À cet effet, WebTorrent est une implémentation du protocole [[https://www.bittorrent.com/lang/fr/]|BitTorrent]], qui permet de //streamer// le contenu avant d'avoir fini de le télécharger. La vidéo est fragmentée en //chunks// (morceaux) qui sont partagés en temps réel par les navigateurs des utilisateurs en train de visionner la vidéo. Chaque client est donc bien lui-même fournisseur du contenu, on parle de //streaming peer-to-peer//. | WebTorrent utilise cependant une couche transport différente. Tandis que BitTorrent utilise des connexions TCP/UDP qui ne peuvent pas être implémentées directement dans une application web pour des questions de sécurité, WebTorrent utilise les API WebRTC. |
| |
| Petite parenthèse: cela crée deux réseaux de partage de torrents: un réseau basé sur WebRTC et un autre basé sur TCP/UDP. Ces réseaux ne peuvent pas communiquer directement entre eux, bien qu'il existe certaines applications comme [[https://webtorrent.io/desktop/|WebTorrent Desktop]] qui permettent de faire le pont entre les deux. |
| |
| L'intérêt d'utiliser WebTorrent est de ne pas surcharger le serveur lorsqu'une vidéo devient virale. En effet, au lieu de devoir envoyer la même vidéo à des centaines d'utilisateurs en même temps, il suffit de l'envoyer à quelques-uns, qui la rediffuseront à leur tour, leur navigateur devenant fournisseur du contenu. |
==== Stack technique ==== | ==== Stack technique ==== |
PeerTube est développé à l'aide de nombreuses technologies((Celles soulignées correspondent à celles auxquelles nous avons eu affaire durant notre TX.)). | PeerTube est développé à l'aide de nombreuses technologies((Celles soulignées correspondent à celles auxquelles nous avons eu affaire durant notre TX.)). |