WebTorrent: Alternativní BitTorrent, který běží v čistém Javascriptu

  • WebTorrent běží přímo v prohlížeči
  • Díky WebRTC si vystačí s Javascriptem a HTML5
  • Napsali jsme si primitivní přehrávač videí z P2P

Před dvěma lety se na scéně objevil kontroverzní Popcorn Time, který obalil klasický bittorrentové klient rozhraním, které na první pohled připomínalo webové filmotéky jako třeba Netflix. Divák klepl na plakát filmu a za pár okamžiků se už odkudsi z internetu začal přehrávat film.

Nemusel tedy tušit, že se v nitru programu ve skutečnosti film streamuje od ostatních uživatelů, kteří jej mají zrovna na počítači a samotný divák jej stejně tak nabízí dalším zájemcům, což je ve většině vyspělého světa včetně České republiky ilegální.

Klepněte pro větší obrázek Klepněte pro větší obrázek
Pirátský Popcorn Tiem způsobil v Hollywoodu šok. BitTorrentový klient najednou dokázal ovládat každý zelenáč, což bylo nebezpečné (pro obě strany).

Původní Popcorn Time si pro svoji jednoduchost získal ohromnou popularitu a rozeštval proti sobě Hollywood, který si to nenechal líbit, a brzy se mu podařilo přehrávač zlikvidovat. Jenže jakmile jedna verze programu zkolabovala, na scéně se brzy objevil nový funkční klon. Tak je tomu dodnes – poslední verze sídlí na adrese popcorntime.sh.

Webový BitTorrent poprvé

Ve stínu desktopového Popcorn Timu se loni na scéně objevilo i několik čistě webových verzí, které nevyžadovaly instalaci žádného speciálního softwaru. Jednou z nich byl i Browser Popcorn nebo PopcornInYourBrowser(oba už dávno neexistují), který přehrával filmy přímo pomocí HTML5 a k samotnému streamování používal službu Coinado, která již také utichla, nicméně jsem se o ní zavčas rozepsal v samostatném článku.

Klepněte pro větší obrázek Klepněte pro větší obrázek
PopcornInYourBrowser streamoval filmy z BitTorrentu skrze službu Coinado a HTML5

Coinado fungovalo jako jednoduchá HTTP brána do světa BitTorrentu. Samotný torrentový klient tedy běžel na serveru služby a vy jste po zadání identifikátoru torrentu získali přímo cílová data – třeba MP4 video. Server byl rychlý a prodleva před začátkem streamování do deseti sekund, nicméně i Coinado pochopitelně brzy utichlo, protože se jeho činnost nezamlouvala hostingové společnosti.

Klepněte pro větší obrázek
Stačilo znát ID torrentu a zkrze Coinado jste jej mohli stáhnout jako běžný soubor, nebo přímo streamovat do HTML5 tagu <video>

Webový BitTorrent podruhé

Jenže ani tím důvtip komunitních vývojářů neskončil, a tak jsme na začátku února psali o speciální plugin Torrents Time, kterou nainstalujete na PC, a pak budete moci v prohlížeči opět jednoduše streamovat video z torrentů. Aplikace v podstatě na počítač nainstalovala torrentový klient, který pak může webová stránka použít pro přehrávání v komponentě HTML5.

Klepněte pro větší obrázek
Torrents Time kdesi na půli cesty: Sledování uvnitř prohlížeče, ale po instalaci speciálního programu do počítače. To není elegantní řešení.

Webový "BitTorrent" potřetí a konečně kompletně v JS

I v předchozím případě se ale opět jedná o instalaci nějakého těžkého desktopového softwaru. Z hlediska designu je to vlastně cesta zpět. Co kdyby někdo napsal celý torrentový klient v Javascriptu? No, ono k tomu také už dávno došlo. Jedná se o JS knihovnu WebTorrent, která umožňuje jako stahování z alternativní torrentové P2P sítě, tak seedování a tedy sdílení dat dál, přestože to na rozdíl od klasického bittorrentového klientu nedělá automaticky.

WebTorrent má jedinou slabinu. Neumí komunikovat přímo se sítí BitTorrent a má tedy své vlastní torrenty.

Klepněte pro větší obrázek
Jednoduchý testovací přehrávač s využitím knihovny WebTorrent a streamování filmu Sintel, který se šíří pod svobodnou licencí

Programátorům se podařilo torrentový klient přepsat do Javascriptu hlavně díky využití multimediální P2P technologie WebRTC, se kterou si dnes poradí jak Chrome, tak Firefox, Opera a Microsoft Edge.  V nejnovějších verzích těchto prohlížečů by tedy měl WebTorrent fungovat.

Samotná JS knihovna nabízí hromadu pokročilejších funkcí, ale i naprosto primitivní použití, kdy dokážete streamovat třeba video z P2P sítě opravdu jen s několika málo řádky kódu a to bez jakéhokoliv doplňku, či instalace speciálního pluginu.

Přehrávač na obrázku výše pohání tento jendoduchý kód. Veškerou pokročilou práci provádí javascriptová knihovna WebTorrent: 

var client = new WebTorrent();
 
function init(){
 // Po klepnutí na ENTER zpracuj odkaz na torrent
 document.getElementById("torrentlink").onkeyup = function(e){
 if(e.keyCode == 13){
 // Odkazem na torrent může být URL nebo třeba magnetický link
 var torrentlink = document.getElementById("torrentlink").value;
 // Předám torrent klientu
 client.add(torrentlink, function(torrent){
 // Zvolím z torrentu první (hlavní) soubor
 var file = torrent.files[0];
 // Začnu jej stahovat a připojím jej do značky <video> s identifikátorem #player
 file.renderTo("#player");
 // Každé tři sekundy zobrazím rychlost stahování
 setInterval(function(){
 document.getElementById("status").innerHTML = "Rychlost: " + 
 Math.round(torrent.downloadSpeed*8/1E6) + " Mb/s" + 
 " Staženo: " + Math.round(torrent.downloaded/1E6) + " MB";
 }, 3000);
 });
 }
 };
}

Hollywoodu se nejspíše tato technologie opět nebude líbit, nicméně jde opravdu jen a pouze o technologii a ta je zcela legální. Ostatně i distribuovaný systém BitTorrentu, ve kterém se WebTorrent inspiroval, je sám o sobě zcela legální a byla by osudová chyba na něj koukat skrz prsty jen proto, že je zprofanovaný warezem, který bez jakýchkoliv debat tvoří drtivou většinu jeho současného využití.

WebTorrent je pak ukázkou výborného a funkčního skloubení dvou technologií – multimediální WebRTC z rodiny HTML5 a obří distribuované komunitní sítě, nad kterou nemá naprosto nikdo kontrolu – jen její samotní členové.

A nakonec krátká ukázka (video je zdánlivě trhané, protože jsem obrazovku snímal při 15/fps)

Diskuze (8) Další článek: Týden Živě: Když se myš nechtěně promění v klávesnici

Témata článku: Technologie, Web, Programování, Torrent, Hudba, filmy, seriály, BitTorrent, Pirátství, Java, Javascript, Jednoduchý test, A/B, Torrent Tim, Půl cesty, Legální streamování, Krátká ukázka, Bit, WebTorrent, Blender, Ohromná obrazovka, Prodleva, Torrents, Popcorn, Torrentový klient, Hlavní soubor, ČÍST


Určitě si přečtěte

12 netradičních map České republiky, které jste ještě nikdy neviděli

12 netradičních map České republiky, které jste ještě nikdy neviděli

** Tušíte, kolik je u nás hřbitovů a jak jsou velké? ** Dokážete si představit mapu českých řek a potoků? ** Udělali jsme to všechno za vás nad daty ČÚZK

Jakub Čížek | 10

Nejlepší aplikace na předpověď počasí: Kde nejlépe zjistit, co zrovna chcete vědět

Nejlepší aplikace na předpověď počasí: Kde nejlépe zjistit, co zrovna chcete vědět

Obecných aplikací na předpověď počasí je nespočet, jenže často skončí jen u základní informace o počasí a nenabídnou odpovědi na řadu praktických otázek. A tak jsme si položili právě několik takových otázek a hledali aplikace či meteoslužby, které nám nejlépe odpoví.

Karel Kilián | 4

Nové názvy, upravený vývoj. Microsoft ukázal, jak teď bude vydávat Windows 10

Nové názvy, upravený vývoj. Microsoft ukázal, jak teď bude vydávat Windows 10

** Podzimní vydání Windows 10 přinese jen minimum novinek ** Aktualizace ponese formální označení 20H2 ** Microsoft mění názvy v programu Windows Insider

Lukáš Václavík | 17

Z rozmazané šmouhy krásná fotka. Takhle kouzlí nová umělá inteligence MyHeritage

Z rozmazané šmouhy krásná fotka. Takhle kouzlí nová umělá inteligence MyHeritage

** MyHeritage slibuje nejlepší neuronovou síť pro vylepšování fotek ** Funguje tím líp, čím horší fotku upravuje ** Otestovali jsme desítky různých snímků

Marek Lutonský, Lukáš Václavík | 39

Vyrobíme si falešný Mac mini za tisícovku. Stačí Raspberry Pi a 3D tiskárna

Vyrobíme si falešný Mac mini za tisícovku. Stačí Raspberry Pi a 3D tiskárna

** Vyzkoušíme Raspberry Pi 4 s iRaspbianem ** Operační systém vypadá skoro jako macOS ** Vše strčíme do vlastní stylové krabice

Jakub Čížek | 31


Aktuální číslo časopisu Computer

Megatest: nejlepší notebooky do 20 000 Kč

Test 8 levných IP kamer

Jak vybrat bezdrátová sluchátka

Testujeme Android 11