{"repo":"Athlon1600/nginx-rtmp-server","free":true,"listed":false,"github":"https://github.com/Athlon1600/nginx-rtmp-server","clone":"git clone https://github.com/Athlon1600/nginx-rtmp-server.git","description":":tv: Self-host your own video live-streaming solution that supports both RTMP and HLS protocols. Powered by Nginx (with RTMP module), Express.js, and FFmpeg.","language":"TypeScript","stars":29,"topics":["nginx","rtmp","livestreaming","hls","streaming","ffmpeg","bitwave","odysee","nginx-rtmp-module","http-live-streaming"],"license":"MIT","category":"media-processing","readme_excerpt":"Nginx RTMP Live Streaming Server Self-host your own streaming server without relying on any external and expensive services (like Amazon IVS ). See a working demo here - https://nginx-rtmp.athlon1600.com/ :whale: Requirements All you need is Docker. On Linux, you can install it with just this one-liner: :rocket: Deployment Whether you are playing with this on your local computer, or hosting it on a real server, the steps are basically the same. Things do change a lot once you actually get thousands of users though. Start by cloning this repository, and then start the services using Docker: and that is it! Assuming you are doing this from your local computer, that should launch two services: - HTTP Nginx Server on port 8090: http://localhost:8090 - RTMP Ingest Server on port 1935: rtmp://localhost:1935 :movie camera: Live-streaming to your server Once the two services are up and running, you can now start streaming to your newly launched RTMP server at this endpoint: {stream key} can be anything you want. In all the examples below we will be using test . If you are using OBS, point your streaming settings to: You can also stream any mp4-like video file using ffmpeg command: :tv: Viewing your live-stream with HLS Every stream will produce .m3u8 playlist, that is then made accessible via HTTP protocol, and can then be consumed by any client that supports HLS protocol such as VLC media player, or your web-browser. That playlist URL will look something like: Where test is a \"strea","default_branch":null,"files":null,"tree":[],"storefront":"/r/Athlon1600","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/Athlon1600/nginx-rtmp-server/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}