████████╗██╗ ██╗██╗███╗ ██╗██╗ ██╗
╚══██╔══╝██║ ██║██║████╗ ██║╚██╗██╔╝
██║ ██║ █╗ ██║██║██╔██╗ ██║ ╚███╔╝
██║ ██║███╗██║██║██║╚██╗██║ ██╔██╗
██║ ╚███╔███╔╝██║██║ ╚████║██╔╝ ██╗
╚═╝ ╚══╝╚══╝ ╚═╝╚═╝ ╚═══╝╚═╝ ╚═╝
twinx
is a live-streaming command line tool for Linux.
It connects streaming services (like Twitch, OBS and YouTube) together via a common title
and description
.
Use twinx
to manage your streams.
This should be the first and last tool you use while live-streaming.
This will kick off a persistent standalone linux process that runs as a temporary daemon for the duration of the stream.
The daemon can then be interfaced with using the twinx
command line tool.
You can add integrations and functionality to your stream after it has been started.
Use twinx
to start a new stream on a Linux filesystem.
This will register your title
and description
for your new stream, and start the background process.
The title and description will be used as we work with various backends.
$ # twinx stream start <title> <description>
$ twinx stream start \
"How to hack the planet" \
"This is a live stream about how to hack the kernel to burn down capitalism"
Start an RTMP server. If no host:port
is defined, twinx
will select a port and listen on localhost:1935
.
$ twinx rtmp start <optional host:port>
$ twinx rtmp start localhost:1719
Send the local stream to a remote backend such as Twitch or YouTube Live via the proxy command. You may proxy to multiple backends 🙂 at the same time.
# Example Twitch
$ twinx rtmp proxy rtmp://jfk.contribute.live-video.net/app/{stream_key}
# Example YouTube
$ twinx rtmp proxy rtmp://a.rtmp.youtube.com/live2/{stream_key}
Twitch Callback URL Port: 1717
Environmental Variables
# OBS
export TWINX_OBS_PORT="1718"
export TWINX_OBS_PASSWORD=""
export TWINX_OBS_HOST="localhost"
# YouTube
export TWINX_YOUTUBE_API_KEY=""
twinx
will manage RTMP servers, unix sockets, and gRPC servers and clients for you.
twinx
requires root privileges to do this.
This tool is a reflection of being asked the following questions
What are you working on today? Where is that video you did on What is this stream even about?
Build the binary.
Install the binary.
./configure
make
sudo make install
Arch Linux dependencies
Note: We use nginx-rtmp
instead of the module based package combinations.
protoc-gen-go protoc-gen-go-grpc
nginx-rtmp