here is my config file:
#user nobody;
worker_processes 1;
error_log logs/error.log;
#error_log logs/error.log notice;
error_log logs/error.log info;
#pid logs/nginx.pid;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
#log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"';
#access_log logs/access.log main;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root html;
index index.html index.htm;
}
location /stat {
rtmp_stat all;
rtmp_stat_stylesheet stat.xsl;
}
location /stat.xsl {
}
# rtmp control
location /control {
rtmp_control all;
}
location /hls {
types {
application/vnd.apple.mpegurl m3u8;
video/mp2t ts;
}
root F:/PD/Temp;
add_header Cache-Control no-cache;
add_header Access-Control-Allow-Origin *;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
rtmp {
server {
listen 1935;
chunk_size 4096;
buflen 10s;
application live {
allow publish all;
allow play all;
live on;
record off;
drop_idle_publisher 5s;
hls on;
hls_sync 100ms;
hls_path F:/PD/Temp/hls;
hls_fragment 2s;
hls_playlist_length 10m;
}
}
}
я использую adobe live media encoder, а также obc в качестве кодировщиков, я пытался с vlc, а также rtmp-плеер в браузере. оба дают мне переменные задержки. Итак, где я могу настроить, чтобы уменьшить задержку. Я хочу просто нулевую задержку, мое приложение будет полностью локальным (LAN) нет потокового интернета
Здесь важны 3 фактора:
1) размер списка воспроизведения в секундах
Если плейлист имеет 10 секунд (ваш имеет 10 минут), модуль rtmp должен ждать 10 секунд поглощения потока, чтобы генерировать 10 секунд фрагментов, верно? Он не может генерировать 10 секунд фрагмента, если кадры rtmp еще не прибыли.
2) размер фрагментов в секунду s
Когда ваш плейлист готов к доставке (скажем, 10 секунд), вы должны иметь 10 секунд в фрагментах. Итак, у вас есть следующие варианты: 10 / 1 = 1 фрагмент / 10 секунд, 10 / 2 = 2 фрагмента / 5 секунд каждый, 10 / 3 = 3 фрагмента / 3,33 секунды каждый (это не хорошо), но …
3) ключевая рамка
Каждый фрагмент разбит ключевым кадром, поэтому вы должны настроить кодировщик, чтобы добавить ключевой кадр каждые 1, 2 или 5 секунд, если ваш плейлист имеет 10 секунд. Если список воспроизведения имеет 12 секунд, необходимо настроить кодировщик для добавления ключевого кадра каждый 1, 2, 3, 4, 6 или 12.
Продолжить:
enconder key frames = 2 для плейлиста с 3 фрагментами.
Задержка = + — 8 секунд.