Я хочу вырезать длинные сегменты видеофайла и затем присоединиться к ним. Но без перекодирования точная обрезка невозможна, так как ffmpeg ищет ключевой кадр до того, как моя отметка времени будет выделена, и вырезает из этого ключевого кадра или в некоторых случаях вырезает из этого ключевого кадра и использует какую-то таблицу для воспроизведения видео по назначению. Когда я присоединяюсь к таким отрезанным сегментам, объединенный файл показывает эти нежелательные разделы из-за некоторой невозможности смешного веселья, я думаю. Вот как я пытаюсь объединить эти сегменты:

ffmpeg -f concat -i Cam01.txt -c copy Cam01.mp4

Чтобы решить эту проблему с меньшим перекодированием, я подумал разрезать видео на две части; сначала вырезать без повторного кодирования от начала до непосредственно перед тем ключевым кадром, который будет быстрее, а затем во второй части вырезать с повторным кодированием из этого ключевого кадра в мой требуемый кадр, который займет несколько секунд, а затем соединить эти две части, чтобы получить мой сегмент.

Теперь у меня есть два вопроса:

1: как я могу получить метку времени ключевого кадра перед любой меткой времени?

2: Есть ли проблема в том, как я соединяю сегменты, чтобы в некоторых случаях они отображали эти ненужные части в моем объединенном файле?

Или каким-то образом я мог бы получить временные метки ключевых кадров во введенном диапазоне времени, если добраться до ключевого кадра раньше, чем любая временная метка будет невозможно.

1 ответ1

0

для 1. вы можете использовать

 ffprobe -select_streams v -show_frames youfile.mp4

чтобы получить список кадров, ключевые кадры будут помечены 'key_frame = 1' и их отметкой времени, чтобы вы могли проанализировать это, чтобы найти ближайший ключевой кадр.

для 2. вы прекрасно их объединяете, у меня были похожие проблемы с быстрым поиском (-ss перед -i) в потоки, создаваемые с помощью конкатера muxer. В конце я просто подсчитал, какие сегменты использовать за пределами ffmpeg, а затем поднял с медленным поиском (-ss после -i)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .