• This repository has been archived on 13/Apr/2022
  • Stars
    star
    157
  • Rank 238,399 (Top 5 %)
  • Language
    Go
  • License
    MIT License
  • Created about 8 years ago
  • Updated almost 2 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Self hosted simulcasting to Twitch, Youtube, and Facebook made easy.

Streamroller

Self hosted simulcasting made easy

Build Status

Deploy to Docker Cloud

Streamroller is a mutlistream tool that allows you to broadcast your streams (e.g OBS/Xsplit) to multiple platforms such as Twitch, Youtube, and Facebook at once. It also has read only chat to make it easy to vocally respond to your viewers in a single window.

This tool is meant to be hosted remotely to avoid networking issues locally as trying to stream for multiple sources can get quite heavy.

Screenshots

Chat: Chat

Features/Roadmap

  • Combined chat (read)
  • Combined chat (write)
  • RTMP cloning
  • Streamroller stream key protection
  • RTMPT to RTMP

Platforms

  • Twitch
  • Facebook Live
  • Youtube
  • Azubu
  • Hitbox

Changelog

Getting Keys/Tokens

Before installing to make the setup simpler, it's best to get all the keys and tokens you'll need from your accounts first. Not every platform is required, only keys and tokens for the platforms you wish to stream to. See the SERVICES.md doc.

Install

Docker Cloud

Deploy to Docker Cloud

Docker Cloud is users who are atleast somewhat familiar with working on servers. You can follow Docker Cloud's get started guide here, and then afterwards hit the Deploy with Cloud button.

Docker

A docker image is available over at Docker Hub. It's suggested to use a tag rather then latest.

Server

Grab the latest release from the releases page, or build from source and install directly from master. Streamroller is currently built and tested against Go 1.8.

Quick install for Linux:

curl -Ls "https://github.com/dustinblackman/streamroller/releases/download/1.0.0/streamroller-linux-amd64-1.0.0.tar.gz" | tar xz -C /usr/local/bin/

Build From Source:

A makefile exists to handle all things needed to build and install from source.

git pull https://github.com/dustinblackman/streamroller
cd streamroller
make install

Configure

Configuration can be done either by command line parameters, environment variables, or a JSON file. Please see all available flags with streamroller --help or in the example below.

To set a configuration, you can take the flag name and export it in your environment or save in one of the three locations for config files.

After launch, chat can be found on the index, (e.g http://localhost:8080). And streams can also be submitted to index (e.g rtmp://localhost:8080).

Parameters

{
  "twitch-livekey": "", // Twitch live key
  "twitch-username": "", // Twitch Username
  "twitch-oauth": "", // Twitch oauth key

  "facebook-livekey": "", // Facebook live key
  "facebook-token": "", // Facebook auth token

  "youtube-livekey": "", // Youtube live key
  "youtube-token": "", // Youtube oauth refresh token

  "port": 8080, // Port for server to listen on
  "debug": false, // Debug logging
}

Examples

Flags:

streamroller --twitch-livekey aBc123 facebook-livekey EfG456

Environments:

All flags/parameters can be used with environment variables by prefixing with SR_, and replacing dashes with underscores.

export SR_TWITCH_LIVEKEY=aBc123
export SR_FACEBOOK_LIVEKEY=EfG456

JSON File:

Configuration files can be stored in one of the three locations

./streamroller.json
/etc/streamroller.json
$HOME/.streamroller/streamroller.json
{
  "twitch-livekey": "aBc123",
  "facebook-livekey": "EfG456"
}

Credit

  • Ethan for the name
  • JDoeDevel for the chat snippet

Related Projects

  • StreamWithFriends - StreamWithFriends allows your friends webcams to appear on your stream all through a web broswer.

License

More Repositories

1

Championify

Import recent item sets from popular aggregators like Champion.gg in to League of Legends to use within game! No hassle.
HTML
889
star
2

oatmeal

Terminal UI to chat with large language models (LLM) using different model backends, and integrations with your favourite editors!
Rust
483
star
3

cargo-run-bin

Build, cache, and run CLI tools scoped in Cargo.toml rather than installing globally. Stop the version drifts across your team, keep it all in sync within your project!
Rust
173
star
4

oatmeal.nvim

Terminal UI to chat with large language models (LLM) using different model backends, and with a plugin for Neovim!
Lua
77
star
5

phantomized

All dynamic PhantomJS ELFs in one simple tar
JavaScript
69
star
6

speakerbot

A simple Discord music bot written in Go
Go
51
star
7

gomodrun

The forgotten go tool that executes and caches binaries included in go.mod files.
Go
34
star
8

languagetool-code-comments

languagetool-code-comments integrates the LanguageTool API to parse, spell check, and correct the grammar of your code comments!
Rust
31
star
9

tcon

A slightly lazy shell script to run parallel commands with tmux panes through a FIFO queue.
Shell
30
star
10

collectd-docker-plugin

A collectd plugin that taps in the Docker Stats API
Go
25
star
11

s

A command line utility for posting status messages to social networks
Go
22
star
12

nowplaying-widget

A Spotify Now Playing widget that's accessible with anything that can render a webpage
TypeScript
16
star
13

gulp-inno

Compile Inno Setup scripts using Gulp
HTML
11
star
14

mono-signtool

Drop in replacement for Microsoft's signtool not working in Wine
Go
10
star
15

cargo-gha

Version lock, cache, and run binaries from any Github Release assets. Pull in external tools and keep the versions in sync across your team, and forget installing globally.
Rust
6
star
16

winston-electron

Slightly modified version of Winston Console to work with Electron
JavaScript
4
star
17

cordova-ListMusic

A Cordova/Phonegap/SteroidsJS plugin that lists all tracks in Android's MediaStore (default music player).
Java
3
star
18

wrappers

Small shell wrappers around language tooling to fit my personal preference
Shell
2
star
19

streamwithfriends

StreamWithFriends allows your friends webcams to appear on your stream all through a web broswer
JavaScript
2
star
20

cordova-MusicControl

Control default music player for Android from Cordova/Phonegap/Steroids.
Java
2
star
21

cf-alias

Create Cloudflare email alias' directly from your terminal or Alfred.
Rust
1
star
22

fetch-hls

A quick and lazy solution to proxy HLS streams to external players (Chromecast, VLC).
Go
1
star
23

node-cleverbot

Cleverbot library for Node
JavaScript
1
star
24

homebrew-casks

Custom casks for myself, and anyone else interested
Ruby
1
star
25

pokepush

Pokemon Go push notifications when new Pokemon arrives in specified locations
Go
1
star
26

csgo

Dockerized CSGO Server
Makefile
1
star
27

homebrew-tap

Homebrew forumulaes for my project
Ruby
1
star