What is the NGINX RTMP module
The RTMP module for NGINX provides HLS and MPEG-DASH live streaming capabilities for those who want a lightweight solution based on the HTTP protocol. The stream is published in the MPEG-TS format over HTTP. This makes it possible to use all the power and flexibility of nginx HTTP configurations including SSL, access control, logging, request limiting, etc. MPEG-TS is a widely adopted, well-known, and well-documented streaming format.
You can use our repository to easily install the RPM package for the dynamic RTMP module for NGINX.
The dynamic module is compatible with the latest stable/mainline NGINX for CentOS/RHEL or Amazon Linux.
Step 1. Add GetPageSpeed extras YUM repository
Run the following command to add our repository:
sudo yum -y install https://extras.getpagespeed.com/release-latest.rpm
Step 2. Install NGINX and RTMP module
Then, all you have to do to install NGINX with the RTMP module:
sudo yum -y install sw-nginx-module-rtmp
Step 3. Enable RTMP support in NGINX
Once you have installed the RTMP NGINX module package, it must be enabled.
You may want to simply follow the installer’s suggestion:
plesk sbin nginx_modules_ctl --enable rtmp
Doing so will enable NGINX to load the module and enable its directives.
Configure RTMP module
Connect to your server via SSH, create file /etc/nginx/modules.conf.d/zzz_custom.conf
and place the relevant RTMP directives there.
This file guarantees that your configuration is preserved upon upgrades.
There are various ways you can use the module.
Simple Video-on-Demand
rtmp {
server {
listen 1935;
application vod {
play /var/flvs;
}
}
}
Forward live broadcast service
rtmp {
server {
listen 1935;
chunk_size 4096;
application live {
live on;
record off;
push rtmp://live.twitch.tv/app/[streamkeyfromtwitch];
push rtmp://a.rtmp.youtube.com/live2/[streamkeyfromyoutube];
}
}
}
Re-translate remote stream with HLS support
rtmp {
server {
listen 1935;
application tv {
live on;
hls on;
hls_path /tmp/tv2;
hls_fragment 15s;
pull rtmp://tv2.example.com:443/root/new name=tv2;
}
}
}
http {
server {
listen 80;
location /tv2 {
alias /tmp/tv2;
}
}
}
Stream your X screen through RTMP
ffmpeg -f x11grab -follow_mouse centered -r 25 -s cif -i :0.0 -f flv rtmp://localhost/myapp/screen
For more details and examples, refer to the NGINX RTMP module documentation.
SELinux notes
The module pulls in an additional SELinux policy which allows NGINX to bind on RTMP port 1935.
So the module is fully compatible with SELinux.