Git Product home page Git Product logo

frameshift's Introduction

Warning

The FTL protocol is deprecated and going to be removed from OBS in the future, in favour of WebRTC output. As such, this FTL-based version of Frameshift is also deprecated and no more updates will be made, and no support will be given.

The WebRTC successor to Frameshift will not be released under an open-source model.


๐Ÿš€ Frameshift

Ingest and Viewing stack for deploying Mixer's FTL streaming protocol.

๐ŸŒ  Why?

The Frameshift stack is designed for low-latency streaming for small scale systems. An example of this would be aggregating multiple remote camera perspectives in broadcasting software such as OBS to be restreamed out to the public. This allows for near-realtime multi-camera setups running over a local network, or even via the internet.

By using Mixer's FTL protocol for ingest and WebRTC for display, we can achieve sub-second latency on good connections, allowing for maximum interactivity on your broadcasts.

โ“ Usage

The Frameshift stack is deployed using Docker, as such you are expected to have a good working knowledge of both Docker and Docker Compose. It can also be deployed using Kubernetes, but no samples are provided for that.

Both web client and ingest server are available as Docker Images. A sample Docker Compose file has been provided to help you get started. Please note that this is just an example, and not intended to be used verbatim.

You are expected to reverse proxy both the ingest server and the web client to the same hostname. A sample Caddyfile has been provided to show what needs proxying and where. Note that Caddy is not required, just recommended. You are free to use any HTTP reverse proxy instead. In addition to this, you will need to open the required ports that aren't being proxied via HTTP, as these are used for ingest and playback.

๐ŸŽฅ Ingest Server

The ingest server is Glimesh's Janus FTL Plugin. Automatic Docker builds are provided for convenience sake. It must be configured to operate using the REST Service Connection mode, see the sample Compose file for the required environment variables.

For an explanation of what each environment variable does and their accepted values, please refer to their repo.

๐Ÿ–ฅ๏ธ Web Client

The web client is written in TypeScript using Next.js. It serves a dual purpose as both a web-based stream player, as well as a backend for the ingest server.

Viewing Streams

To view an active stream, navigate to /live/[channelID] on your hosted server.

You can set the ingest server URL using the FTL_CLIENT_INGEST_SERVER environment variable on the server or using the ?serverURI= query param in the browser.

Ingest Backend

The ingest server is configured to communicate via an HTTP REST API to coordinate incoming streams and handle authentication etc. The web client serves this, and can be configured via environment variables. Again, refer to the sample Compose file for a list of variables and their uses.

๐Ÿ“ก Streaming to a Frameshift Instance

See the dedicated docs page.

๐Ÿค” What's with the name?

The Frame-Shift Drive is a fictional device from the Elite Dangerous universe which propels ships to faster-than-light speeds. I also think the name just sounds cool and fits with the theme of the project.

frameshift's People

Contributors

github-actions[bot] avatar luludotdev avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

Forkers

xskexus chocosobo

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.