Уменьшить буфер RTMP при декодировании с использованием ffmpeg
Я настраиваю новый сервер, используя nginx и nginx-rtmp-module. Я установил карту DeckLink Duo2 для вывода сигналов SDI, поступающих из потока RTMP.
Все отлично работает, используя эту простую конфигурацию nginx.conf:
rtmp {
server {
listen 1935;
chunk_size 4096;
wait_video on;
wait_key on;
sync 10ms;
application live {
live on;
record off;
exec_push /home/myuser/bin/ffmpeg -i rtmp://127.0.0.1/live/mystreamname -f decklink -format_code pal -pix_fmt uyvy422 'DeckLink Duo (1)';
}
}
}
Моя цель - добиться абсолютной минимальной задержки между полученным потоком и выходом SDI.
Я могу добиться 3-секундной задержки "махающей руки", используя конфигурацию, которую я упомянул. Однако, используя ffplay, я наблюдаю задержку в 1.5 с, используя опцию -fflags nobuffer.
Поскольку ffplay не может выводить на устройство decklink, я хочу, чтобы ffmpeg уменьшил буфер до минимума, но я не могу найти способ сделать это. Все параметры -rtmp_buffer или -fflag nobuffer или любые другие параметры не влияют на задержку.
Поток принимается на той же машине, на которой работает ffmpeg, поэтому имеет смысл уменьшить буферизацию ffmpeg до минимума, если я хочу добиться низкой задержки.
Какие-нибудь советы?