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)

Témata článku: Technologie, Web, Programování, Hudba, filmy, seriály, Torrent, Pirátství, Java, BitTorrent, Javascript, Ohromná obrazovka, Elegantní řešení, Běžný soubor, Blender, Torrentový klient, Hollywood, Popcorn, Bit, Torrents, Legální streamování, Krátká ukázka, Plak, Jednoduchý test, Speciální program

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

Tesla chce změnit nákladní dopravu. Její elektrický náklaďák má ohromující parametry

Tesla chce změnit nákladní dopravu. Její elektrický náklaďák má ohromující parametry

** Tesla představila elektrický kamion ** Má obdivuhodný výkon i dojezd ** Prodávat by se měl už za dva roky

17.  11.  2017 | Vojtěch Malý | 237

Black Friday 2017: Přehled slev na elektroniku a počítače

Black Friday 2017: Přehled slev na elektroniku a počítače

** Začala slevová mánie zvaná Black Friday ** Pozor, ne všechny slevy jsou opravdu výhodné ** Průběžně sledujeme slevové akce v počítačových e-shopech

Včera | David Polesný | 30

Google Mapy mají nový design. Líbí se vám víc než předchozí? Tady je srovnání

Google Mapy mají nový design. Líbí se vám víc než předchozí? Tady je srovnání

** Nový design Google Map přijde na počítače i mobilní telefony. ** Zaměřuje se na zvýraznění konkrétních míst, mapové podklady jsou mnohdy upozaděné. ** Lépe pracuje s chráněnými oblastmi a parky.

20.  11.  2017 | Vladislav Kluska | 30

Bluetoothové patálie: O bezdrátovém přenosu hudby a  problémech s kodeky

Bluetoothové patálie: O bezdrátovém přenosu hudby a problémech s kodeky

** Bezdrátový přenos hudby je budoucnost ** K dosažení nejlepší kvality je ale potřeba, aby telefon i sluchátka podporovala správný kodek ** Záleží také na typu souborů s hudbou

17.  11.  2017 | Jakub Michlovský | 39


Aktuální číslo časopisu Computer

Otestovali jsme 5 HDR 4K televizorů

Jak natáčet video zrcadlovkou

Vytvořte si chytrou domácnost

Radíme s koupí počítačového zdroje