Как NGINX реализует службу потоковой передачи rtmp push — кэширование видео

Nginx

Сегодня мы объясним, как NGINX реализует кеширование видео.Если вы не знаете, как NGINX проталкивает потоки, вы можете сначала прочитать мою последнюю статью.Как NGINX реализует службу потоковой передачи rtmp pushКонфигурация части nginx для push-потока rtmp выглядит следующим образом.


rtmp {
    server {
        listen 1935;
        application live {
            live on;
    		record all;
    		record_unique on;
    		record_path "C:/laragon/bin/nginx/nginx-rtmp/video";
    		record_suffix -%Y-%m-%d-%H_%M_%S.flv;
    		#on_publish http://127.0.0.1:8686/auth;
    		#on_play http://127.0.0.1:8686/auth;
        }
    	
        application hls {
            live on;
            hls on;  
            hls_path "C:/laragon/bin/nginx/nginx-rtmp/hls/";
            hls_fragment 8s;  
        }
    }
}

Это в основном разделено на две части для объяснения, одна из которых представляет собой поток push-уведомлений, а другая — поток push-уведомлений hls.

application live {
    live on;
	record all;
	record_unique on;
	record_path "C:/laragon/bin/nginx/nginx-rtmp/video";
	record_suffix -%Y-%m-%d-%H_%M_%S.flv;
	#on_publish http://127.0.0.1:8686/auth;
	#on_play http://127.0.0.1:8686/auth;
}

записать все данные

	record all;

уникальное значение записи

	record_unique on;

путь к кэшу видео

	record_path "C:/laragon/bin/nginx/nginx-rtmp/video";

суффикс файла кеша

	record_suffix -%Y-%m-%d-%H_%M_%S.flv;


Используйте obs для отправки потока, конфигурация выглядит следующим образом

Нажмите, чтобы начать потоковую передачу, результат выглядит следующим образом


视频存放位置
C:\laragon\bin\nginx\nginx-rtmp\video
视频缓存
stream-1585622145-2020-03-31-10_35_45.flv

HLS-конфигурация

application hls {
    live on;
    hls on;  
    hls_path "C:/laragon/bin/nginx/nginx-rtmp/hls/";
    hls_fragment 8s;  
}

Путь сохранения видео

    hls_path "C:/laragon/bin/nginx/nginx-rtmp/hls/";

Размер каждого видео, то есть продолжительность, сохраняется здесь в течение 8 секунд.

    hls_fragment 8s;  

obs настроены следующим образом

Результат выглядит следующим образом

Поток push hls создаст индекс m3u8, сохранит индекс файла ts и сохранит видеоклипы один за другим. По адресу кеша файла бэкенд может получить его и снова воспроизвести.