使用ffmpeg解码时减少RTMP缓冲区

时间:2019-01-15 19:26:19

标签: ffmpeg rtmp sdi

我正在使用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缓冲减小到最小。

有什么提示吗?

0 个答案:

没有答案