如何在ffmpeg中同步多个rtsp输入?

问题描述 投票:2回答:1

我正在使用ffmpeg将来自本地网络摄像机的多个rtsp流合并到单个输出。在生成的视频中,视频不同步。

ffmpeg -loglevel warning \
        -f image2 -loop 1 \
        -i logo.png \
        -rtsp_transport tcp -thread_queue_size 1024 \
        -i "rtsp://10.0.0.1" \
        -rtsp_transport tcp -thread_queue_size 1024 \
        -i "rtsp://10.0.0.2" \
        -rtsp_transport tcp -thread_queue_size 1024 \
        -i "rtsp://10.0.0.3" \
        -filter_complex "[3:v][2:v][0:v][1:v]xstack=inputs=4:layout=0_0|w0_0|0_h0|w0_h0[v]" \
        -map "[v]" \
        -filter_complex "[1:a][1:a]amerge=inputs=2[aout]" -map "[aout]" \
        -vcodec libx264 -pix_fmt yuv420p -r 30 -g 60 \
        -preset fast -b:v 2400k -maxrate 4600k -bufsize 6000k \
        -acodec aac -ar 44100 -b:a 128k \
        -f flv "rtmp://live-api-s.facebook.com:80/rtmp/$STREAMKEY"

如果我们以第一个输入(0)(10.0.0.1)为参考,则第二个输入(1)最初大约提前1000ms,第三个输入(2)大约提前2000ms。偏移似乎随时间甚至略有增加。

我尝试交换不同的输入(例如,将10.0.0.3转换为输入0,将10.0.0.1转换为输入2),则10.0.0.1会优先于10.0.0.3。因此,我认为这是ffmpeg以及它如何处理输入的问题。

我如何同步输出中的不同来源?

ffmpeg rtmp
1个回答
1
投票

尝试在-fflags nobuffer -flags low_delay -strict experimental之前添加-i。您可能会在开始时看到很少的扭曲帧,因为没有参考帧。

© www.soinside.com 2019 - 2024. All rights reserved.