npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

p2p-media-loader-core

v2.1.0

Published

P2P Media Loader core functionality

Downloads

2,213

Readme

P2P Media Loader

GitHub ations workflow status npm version jsDelivr hits (npm)

P2P Media Loader is an open-source JavaScript library that leverages modern web browser features, such as HTML5 video and WebRTC, to enable media delivery over peer-to-peer (P2P) connections. It integrates smoothly with many popular HTML5 video players and works entirely without browser plugins or add-ons. Experience it in action with the demo.

By leveraging P2P technology, it greatly reduces reliance on traditional content delivery network (CDN) resources, lowers costs, and enhances the ability to deliver media streams to a larger audience.

This library enables the creation of a huge P2P mesh networks, also known as peer-to-peer content delivery network (P2P CDN), peer-to-peer television (P2PTV), and Enterprise Content Delivery Network (eCDN), which allows traffic sharing among users who are simultaneously viewing the same live or video on demand (VOD) stream via HLS or MPEG-DASH protocols.

Related software

Documentation and important links

Key features

Key components of the P2P network

All the components of the P2P network are free and open-source.

P2P Media Loader network

P2P Media Loader web browser requirements are:

  • WebRTC Data Channels support to exchange data between peers
  • Media Source Extensions are required by Hls.js and Shaka Player engines for media playback

STUN server is used by WebRTC to gather ICE candidates. There are many running public servers available on Public STUN server list.

A compatible WebTorrent tracker is required for WebRTC signaling and to create swarms of peers downloading the same media stream. A few running public trackers are available: https://tracker.novage.com.ua/, https://tracker.webtorrent.dev/, https://openwebtorrent.com/.

It is possible to run personal WebTorrent tracker using open-source implementations: wt-tracker, Aquatic, OpenWebtorrent Tracker, bittorrent-tracker.

P2P Media Loader is configured to use public STUN and WebTorrent servers by default. It means that it is not required to run any server-side software for the P2P network to function for simple use cases.

How It Works

A web browser runs a video player that integrates with the P2P Media Loader library. Each instance of the library is referred to as a peer, and collectively, many peers form the P2P network.

P2P Media Loader initially downloads media segments over HTTP(S) from a source server or CDN to start media playback quickly. If no peers are available, it continues to download segments over HTTP(S), similar to a traditional media stream.

Subsequently, P2P Media Loader transmits media stream details and connection information, such as ICE candidates, to WebTorrent trackers. These trackers provide a list of other peers who are accessing the same media stream.

P2P Media Loader then connects with these peers to download additional media segments and simultaneously shares segments that it has already downloaded.

Periodically, random peers in the P2P swarm download new segments over HTTP(S) and distribute them to others via P2P.

Web browsers support

P2P Media Loader required browser features

The features are fully supported across the most popular browsers

  • Chrome
  • Firefox
  • macOS Safari
  • iPadOS Safari (iPad)
  • iOS Safari (iPhone, iOS version 17.1+)
  • Edge