今天我們講解NGINX如何實現視訊快取的,不瞭解NGINX如何推流的可以先去看一下我上篇文章 NGINX如何實現rtmp推流服務 NGINX的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;
}
}
}
複製程式碼
這裡主要分了兩個部分講解,一個是live推流,一個是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配置如下

結果如下

hls的推流會產生一個m3u8的索引,儲存ts檔案的索引,同時儲存一個個視訊片段。後端根據檔案的快取地址,可以拿到再次播放。
