From 948876c414c81eaf73881c0fb992d13d19be0680 Mon Sep 17 00:00:00 2001 From: Rob Watson Date: Tue, 15 Apr 2025 04:18:09 +0200 Subject: [PATCH] doc: update README --- README.md | 125 ++++++++++++++++++++++++++++++++++++++++++++++-- assets/obs1.png | Bin 0 -> 39591 bytes 2 files changed, 122 insertions(+), 3 deletions(-) create mode 100644 assets/obs1.png diff --git a/README.md b/README.md index b1ec688..fcf6aed 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,125 @@ # Octoplex :octopus: -Octoplex multiplexes RTMP streams to multiple destinations from the -comfort of your terminal. - ![build status](https://github.com/rfwatson/octoplex/actions/workflows/ci-build.yml/badge.svg) +[![License: AGPL v3](https://img.shields.io/badge/License-AGPL_v3-blue.svg)](https://www.gnu.org/licenses/agpl-3.0) + +Octoplex is a live video restreamer for the terminal. + +* Restream RTMP to unlimited destinations +* Broadcast using OBS and other standard tools +* Add and remove destinations while streaming +* Automatic reconnections +* Terminal user interface with real-time container metrics and health status +* Built on FFmpeg, Docker and other proven free software + +## How it works + +``` + +------------------+ +-------------------+ + | OBS | ----> | Octoplex | + | (Video Capture) | RTMP | | + +------------------+ +-------------------+ + | + | Restream to multiple destinations + v + +------------+ +------------+ +------------+ +--------------+ + | Twitch.tv | | YouTube | | Facebook | | Other | + +------------+ +------------+ +------------+ | Destinations | + +--------------+ +``` + +## Asciicast :video_camera: + +[![asciicast](https://asciinema.org/a/Es8hpa6rq82ov7cDM6bZTVyCT.svg)](https://asciinema.org/a/Es8hpa6rq82ov7cDM6bZTVyCT) + +## Installation + +### Docker Engine + +First, make sure Docker Engine is installed. Octoplex uses Docker to manage +FFmpeg and other streaming tools. + +Linux: See https://docs.docker.com/engine/install/. + +MacOS: https://docs.docker.com/desktop/setup/install/mac-install/ + +### Octoplex + +Visit the [releases page](https://github.com/rfwatson/octoplex/releases) and download the latest build for your platform. + +Unarchive and copy the `octoplex` binary somewhere in your PATH. + +## Usage + +Use the `octoplex` binary. + +``` +$ octoplex +``` + +### Connecting with OBS + +To connect with OBS, configure it to stream to `rtmp://localhost:1935/live`. + +![OBS streaming settings](/assets/obs1.png) + +### Subcommands + +Subcommand|Description +---|--- +None|Launch the terminal user interface +`print-config`|Echo the path to the configuration file to STDOUT +`edit-config`|Edit the configuration file in $EDITOR +`version`|Print the version +`help`|Print help screen + +### Configuration file + +Octoplex stores configuration state in a simple YAML file. (See [above](#subcommands) for its location.) + +Sample configuration: + +```yaml +logfile: + enabled: true # defaults to false + path: /path/to/logfile # defaults to $XDG_STATE_HOME/octoplex/octoplex.log +sources: + rtmp: + enabled: true # must be true + streamkey: live # defaults to "live" +destinations: + - name: YouTube # Destination name, used only for display + url: rtmp://rtmp.youtube.com/12345 # Destination URL with stream key + - name: Twitch.tv + url: rtmp://rtmp.youtube.com/12345 + # other destinations here +``` + +Note: it is also possible to add and remove destinations directly from the +terminal user interface. + +## Contributing + +### Bug reports + +Open bug reports [on GitHub](https://github.com/rfwatson/octoplex/issues/new). + +### Pull requests + +Pull requests are welcome. + +## Acknowledgements + +Octoplex is built on and/or makes use of other free and open source software, +most notably: + +Name|License|URL +---|---|--- +Docker|`Apache 2.0`|[GitHub](https://github.com/moby/moby/tree/master/client) +FFmpeg|`LGPL`|[Website](https://www.ffmpeg.org/legal.html) +MediaMTX|`MIT`|[GitHub](https://github.com/bluenviron/mediamtx) +tview|`MIT`|[GitHub](https://github.com/rivo/tview) + +## Licence + +Octoplex is released under the [AGPL v3](https://github.com/rfwatson/octoplex/blob/main/LICENSE) license. diff --git a/assets/obs1.png b/assets/obs1.png new file mode 100644 index 0000000000000000000000000000000000000000..2aa54df31860d7017ae0cb89a7c0d258039fa4e5 GIT binary patch literal 39591 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