时限播放持续时间的两倍

时间:2019-09-25 19:24:26

标签: ffmpeg

我正在使用以下命令流式传输以测试端点:

ffmpeg -loglevel debug -f lavfi -re -i testsrc=size=hd720:rate=30 
       -f lavfi -re -i anoisesrc 
       -vf "drawtext=fontfile=\'/Library/Fonts/Arial.ttf\': text=\'Local time %{localtime\: %Y\/%m\/%d %H.%M.%S} (%{n})\': x=50: y=50: fontsize=48: fontcolor=white: box=1: boxcolor=0x00000099" 
       -pix_fmt yuv420p -c:v libx264 -b:v 1000k -g 30 -profile:v baseline -preset veryfast 
       -c:a libfdk_aac -b:a 96k -timelimit 60 -f flv $RTMP_OUTPUT/$NAME

因为我要将此命令添加到自动化中,所以我想防止它无限期运行,以防脚本出错(我在与脚本分离的后台进程中启动ffmpeg作业)。因此,我添加了标记-timelimit 60,根据documentation,该作业应在持续时间 秒后退出。

我可以看到命令已正确解析

Reading option '-timelimit' ... matched as option 'timelimit' (set max runtime in seconds) with argument '60'.
...
Finished splitting the commandline.
...
Applying option timelimit (set max runtime in seconds) with argument 60.
...

这是示例输出

enter image description here

问题是我注意到流的运行时间超过了指定时间。经过几次测试,我注意到它的运行时间增加了一倍,这让我开始思考是否要占用帧数(假设为2秒帧)。

请问有人可以澄清timelimit选项吗?以及运行时间超过指定时间的可能原因。

PS:我在MAC OS Mojave(10.14.6)上使用ffmpeg版本4.1.4

1 个答案:

答案 0 :(得分:1)

-timelimit使用用户/ utime。不是实时/ rtime /壁钟时间,也不是与输入文件的帧速率或持续时间直接相关。您可以通过添加-benchmark全局选项(将时间信息记录到控制台输出中)来确认这一点:

bench: utime=59.575s stime=1.273s rtime=105.475s

请参见What do 'real', 'user' and 'sys' mean in the output of time(1)?