使用-f segment选项时,ffmpeg不尊重FPS



我正在创建一个dashcam库,其中视频文件不断写入2个缓冲区。当事件发生时,会返回最新的缓冲区。一切都很好,只是当我尝试自定义FPS时,我看到了不一致的行为。

这是我使用的ffmpeg命令:

ffmpeg -y -i rtsp://admin:admin@192.168.1.200 -f segment -segment_time 3 -segment_wrap 2 out_%d.mp4

这正如预期的那样工作,并不断地吐出2个三秒的文件-out_0.mp4&out_1.mp4。流媒体设备的默认FPS为100。当我添加这样的fps参数时:

ffmpeg -y -i rtsp://admin:admin@192.168.1.200 -f segment -segment_time 3 -segment_wrap 2 -r 60 out_%d.mp4

我看到一个或两个文件都是4秒长,所有的帧都是一样的。当我将FPS降低到30时,文件至少有8秒长。

我做错了什么?我如何确保转储的视频文件是有效的,并且只要它是由-segment_time指定的

默认情况下,分段复用器仅在关键帧处分割。默认关键帧间隔约为250。

添加-g X,其中X是segment_time * fps以设置适当的间隔。

最新更新