Backend RTMP relay component for StreamPush. Parses config files generated by the StreamPush frontend app and hosts an RTMP server to push those configs. I couldn't find an RTMP server that allowed for hot reloading of configs (see nginx-rtmp), so I made one in GoLang. Makes heavy use of the nareix/joy4 libraries.
You should be using the streampush frontend with this in the StreamPush Docker container. It can be run standalone - see the below instructions.
go get github.com/streampush/relay- Make a folder somewhere named
configs - Drop some JSON formatted config files in the
configsfolder. Seeconfig-example.jsonfor an example config file. - In the same directory where
configsis, runrelay - Relay will now be running on the default ports as defined in
settings.go.
Relay contains a shell that's mainly used for debugging. If you're running relay standalone, it can be quite helpful. Type help for a list of commands.
There's also an HTTP JSON API available for retrieving statistics and other info. This is available at :8888 by default. You can change that in settings.go.
Hot reloads the config files.
Returns some statistics about configured streams. This includes inbound connection status, outbound connection status (per endpoint), and inbound bitrate. The stats object in each endpoint doesn't work - still haven't figured that one out yet.
{
"145ddbd8-97fa-4e7f-acc7-c5211d6fcde0": {
"id": "145ddbd8-97fa-4e7f-acc7-c5211d6fcde0",
"name": "Restream 1",
"endpoints": {
"451e4604-246e-4790-9cf9-18312aaaefd0": {
"name": "YouTube",
"url": "rtmp://a.rtmp.youtube.com/live2/streamkey",
"connected": true,
"stats": {
"txBytes": 0,
"rxBytes": 0,
"bitrate": 0
}
}
},
"streaming": true,
"stats": {
"txBytes": 0,
"rxBytes": 0,
"bitrate": 3747.493283469538
}
}