Задать вопрос
@Levhav
Возьмусь за разработку проектов любой сложности.

Как реализовать стриминг видео «Один-ко-многим» с минимальной задержкой?

Надо сделать стриминг когда один вещает видео поток а множество людей его смотрит. Желательно сделать всё с минимальной задержкой в воспроизведении.

Сейчас наладил это так 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 секунд.
  • Вопрос задан
  • 7819 просмотров
Подписаться 10 5 комментариев
Подписчики вопроса 10 К ответам на вопрос (4)