我正在使用nginx和nginx-rtmp-module设置新服务器。我安装了DeckLink Duo2卡,以输出来自RTMP流的SDI信号。
使用这种简单的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时,使用-fflags nobuffer选项可以观察到1.5秒的延迟。
由于ffplay无法输出到decklink设备,我希望ffmpeg将缓冲区减小到最小,但我找不到解决方法。所有-rtmp_buffer或-fflag nobuffer或任何其他选项都不会对延迟产生影响。
在同一台正在运行ffmpeg的计算机上接收流,这就是为什么如果我想实现低延迟,则有必要将ffmpeg缓冲减小到最小。
有什么提示吗?