/metastream

Watch streaming media with friends.

Primary LanguageTypeScriptMIT LicenseMIT


Metastream
Metastream

Watch streaming media with friends.

discord patreon github release version

Features

  • Runs on Windows and macOS.
  • Synchronized playback of streaming media across various websites.
  • Public, private, and offline sessions.
  • Support for P2P (WebRTC) and Direct IP (WebSocket) connections.
    • P2P uses swarm-peer-server with 64-character hex public keys, called "friend codes".
    • Both P2P and Direct IP use client-server architecture.
  • Real-time chat with peers.
  • Queue of media requested by peers in session.
  • Discord Rich Presense, avatars, and user session invites.
  • Timestamp cue points parsed from media description.
  • Auto-fullscreen of embedded media players on websites.
  • Per-user playback permissions, managed by the host.
  • Basic host administrative functionality (kicking peers).
  • Partial support for Chrome Extensions.
  • Localization—see info on contributing.

Roadmap

  • Add Discord Rich Presence integration (#2).
  • Add localization (#5).
  • Move back to Electron (#1).
  • Improve networking reliability.
  • Add favorites/bookmarks (#21).
  • Add playlists.
  • Add audio mode (#22).

Have a feature in mind? Make a request by creating a GitHub issue.

Install

Recommended Install

Download the latest version of Metastream from the official website.

Advanced Install

  • Download specific installer files from the GitHub releases page.

  • Try the (unstable) development version by cloning the Git repository. See the "How to Contribute" instructions.

Screenshots

Screenshot1

Screenshot2

Screenshot3

How to Contribute

Get the code

$ git clone https://github.com/samuelmaddock/metastream.git
$ cd metastream
$ yarn

Run the app

$ yarn dev

# Open multiple instances for local network testing
$ NUM_WINDOWS=2 yarn dev

Package the app

Builds app binaries for the host architecture.

$ yarn package

Build notes

The version of Electron used in the release app depends on a fork which is not yet automatically used in the current build process. It can be manually downloaded from samuelmaddock/muon. Once downloaded, place the ZIP into ~/.electron