Sign inSign up

jamiephonic/rtmps-hls-server

By jamiephonic

•Updated about 4 years ago

Docker image for video streaming server that supports RTMP, RTMPS, HLS, and DASH streams.

Image
11

100K+

jamiephonic/rtmps-hls-server repository overview

⁠RTMPS-HLS-Server Docker

Docker image for video streaming server that supports RTMP, RTMPS, HLS, and DASH streams.

⁠Description

This Docker image can be used to create a video streaming server that supports RTMP⁠ & RTMPS* Ingest, RTMP & RTMPS (via Stunnel) Pushing, and RTMP, HLS⁠ & DASH⁠ playback out of the box. It also allows adaptive streaming and custom transcoding of video streams. All modules are built from source on Debian and Alpine Linux base images.

⁠Features

  • The backend is Nginx⁠ with nginx-rtmp-module⁠.
  • FFmpeg⁠ for transcoding and adaptive streaming
  • Stunnel for RTMPS support (primarily for Facebook Live)
  • Default settings:
    • RTMP is ON
    • HLS is ON
    • DASH is ON
    • Other Nginx configuration files are also provided to allow for RTMP-only streams or FFmpeg transcoding and adaptive streaming.
  • Statistic page of RTMP streams at http://<server ip>:<server port>/stats.
  • Available web video players (based on video.js⁠ and hls.js⁠) at /usr/local/nginx/html/players.

Current Image is built using:

  • Nginx 1.23.0 (compiled from source)
  • Nginx-rtmp-module 1.2.2 (compiled from source)
  • FFmpeg 5.1 (compiled from source)

This image was inspired by similar docker images from tiangolo⁠ and alfg⁠. It has small build size, adds support for HTTP-based streams and adaptive streaming using FFmpeg.

⁠Usage

⁠To run the server
docker run -d -p 1935:1935 -p 1936:1936 -p 8080:8080 -e PUID=$UID -e PGID=0 -e SSL_DOMAIN='rtmp.domain.loc' -v /your/local/assets/:/assets jamiephonic/rtmps-hls-server:latest

When you start the container, the default players and configuration files will be copied into /your/local/assets/ to allow you to easily access and edit them. This will only be done once when you first start the container. If you want to restore the default configs, delete /your/local/assets/.initialized and restart the container.

For more examples, see the Wiki⁠


⁠To stream to the server
  • Stream live RTMP content to:

rtmp://<server ip>:1935/live/<stream_key>

where <stream_key> is any stream key you specify.

  • Configure OBS⁠ to stream content:
    Go to Settings > Stream, choose the following settings:
    • Service: Custom Streaming Server.
    • Server: rtmp://<server ip>:1935/live.
    • Stream key: anything you want, however provided video players assume stream key is test

See the Wiki⁠ for how to stream to the server with RTMPS


⁠To view the stream
  • Using VLC⁠:

    • Go to Media > Open Network Stream.
    • Enter the streaming URL: rtmp://<server ip>:1935/live/<stream-key> Replace <server ip> with the IP of where the server is running, and <stream-key> with the stream key you used when setting up the stream.
    • For HLS and DASH, the URLs are of the forms: http://<server ip>:8080/hls/<stream-key>.m3u8 and http://<server ip>:8080/dash/<stream-key>_src.mpd respectively.
    • Click Play.
  • Using provided web players:
    The provided demo players assume the stream-key is called test and the player is opened from localhost.

    • To play RTMP content (requires Flash): http://<server ip>:8080/players/rtmp.html
    • To play HLS content: http://<server ip>:8080/players/hls_basic.html
    • To play HLS content using hls.js library: http://<server ip>:8080/players/hls.html
    • To play DASH content: http://<server ip>:8080/players/dash.html

    Notes:

    • These web players are hardcoded to play stream key "test" at localhost.
    • To change the stream source for these players, Modify the src attribute in the video tag in the html file and then reload the page.

Released under MIT license.

⁠More info

Tag summary

Content type

Image

Digest

sha256:be5f3dcba…

Size

77.7 MB

Last updated

about 4 years ago

docker pull jamiephonic/rtmps-hls-server