Задержка аудио-видео при извлечении из NGINX-RTMP в режиме реального времени

#nginx #video #ffmpeg #rtsp #rtmp

#nginx #Видео #ffmpeg #rtsp #rtmp

Вопрос:

Мы получаем RTSP-поток и микшируем его вместе с линейным вводом через pulseaudio.

Это выглядит примерно так:

 ffmpeg 
  -use_wallclock_as_timestamps 1  -fflags  genpts    
  -max_delay 2000000 -thread_queue_size 1024         
  -i "rtsp://url"           
  -use_wallclock_as_timestamps 1  -fflags  genpts    
  -max_delay 2000000 -thread_queue_size 1024         
  -itsoffset <offset>       
  -f pulse                  
  [...]
  

Пока все хорошо. Этот тип работает при прямой выборке потока rtsp.

Как только мы предварительно направим RTSP-поток через петлю NGINX-RTMP (в режиме реального времени),

 ffmpeg -i rtsp://url -c copy -an -f flv rtmp://localhost/live

ffmpeg 
  -use_wallclock_as_timestamps 1  -fflags  genpts    
  -max_delay 2000000 -thread_queue_size 1024         
  -i "rtmp://localhost/live"                         
  -use_wallclock_as_timestamps 1  -fflags  genpts    
  -max_delay 2000000 -thread_queue_size 1024         
  -itsoffset <offset>                                
  -f pulse                                           
  [...]
  

мы получаем задержку, близкую к 5 с на выходе (смещение аудио-видео).

При этом конфигурация rtmp://localhost/live:

 application live {
      live on;
      sync 10ms;
      record off;
      allow publish 127.0.0.1;
      deny publish all;
      }
  

Что вызывает задержку и как от нее избавиться?

Сам RTMP-сервер не вызывает заметной задержки, поэтому я предполагаю, что это проблема с меткой времени, но моя мудрость заканчивается приведенными выше вариантами.