Использование ffmpeg для разрезания видео в нескольких точках

Использование ffmpeg для разрезания видео в нескольких точках

У меня есть видео, которое является футбольным матчем. Я хотел бы сократить время before the game, during half timeи в конце концов конец игры.

Общая длина клипа 1h 51mили111m

В идеале разрезы и время следующие:

+------------+-------------+---------------------+
| Start Time | Finish Time |    Clip Duration    |
+------------+-------------+---------------------+
| 1:30       |   47:30     |  47:30              |
| 53:00      |   100:00    |  47                 |
+------------+-------------+---------------------+

Однако мое видео заканчивается на

ffmpeg -ss 00:01:30 -i Tripod_Camera.mp4 -t 00:47:30 -ss 00:53:00 -t 00:47:00 -c copy VideoClip.mp4

решение1

  1. Создайте файл input.txt, содержащий временные метки (в секундах) для вырезания:

    file 'input.mp4'
    inpoint 90
    outpoint 2850
    file 'input.mp4'
    inpoint 3180
    outpoint 6000
    
  2. Запустить ffmpegдля объединения сдемультиплексор concat:

    ffmpeg -f concat -i input.txt -c copy output.mp4
    
  • Это будетпотоковое копирование, поэтому перекодирование не происходит, то есть весь процесс будет быстрым, а качество сохранится. Однако на ключевых кадрах будут сделаны разрезы, поэтому точность может быть недостаточной. Если нужна большая точность, придется использовать гораздо более медленный метод, например, использовать фильтры (a)trim, (a)setpts и concat, которые требуют перекодирования.

  • Если у вас рассинхронизация аудио/видео, тополучить временные метки ключевых кадров, используйте временные метки ключевых кадров в качестве своих inpoint, но добавьте 0,001 к каждой inpointвременной метке в input.txt.

решение2

ИспользоватьВидеовырезкакоторый я написал для этой цели. Благодаря собственному мультеку он точнее ffmpeg и предоставляет вам графический интерфейс.

Поскольку он основан на ffmpeg (или его библиотеках), нарезка происходит без потерь. введите описание изображения здесь

Связанный контент