FFmpeg 直播到 ffserver 在启动时延迟

FFmpeg 直播到 ffserver 在启动时延迟

我正在尝试使用 FFMpeg 和 FFserver 实现简单的相机流。我有两个略有不同的系统作为源,都是 Debian 操作系统:

  • 第一个运行 ffmpeg 3.4.8,如图 1 所示

第一个系统 FFMPEG 版本

  • 第二个运行 ffmpeg 2.8.17,如图 2 所示

第二系统FFMPEG版本

用于将流发送到 ffserver 的 ffmpeg 命令如下,对于两个系统都是相同的:

ffmpeg -re -f v4l2 -s 640x360 -thread_queue_size 20 -probesize 32 -i /dev/video0 -threads 4 -fflags nobuffer -tune zerolatency http://myserverIP:myserverPort/liveFeed.ffm

为了查看流结果,我使用指向服务器 URL 的 openCV 从第三个系统访问实时流:

VideoCapture videoCap = new VideoCapture("http://myserverIP:myserverPort/liveFeed.flv"); 
...
videoCap.read(imageInput);

并开始从流中抓取传入的帧。

奇怪的事情发生在这里:

  • 在第一个系统中,通过 openCV 可视化的视频流几乎是实时的,与原始源相比有 1-2 秒的延迟。
  • 在第二个系统中,视频流受到可变延迟的影响,该延迟与流源的开始时间和使用 openCV 获取流的开始时间之间的经过时间相当(例如:如果我在 12:00:00 启动源流并等待 30 秒后再使用 openCV 访问该流,则在第三个系统上显示的延迟约为 30 秒)

ffserver 配置如下

HTTPBindAddress 0.0.0.0
MaxHTTPConnections 2000
MaxClients 1000
MaxBandwidth 6000
CustomLog -
#NoDaemon

<Feed liveFeed.ffm>
    File /tmp/SCT-0001_3.ffm
    FileMaxSize 5M
</Feed>

<Stream liveFeed.flv>
    Format flv
    Feed liveFeed.ffm

    VideoCodec libx264
    VideoFrameRate 20
    VideoBitRate 200
    VideoSize 640x360
    AVOptionVideo preset superfast
    AVOptionVideo tune zerolatency
    AVOptionVideo flags +global_header

    NoAudio
</Stream>

##################################################################
# Special streams
##################################################################
<Stream stat.html>
    Format status
    # Only allow local people to get the status
    ACL allow localhost
    ACL allow 192.168.0.0 192.168.255.255
</Stream>

# Redirect index.html to the appropriate site
<Redirect index.html>
    URL http://www.ffmpeg.org/
</Redirect> 

任何能帮助发现问题的帮助都非常好!谢谢

相关内容