No description
  • Shell 88.1%
  • Nix 10.4%
  • Dockerfile 1.5%
Find a file
2024-07-22 14:12:10 +01:00
.github feat: add debian packaging 2024-07-22 14:12:10 +01:00
debian feat: add debian packaging 2024-07-22 14:12:10 +01:00
.envrc feat: add nix flake 2024-07-22 12:33:01 +01:00
.gitignore feat: add nix flake 2024-07-22 12:33:01 +01:00
CODE_OF_CONDUCT.md docs: add initial project documentation and templates 2024-07-22 13:04:52 +01:00
CONTRIBUTING.md docs: add initial project documentation and templates 2024-07-22 13:04:52 +01:00
devshell.nix feat: add debian packaging 2024-07-22 14:12:10 +01:00
flake.lock feat: add nix flake 2024-07-22 12:33:01 +01:00
flake.nix feat: add nix flake 2024-07-22 12:33:01 +01:00
LICENSE Initial commit 2024-07-22 09:35:59 +01:00
package.nix feat: add debian packaging 2024-07-22 14:12:10 +01:00
README.md docs: add initial project documentation and templates 2024-07-22 13:04:52 +01:00
SECURITY.md docs: add initial project documentation and templates 2024-07-22 13:04:52 +01:00
stream-sprout feat: add initial version of stream-sprout 2024-07-22 12:27:56 +01:00
stream-sprout.yaml.example feat: add initial version of stream-sprout 2024-07-22 12:27:56 +01:00

Stream Sprout

Stream Sprout

Restream OBS Studio to multiple destinations with ease

Made with 💝 for Tux (Linux) & Apple (macOS)

 Discord   Mastodon   Twitter   LinkedIn 

Introduction

Stream Sprout uses FFmpeg to re-stream a video source to multiple destinations such as Twitch, YouTube, and Owncast.

Get Started

  • Install Stream Sprout
  • Configure Stream Sprout
  • Configure OBS Studio
  • Start stream-sprout
  • Click the Start Streaming button in OBS Studio

Installation

Debian / Ubuntu

  • tbc

NixOS

  • tbc

From source

You need to have FFmpeg and yq installed on your system.

git clone https://github.com/wimpysworld/stream-sprout.git
cd stream-sprout

Configure Stream Sprout

Copy the example Stream Sprout configuration file and edit it to suit your needs.

services: are arbitrarily named. Just create an entry for each RTMP destination you want to stream to.

services:
  my-rtmp-destination:
    enabled: true
    rtmp_server: "rtmp://rtmp.example.com/live/"
    key: "my_super_secret_stream_key"

Trovo

Here's are example configurations for Trovo.

services:
  trovo:
    enabled: false
    rtmp_server: "rtmp://livepush.trovo.live/live/"
    key: "<your_stream_key>"

Twitch

Here's are example configurations for Twitch.

services:
  twitch:
    enabled: true
    rtmp_server: "rtmp://live.twitch.tv/app/"
    key: "<your_stream_key>"

Ingest servers

The example configuration uses the primary Twitch ingest server, which is rtmp://live.twitch.tv/app/. If you want to optimise your stream quality, you can use a server closer to your location. A short list of recommended servers based on your location is available from Recommended Ingest Endpoints For You.

You can find a complete list of Twitch ingest servers from https://twitchstatus.com/.

Testing

If you want to test streaming to Twitch without going live, you can use the ?bandwidthtest=true query parameter.

Add ?bandwidthtest=true to the end of your Twitch stream key, this will enable bandwidth testing, which you can monitor at https://inspector.twitch.tv/, and the stream will not go live on your channel.

YouTube

Here's are example configurations for YouTube.

services:
  youtube:
    enabled: true
    rtmp_server: "rtmp://a.rtmp.youtube.com/live2/"
    key: "<your_stream_key>"

Configure OBS Studio

  • Open OBS Studio
  • Go to Settings > Stream
  • Select Custom from the Service dropdown
  • Copy the server url: from your Stream Sprout configuration to the Server field:
    • rtmp://127.0.0.1:1935

References

These are some of the references used to create this project: