Точно вырезать видео файлы из командной строки

У меня возникли проблемы с поиском приложения cli, которое может принимать видеофайл (avi, mkv и mp4) и вырезать очень короткие клипы (2-6 секунд) с точностью точности времени. Я пробовал ffmpeg , mencoder , avidemux и mp4box, но все они сокращают ключевые кадры, которые создают 6+ вторых клипов. Есть ли инструмент, который будет перекодировать входной файл и сократить точное время или отрезать неточно, перекодировать, а затем точно отрезать?

2 Solutions collect form web for “Точно вырезать видео файлы из командной строки”

Вырезание видео с помощью ffmpeg

Вы можете точно вырезать видео с помощью FFmpeg. Начиная с версии 2.5, это очень просто. Например, вырезать 10 секунд, начиная с 0 минут, 3 секунд и 123 миллисекунды.

 ffmpeg -ss 00:00:03.123 -i input.mp4 -t 10 -c:v libx264 -c:a aac -strict experimental out.mp4 

Позиция и время могут быть либо в секундах, либо в форме hh:mm:ss[.xxx] .

Обратите внимание, что в этих примерах видео и аудио будут перекодироваться с помощью кодов x264 и aac .

Вы также можете использовать -to вместо -t для указания конечной точки вместо продолжительности. В этом случае, однако, -to эквивалентно -t , так как, положив -ss перед -i , ffmpeg сначала будет искать эту точку, а затем начать вывод.

См. Также раздел « Поиск в вики».


Точная резка для более старых версий ffmpeg

Если у вас установлена ​​более ранняя версия ffmpeg, то для точного поиска вам нужно поместить -ss после -i , что делает процесс кодирования немного медленнее, потому что сначала нужно декодировать все видео:

 ffmpeg -i input.mp4 -ss 00:00:03.123 -t 10 -c:v libx264 -c:a aac -strict experimental out.mp4 

Здесь -to и -t ведут себя по-разному. -t 10 создаст десятисекундный клип, тогда как -to 10 будет создавать клип длиной 7 секунд.


Потоковое копирование и повторное кодирование

Вы можете попробовать выполнить копирование по аудиопотоку с помощью -c:a copy . Копирование видеопотока можно выполнить с помощью -c:v copy . Однако он может работать неправильно, потому что вы можете разрезать только видео ключевые кадры, которые не так часто происходят. В любом случае это может привести к неточной резке, если вы скопируете видеопоток.

Как сказал Baodad в комментариях (я пишу, потому что это нелегко найти, если вы читаете быстро), лучший подход заключается в автоматическом обнаружении аудио / видеокодеров с помощью ffmpeg, поэтому:

 ffmpeg -ss 00:05:17.18 -i in.mp4 -t 00:06:29.10 -acodec copy -vcodec copy out.mp4 
  • Начало @ 00: 05: 17.18
  • Input = in.mp4
  • Stop @ 00: 06: 29.10
  • Output = out.mp4
  • Используйте кодек ffmpeg для объединения файлов * .ts в один mp4
  • Как я могу объединить два файла mp4 без потери качества?
  • Как преобразовать .iso в .mp4 без установки с помощью ffmpeg
  • Как открыть и восстановить видеофайл m4v или mp4?
  • Уменьшить размер MP4
  • Извлечение аудио из MP4-видео в MP3
  • Как удалить несколько сегментов из видео с помощью FFmpeg?
  • Какой самый простой способ сохранить GIFV как простой GIF?
  • Присоединяйтесь к файлам mp4 в linux
  • Как я могу преобразовать .mov в mp4?
  • Как я могу объединить или объединить два или более файлов MP4, создающих другой файл MP4?
  • Ffmpeg: Ошибка входа в трубу
  • Давайте будем гением компьютера.