-
Notifications
You must be signed in to change notification settings - Fork 1k
Adaptive Bitrates on Livestream
For converting live streams into several streams resolution for an adaptive streaming purpose, we need to make sure the server has enough CPU for the workload. This is to prevent live streaming from continuous delays and even worst, the server becomes unresponsive and hangs.
Please make sure you are aware of the limits https://github.com/WWBN/AVideo/wiki/Live-Plugin#more-simultaneous-lives-non-adaptive
In this sample, I will show how to transcode the live stream into 3 different resolutions
Open your NGINX configuration file
sudo nano /usr/local/nginx/conf/nginx.conf
Edit the RTMP section inside your nginx.conf, it will look like this
rtmp {
server {
listen 1935;
chunk_size 4000;
application live {
live on;
on_publish http://localhost/avideo/plugin/Live/on_publish.php;
on_publish_done http://localhost/avideo/plugin/Live/on_publish_done.php;
on_play http://localhost/avideo/plugin/Live/on_play.php;
on_record_done http://localhost/avideo/plugin/Live/on_record_done.php;
exec ffmpeg -i rtmp://localhost/live/$name
-c:a aac -strict -2 -b:a 128k -c:v libx264 -vf scale=-2:240 -g 48 -keyint_min 48 -sc_threshold 0 -bf 3 -b_strategy 2 -b:v 400k -maxrate 700k -bufsize 1200k -b:a 96k -r 20 -f hls -hls_time 6 -hls_list_size 0 -f flv rtmp://localhost/adaptive/$name_low
-c:a aac -strict -2 -b:a 128k -c:v libx264 -vf scale=-2:480 -g 48 -keyint_min 48 -sc_threshold 0 -bf 3 -b_strategy 2 -b:v 1200k -maxrate 2100k -bufsize 2400k -b:a 128k -f hls -hls_time 6 -hls_list_size 0 -f flv rtmp://localhost/adaptive/$name_mid
-c:a aac -strict -2 -b:a 128k -c:v libx264 -vf scale=-2:720 -g 48 -keyint_min 48 -sc_threshold 0 -bf 3 -b_strategy 2 -b:v 2400k -maxrate 4200k -bufsize 100000k -b:a 128k -f hls -hls_time 6 -hls_list_size 0 -f flv rtmp://localhost/adaptive/$name_hi;
}
application adaptive {
live on;
hls on;
hls_path /HLS/live;
hls_nested on;
allow play all;
allow publish 127.0.0.1;
deny publish all;
hls_variant _low BANDWIDTH=400000;
hls_variant _mid BANDWIDTH=2100000;
hls_variant _hi BANDWIDTH=4200000;
}
}
}
This code is optimized for AVideo Live, after restarting your NGINX with
sudo /usr/local/nginx/sbin/nginx -s stop && sudo /usr/local/nginx/sbin/nginx
you must check the Adaptive option on your Live plugin
The Open Source Video Platform Solution
| Service | Description | Link |
|---|---|---|
| 🎯 | Professional Support - Direct assistance from core developers | Contact |
| ☁️ | AVideo CDN - High-performance video delivery network | Pricing |
AVideo Platform © 2024 - Self-hosted video streaming platform
Made with ❤️ by WWBN and the open source community