Я не знаком с использованием MP4Box, но я могу немного объяснить, что происходит за кулисами.
Для того, чтобы декодировать видео, вам сначала понадобится точка входа, картинка для ссылки, если хотите. Это эталонное изображение строится с помощью внутренних ссылок, поэтому оно не зависит от других кадров. Другие кадры будут ссылаться на этот кадр и другие ранее построенные кадры, чтобы воссоздать их во время декодирования. Стоит отметить, что эти изображения могут иногда не использовать одно и то же местоположение в порядке кодирования, как в порядке представления.
Хорошо, вы говорите мне, что вы хотели видео продолжительностью 1 секунда, но я говорю, что если нет I-кадров хотя бы на каждом втором маркере, то это невозможно. Ну, это возможно, но я как будто говорю, что могу готовить, не беспокоясь о том, съедобна ли моя еда. Возможно, вы обрезали с интервалом в одну секунду, но видео невозможно декодировать, пока оно не достигнет контрольного кадра.
Решения: в ffmpeg есть сегментатор, который может сделать это за вас, но результаты не будут идеально длиться 1 секунду (это несовершенно, поскольку он не может по-настоящему справиться с определенными проблемами порядка кодирования / pts, небольшой частью случаев). Что происходит, когда происходит кадр в порядке кодирования, позади остановочного I-кадра (начало следующего сегмента), но перед ним в порядке представления? То же самое, что вы видите в начале вашего видео, кроме как в конце.
Вы можете декодировать в сырой формат, а затем нарезать. Вы могли бы сделать много манипуляций с обнаружением I-кадра и буферизованным резанием (весело)
Есть много способов сделать это, и в зависимости от ограничений памяти / вычислений вы сможете выбрать свой вкус.
Я надеюсь, что это объясняет ошибки, которые вы видите, и предоставляет возможные решения для вас.