我有一个MEVO相机,用于通过我的debian nginx rtmp服务器将视频流传输到OBS。我也有一个USB网络摄像头直接连接到运行OBS的PC,并且正在通过同一nginx rtmp服务器和一个名为Larix Broadcaster的应用程序将视频从智能手机流式传输到OBS。 OBS PC的CPU使用率:15%; nginx rtmp服务器:2%。
MEVO > nginx-rtmp > OBS
USB webcam > OBS
Smartphone (Larix) > nginx-rtmp > OBS
此方法有效,但是流彼此之间不同步。 MEVO和OBS之间存在大约2-5秒的延迟(并且Larix和OBS之间也存在不同的延迟。)网络摄像头是即时的。我不在乎2秒的延迟-我可以在网络摄像头的OBS中设置手动异步延迟,以将其与MEVO同步。问题是等待时间不一致。每当我开始播放MEVO时,它都会改变!
然后,当我最终设法同步流(幸运镜头)时,还[[while流时,它们进入和脱离同步(抖动)。仅在100-200ms范围内,但足够可见。
[看MEVO,我相信它仅支持RTMP。因此,转向其他协议对我不起作用。可能引起抖动和延迟变化的原因是什么?可能是网络吗? MEVO和OBS都位于快速的1Gbps有线网络上。
我曾尝试将OBS中的网络缓冲设置为1MB,2MB或其他值,但这无济于事。我也尝试过在nginx.conf中更改buflen,但无济于事。
nginx.conf:
worker_processes 1;
events {
worker_connections 1024;
}
rtmp {
server {
listen 1935;
chunk_size 4096;
buflen 1000ms;
application live {
live on;
record off;
max_connections 20;
}
}
}
startup
滞后:我建议将“关键帧频率”更改为1秒,并将“最大缓冲区项目”设置为70。您可以从本页https://softvelum.com/larix/faq/中阅读Q13,以进一步了解此设置。至于“捕获”同步,如果您在关键帧开始时开始流式传输,则会发生这种情况。如果您的缓冲区中有300个项目-这大约需要3秒,那么您就可以进入中间位置,并比实时时间落后1.5-2秒。
尝试使用缓冲区和关键帧以了解其工作原理。