我正在尝试配置ffmpeg使用网络摄像头进行实时视频流传输。我使用的ffmpeg编码器命令如下。
ffmpeg -f v4l2 -input_format yuyv422 -s 640x480 -i /dev/video0 -c:v libx264 -profile:v baseline -trellis 0 -subq 1 -level 32 -preset superfast -tune zerolatency -me_method epzs -crf 30 -threads 0 -bufsize 1 -refs 4 -coder 0 -b_strategy 0 -bf 0 -sc_threshold 0 -x264-params vbv-maxrate=2000:slice-max-size=1500:keyint=30:min-keyint=10: -pix_fmt yuv420p -an -f mpegts udp://192.168.1.8:5001
使用ffplay命令显示视频源的方法如下:
ffplay -analyzeduration 1 -fflags -nobuffer -i udp://192.168.1.8:5001
然而,我在视频流中遇到了0.5 - 1.0秒的延迟。有没有办法将其减少到低于100毫秒的数字。此外,当我使用x11grab替换v4l2相机捕获时,流几乎是实时的,我没有感受到任何明显的延迟。此外,将编码器从x264更改为mpeg2对延迟没有影响。此外,ffmpeg的统计数据显示,编码器以30fps的速率运行,这表明编码是实时的。这使我只能认为经历的延迟只有一个原因。
- 在使用网络摄像头进行视频捕获时,是否存在缓冲区的显著延迟问题?
- 我不认为传输延迟在这种情况下会产生影响,因为在相同条件下使用屏幕捕获时我没有看到延迟。
- 这种延迟能否进一步降低?有没有其他编码器配置可以使用,代替我之前使用的那个?