Есть задача, нарезать из исходного файла отдельные куски видео, начальные и конечные точки которых заданы в номерах кадров. Сразу скажу, что исходное видео может быть и 24, и 25, и 30 и 60 к/с. Нарезка нужна строго по номерам кадров.
1. Если видео с аудиодорогой, то в итоге на выходе получаем файл той же длины, только без картинки за пределами указанного диапазона кадров.
2. Если start_frame >= 1, то в выходном ролике все равно будет вырезанный до этой метки фрагмент изначальной длины, только со стопкадром из начала обрезки. Т.е.:
ffmpeg -i input.mp4 -vf "trim=start_frame=100:end_frame=200" -an output.mp4 (для ролика с 25 к/с)
мы получим на выходе файл длиной 200 фрэймов (8 сек.), где первые 4 секуны будет стопкадр из точки 100.
Все это на W10 x64 / FFMpeg N-110002-g7c130d6911-20230313 (со всеми кодеками в ОС)
видимо формат не позволяет вырезать по кадрово, ибо в современном сжатии используются b и p кадрый и так далее, и оно легко режет между ключевыми кадрами.
Возможно нужно поэкспериментировать с выбором кодека и полным пережатием.