我正在使用以下命令合并两个实时音频流并且还想管理流之间的延迟:
ffmpeg -i rtmp://myIp:1935/live/stream1 -i rtmp:/myIp:1935/live/stream2 -codec:a aac -strict -2 -filter_complex "[1:a]adelay=3000[delay0];[0:a][delay0]amix" -ac 2 -f flv rtmp://myIp:1935/live/myStream
现在当我运行上述命令时流2比流1。当我再次运行此命令时,此延迟从 3 秒变为 4 或 5 秒,并且每次运行命令时都会有所不同。
那么有什么方法可以管理这个延迟?由于每次运行命令时延迟都会发生变化,因此我无法给出静态延迟时间。
答案1
Rtmp 是一种基于推送的协议。大多数服务器在连接时从最后一个同步点(关键帧)开始发送视频,因此延迟是从最后一个同步点到现在的时间段。其他服务器可能会等到下一个同步点。这可以让您更接近实时,但代价是用户启动时间更长。无论哪种方式,它都是从服务器而不是客户端控制的。