我目前使用广泛的
nginx-rtmp
库搭建了功能完备的直播流设置,并使用ffmpeg
为我的流提供各种分辨率。唯一的问题是,只有2个输出的ffmpeg
会占用大约50%的CPU。我希望能够支持最多20个同时直播的用户 - 根据当前需求,这意味着我需要10倍于我目前拥有的CPU计算能力!如何在nginx-rtmp
和ffmpeg
的基础上扩展我的转码设置?rtmp {
server {
listen 1935;
application src {
live on;
exec_push ffmpeg -i rtmp://localhost/src/$name
-c:v copy -preset:v ultrafast -b:v 512K -c:a copy -tune zerolatency -f flv rtmp://localhost/hls/$name_hi
-c:v libx264 -preset:v ultrafast -s 852x480 -b:v 128K -c:a copy -tune zerolatency -f flv rtmp://localhost/hls/$name_low;
# -c:v libx264 -s 852x480 -b:v 128K -c:a copy -tune zerolatency -f flv rtmp://localhost/hls/$name_low;
# -c:v libx264 -s 1280x720 -b:v 256k -c:a copy -tune zerolatency -f flv rtmp://localhost/hls/$name_mid;
}
application hls {
live on;
hls on;
hls_path /tmp/hls;
# hls_fragment 1s;
# hls_playlist_length 4s;
hls_fragment 4s;
hls_playlist_length 12s;
hls_nested on;
hls_variant _low BANDWIDTH=160000;
# hls_variant _mid BANDWIDTH=320000;
hls_variant _hi BANDWIDTH=640000;
}
}
}