Но, конечно, это на самом деле делает перекодирование.

Я бы предпочел, чтобы решение использовало ffmpeg, но подойдет любая программа, работающая в Linux.

Просто чтобы быть ясно: видео не содержит ни P, ни B кадра.

1

1 ответ на вопрос

2
slhck

Если вы хотите удалить один 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 на частоту кадров.

Я не знаю более простого способа, если вы не хотите перекодировать.

Может быть, я не был достаточно ясен в своем вопросе. Видео не содержит P или B кадров. Есть ли «автоматический» способ снять раму? jellyjoe 9 лет назад 0
Ой, простите, я написал это слишком поспешно. Завтра пересмотрю мой ответ, но по сути нет. Вы можете склеить видео, используя опцию -frames: v, а затем склеить его обратно. slhck 9 лет назад 0

Похожие вопросы