Sign inSign up

aricodes/nginx-rtmp

By aricodes

•Updated almost 3 years ago

Image
0

1.1K

aricodes/nginx-rtmp repository overview

Build Status

⁠Differences from tiangolo/nginx-rtmp-docker⁠

  • We build with a more recent version of nginx
  • We build with a fork of the nginx-rtmp plugin that supports HLS timestamps
  • We support both 32-bit and 64-bit arm architectures

Note: Note: There are tags for each build date⁠. If you need to "pin" the Docker image version you use, you can select one of those tags. E.g. aricodes/nginx-rtmp:latest-2020-08-16.

⁠nginx-rtmp

Docker⁠ image with Nginx⁠ using the nginx-rtmp-module⁠ module for live multimedia (video) streaming.

⁠Description

This Docker⁠ image can be used to create an RTMP server for multimedia / video streaming using Nginx⁠ and nginx-rtmp-module⁠, built from the current latest sources (Nginx 1.21.4 and nginx-rtmp-module 1.2.4).

This was inspired by other similar previous images from dvdgiessen⁠, jasonrivers⁠, aevumdecessus⁠ and by an OBS Studio post⁠.

The main purpose (and test case) to build it was to allow streaming from OBS Studio⁠ to different clients at the same time.

GitHub repo: https://github.com/aricodes/nginx-rtmp-docker⁠

Docker Hub image: https://hub.docker.com/r/aricodes/nginx-rtmp/⁠

⁠Details

⁠How to use

  • For the simplest case, just run a container with this image:
docker run -d -p 1935:1935 --name nginx-rtmp aricodes/nginx-rtmp

⁠How to test with OBS Studio and VLC

  • Run a container with the command above

  • Open OBS Studio⁠

  • Click the "Settings" button

  • Go to the "Stream" section

  • In "Stream Type" select "Custom Streaming Server"

  • In the "URL" enter the rtmp://<ip_of_host>/live replacing <ip_of_host> with the IP of the host in which the container is running. For example: rtmp://192.168.0.30/live

  • In the "Stream key" use a "key" that will be used later in the client URL to display that specific stream. For example: test

  • Click the "OK" button

  • In the section "Sources" click de "Add" button (+) and select a source (for example "Screen Capture") and configure it as you need

  • Click the "Start Streaming" button

  • Open a VLC⁠ player (it also works in Raspberry Pi using omxplayer)

  • Click in the "Media" menu

  • Click in "Open Network Stream"

  • Enter the URL from above as rtmp://<ip_of_host>/live/<key> replacing <ip_of_host> with the IP of the host in which the container is running and <key> with the key you created in OBS Studio. For example: rtmp://192.168.0.30/live/test

  • Click "Play"

  • Now VLC should start playing whatever you are transmitting from OBS Studio

⁠Debugging

If something is not working you can check the logs of the container with:

docker logs nginx-rtmp

⁠Extending

If you need to modify the configurations you can create a file nginx.conf and replace the one in this image using a Dockerfile that is based on the image, for example:

FROM aricodes/nginx-rtmp

COPY nginx.conf /etc/nginx/nginx.conf

The current nginx.conf contains:

worker_processes auto;
rtmp_auto_push on;
events {}
rtmp {
    server {
        listen 1935;
        listen [::]:1935 ipv6only=on;

        application live {
            live on;
            record off;
        }
    }
}

You can start from it and modify it as you need. Here's the documentation related to nginx-rtmp-module⁠.

⁠Technical details

  • This image is built from the same base official images that most of the other official images, as Python, Node, Postgres, Nginx itself, etc. Specifically, buildpack-deps⁠ which is in turn based on debian⁠. So, if you have any other image locally you probably have the base image layers already downloaded.

  • It is built from the official sources of Nginx and nginx-rtmp-module without adding anything else. (Surprisingly, most of the available images that include nginx-rtmp-module are made from different sources, old versions or add several other components).

  • It has a simple default configuration that should allow you to send one or more streams to it and have several clients receiving multiple copies of those streams simultaneously. (It includes rtmp_auto_push and an automatic number of worker processes).

⁠Release Notes

⁠Latest Changes

⁠License

This project is licensed under the terms of the MIT License.

Tag summary

Content type

Image

Digest

sha256:c25b11196…

Size

8.5 MB

Last updated

over 3 years ago

docker pull aricodes/nginx-rtmp