我使用 ffmpeg 以 15 fps 的速度将 RTSP 流保存在文件上。该命令与此类似(我已对其进行了简化):
ffmpeg -y -i rtsp://IP/media.amp -c copy -r 15 -f segment -segment_time 60 -reset_timestamps 1 -segment_atclocktime 1 -strftime 1 outputFile%Y-%m-%d_%H-%M- %S.mp4
它基本上从流中创建 1 分钟长的文件,但问题是每个分段文件的帧速率都不是 15fps。
我得到的值是这样的。
14.99874
15.00031
这对我来说是个大问题,因为我需要将这些文件与其他 15fps 视频合并,结果并不好。如果我随机点击时间栏,合并后的文件不稳定,图像崩溃,有时甚至 VLC 崩溃。
如果我只是合并流文件一切都很好,当我尝试将它与其他东西混合时,我无法做任何事情来获得可观看且稳定的视频文件。
这是正常的吗?我可以做些什么来获得固定 15fps 的片段而无需重新编码?
提前致谢。
最佳答案
正如 Mulvya 指出的那样,ffmpeg 会截断最后一帧。
有两种方法可以解决这个问题:
1)将文件保存到mp4以外的另一个容器中,可以是TS
2)删除视频的最后一帧也可以,但是您必须使用过滤器,这意味着重新编码在 cpu/ram 上可能又长又重
关于FFmpeg 分割和不准确/错误的帧率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44593241/