Ffmpeg ffplay启动时间与指定帧速率成比例

Ffmpeg ffplay启动时间与指定帧速率成比例,ffmpeg,Ffmpeg,我正在使用ffplay通过http播放视频。我正在使用的呼叫如下所示: ffplay -framerate 30 -fflags nobuffer -flags low_delay -autoexit -i http://localhost:8880 视频是一个H.264编码(我的理解在这里有点不清楚),它有点像没有时间戳的“原始”H.264流 我主要关心的是以低延迟显示视频。在这方面,视频是好的 问题在于帧率和启动时间 视频源在处理帧后立即发射帧,因此帧速率不是恒定的。但是,根据我的经验,只

我正在使用ffplay通过http播放视频。我正在使用的呼叫如下所示:

ffplay -framerate 30 -fflags nobuffer -flags low_delay -autoexit -i http://localhost:8880
视频是一个H.264编码(我的理解在这里有点不清楚),它有点像没有时间戳的“原始”H.264流

我主要关心的是以低延迟显示视频。在这方面,视频是好的

问题在于帧率和启动时间

视频源在处理帧后立即发射帧,因此帧速率不是恒定的。但是,根据我的经验,只要指定的帧速率大于源代码的最大可实现帧速率,那么查看器看起来仍然很好。另一方面,如果视频源开始以60 fps的速度发送帧,但我指定的帧速率为30,那么延迟会在ffplay中逐渐累积,到10秒后,视频会落后20秒。因此,第一个问题是,是否有一种方法可以让ffplay使用可变帧率。我正在寻找的行为是“通过http接收到帧后立即显示帧”

鉴于上述问题,我一直采取的方法是简单地指定一个高帧率,这似乎是可行的。但是,这种方法在启动时间方面存在一个问题。当我将帧速率设置为10时,ffplay窗口将在大约3秒钟内启动,但随后很快开始累积延迟(因此我无法执行此操作)。当我将帧速率设置为100时,ffplay窗口需要30秒(确切地说是30秒)才能启动,但不会有任何延迟


我已经看到ffmpeg有一个
vsync
选项,表面上看起来它允许您设置可变帧率。然而,ffplay似乎没有意识到这一点。如果必须这样做的话,我也愿意将ffmpeg的输出通过管道传输到不同的窗口(我运行的是Ubuntu 18.04),但我更愿意不必重新编译ffplay

平均发射速率是多少?如果源发射约30 fps,则我获得上述特征(将ffplay帧速率设置为10表示启动约3秒,帧速率设置为100表示启动30秒)。