Надо сделать стриминг когда один вещает видео поток а множество людей его смотрит. Желательно сделать всё с минимальной задержкой в воспроизведении.
Сейчас наладил это так FreeSwitch держит видеоконференцию и транслирует её по rtmp на nginx с nginx-rtmp-module там rtmp конвертируется в hls и раздаётся в браузеры.
Но пока не могу побороть задержку в воспроизведении. Она у меня сейчас до 40 секунд и ни как не могу понять как её сократить.
Конфигурация nginx rtmp секцииworker_processes 1;
rtmp {
server {
live on;
listen 1935;
chunk_size 512;
buflen 1s;
idle_streams off;
application cam1 {
live on;
exec_options on;
record off;
exec ffmpeg -i rtmp://localhost/cam1/$name
-c:a libfdk_aac -b:a 32k -c:v libx264 -b:v 128K -s 80x60 -f flv rtmp://localhost/hls/$name_low
-c:a libfdk_aac -b:a 64k -c:v libx264 -b:v 256k -s 160x120 -f flv rtmp://localhost/hls/$name_mid
-c:a libfdk_aac -b:a 128K -c:v libx264 -b:v 512K -s 320x240 -f flv rtmp://localhost/hls/$name_hi;
}
application hls {
live on;
hls on;
hls_path /tmp/hls;
hls_fragment 2s;
hls_playlist_length 10s;
#record off;
hls_type live;
hls_continuous on;
hls_fragment_naming sequential;
hls_nested on;
hls_cleanup off;
hls_variant _low BANDWIDTH=160000;
hls_variant _mid BANDWIDTH=320000;
hls_variant _hi BANDWIDTH=640000;
}
}
}
Примечание: В итоге задержку мне удалось уменьшить. Как выяснилось её вносила команда `exec ffmpeg ... ` если там не проводить модификации самого видео с уменьшением качества то мой сервер начинает нормально тянуть трансляцию с задержкой до 10 секунд.