# NGINX Streamer NGINX Streamer is a simple to use and lightweight **RTMP** ingest or restream tool. It can distribute streams to multiple proviers or copy a stream to another local endpoint you can then view live. ## Requirements NGINX Streamer only requires an OCI compatible container runtime to run. For example typing ``docker run registry.kmlabz.com/videon/nginx-streamer `` into your terminal should do the trick. ## Environment Variables If there are no environment variables present, NGINX Streamer stars in ingest mode and generates a stream key for you. - *TYPE* - May be ``ingest``, ``restream`` or ``encode`` - *STREAM_KEY* - May be an alphanumeric string - *PUSH_URLS* - May be a list of rtmp endpoints to restream to. For example: ``rtmp://live-fra02.twitch.tv/app/{stream_key}, rtmp://a.rtmp.youtube.com/live2``. This environment variable is only relevant in restream mode. - *FFMPEG_ARGS* - Arguments passed to the internal FFMPEG encoder. - *ENCODE_PUSH_URL* - **RTMP** endpoint to push the stream to. ## Operating Modes ### Ingest Mode Takes an **RTMP** stream at ``rtmp:///origin/`` and exposes the exact same stream at ``rtmp:///live``. It is active if *TYPE* is set to ``ingest``. ### Restream Mode The input **RTMP** stream at ``rtmp:///origin/`` will be pushed to the **RTMP** endpoints specified in *PUSH_URLS*. It is active if *TYPE* is set to ``restream``. ### Encode Mode The input **RTMP** stream at ``rtmp:///origin/`` gets encoded according to the environment variable ``FFMPEG_ARGS`` and then gets pushed to pushed to the **RTMP** endpoints specified in *ENCODE_PUSH_URL*. It is active if *TYPE* is set to ``encode``. ## Ports NGINX Streamer exposes the default **RTMP** port, 1935. You may forward this to any port on your machine. ## TODO Currently, NGINX Streamer does not validate stream keys. This may be implemented in Django, for example. An API to get the current stream key would be nice as well.