FFmpeg / X264: разделение видео в середине GOP без перекодирования всего потока - PullRequest
5 голосов
/ 25 сентября 2011

У меня есть видео H264 (хранится в файле MP4).Каждая GOP длится около 10 секунд.Я хочу обрезать первые пару секунд видео, что означает, что мне нужно разделить первую GOP.Есть ли способ сделать это без перекодирования всего видео?

У меня есть FFmpeg и x264.Я рад использовать либо командную строку FFmpeg, либо мою собственную программу, связанную с ffmpeg библиотек x264.

Заранее спасибо!

1 Ответ

5 голосов
/ 25 сентября 2011

Я думаю, вы понимаете, что некоторое перекодирование неизбежно.Вы можете избежать перекодирования всего видео, используя следующий подход:

  • Разделите видео на две части: первую GOP и оставшуюся часть видео.Вы должны быть в состоянии сделать это без перекодирования (используйте -vcodec copy)
  • . Преобразуйте первую GOP во что-то, что вы можете легко вырезать, например, YUV
  • Вырезать файл YUV
  • Перекодируйте вырезанный файл, используя те же параметры, что и в исходном видео (вы можете получить их из ffprobe.
  • Соедините перекодированный вырезанный файл с остальной частью видео (из шагаодин). Опять же, вы должны использовать -vcodec copy, чтобы убедиться, что перекодирование не выполняется.

Мне никогда не приходилось это делать, но FAQ , кажется, имеетраздел о присоединении видеофайлов.

...