Если вы хотите удалить один I-кадр, вы должны извлечь поток битов в формат Приложения B (например ffmpeg -i input.mp4 -c:v copy -an output.h264
, а затем найти байты, представляющие блок (блоки) NAL, содержащие кадры, которые вы хотите удалить. Удалить эти байты до следующего кода запуска и сохранить поток.
Или вы можете склеить видео, используя -frames:v
опцию для извлечения первых n кадров:
ffmpeg -i input.h264 -c: v copy -frames: v n output.h264
Затем, используя -ss
параметр, вы можете искать позицию, с которой хотите начать снова, и резать оттуда таким же образом. Вы можете узнать позицию, умножив n + 1 на частоту кадров.
Я не знаю более простого способа, если вы не хотите перекодировать.