我有一堆不同帧速率的视频,其中一些具有可变帧速率。
首先,我希望每帧仅以 24 fps 播放一次,无一例外。我不想要任何额外的帧或丢帧。我知道播放长度可能会改变,音频并不重要。
接下来,我希望在扔掉所有重复的帧后执行上述操作。
这是我在 Windows 批处理文件中使用的内容。它几乎总是有效,但对于某些视频,我发现它丢帧了:
for %%i in (*.mp4) do ffmpeg -y -i "%%i" -an -c copy -f h264 "%%i.h264"
for %%i in (*.h264) do ffmpeg -y -r 24 -i "%%i" -c copy "%%i.R.mp4"
for %%i in (*.R.mp4) do ffmpeg -y -i "%%i" -b:v 40M -vf mpdecimate,setpts=N/24/TB "MPD%%i.mp4"
我做错了什么?
编辑:丢失的帧与之前的帧有很大不同,因此它不仅仅是 mpdecimate 在工作。
mpdecimate 过滤器会丢弃与前一帧没有太大差异的帧,这可能是帧丢失的原因。