Как обрезать (время не картинка) видеофайл MP4

17

Я ищу приложение, которое поможет мне эффективно и без потерь обрезать начало и конец файла mp4 .

Например, есть ли что-то, что позволяет мне находить ключевой кадр и копировать партию между этим и другим ключевым кадром, без необходимости перекодирования партии (медленно и с потерями) и без потери синхронизации AV?

Под mp4 я имею в виду видео H264 + аудио AAC в контейнере MP4

До h264 дней Avidemux был отличным инструментом для этого, поскольку вы можете повторно использовать исходные закодированные потоки, что означает отсутствие потерь, и на создание урезанной версии уходит всего несколько секунд, но с h264 это безнадежно - при открытии вы получаете два варианта: использовать безопасный режим (который массово теряет синхронизацию AV) или используйте опасный режим, который сразу же вылетает.

AFAIK, Openshot, Kdenlive, Pitivi и т. Д. Будут делать это путем декодирования и перекодирования (медленно и с потерями).

Кажется простой вещью (вероятно, показывает мое отсутствие знаний здесь!), Поэтому мне было интересно, если я что-то упустил.

artfulrobot
источник
Если вам нужно нарезать конец видео, посмотрите ответ, который я дал на другую тему: askubuntu.com/questions/412558/…
v010dya
2
superuser.com/questions/377343/… хорошо относится и предлагает решение, аналогичное приведенному ниже, но добавляет полезную информацию.
pbhj

Ответы:

24

FFmpeg

ffmpeg -i source.mp4 -ss 00:00:00 -t 00:00:00 -vcodec copy -acodec copy splice.mp4

Для этого понадобится source.mp4 и, используя те же аудио и видео кодеки и без ухудшения качества, взять -t время после -ss времени начала видео и вывести ваш splice.mp4

Обратите внимание, что время очень чувствительно к форматированию (выше приведен один из примеров форматирования). Кроме того, в некоторых дистрибутивах ffmpegбыл заменен на avconv. Просто запустите приведенную выше команду и замените слово ffmpeg на avconv, чтобы решить эту проблему.

Еще один отличный источник информации на эту тему. (Спасибо, @pbhj)

earthmeLon
источник
3
Brilliant. Обратите внимание, что вы не можете сокращать -ssаргумент, т. Е. В 9:00течение 9 минут должно быть выражено, 00:09:00иначе он будет игнорироваться. Я думаю, что этот ответ также должен быть обновлен для использования avconv, согласно предупреждению ffmpeg. Благодарю.
artfulrobot
Заметьте, что это предупреждение просто указывает на то, что у вас установлен avconv, а не ffmpeg, поэтому ваш исполняемый файл ffmpeg на самом деле является просто оболочкой для avconv, и эта оболочка может скоро устареть. Если у вас установлен ffmpeg, но не avconv, вы не получите это предупреждение. Он не предназначен для обозначения того, что сам ffmpeg устарел (хотя последние версии Ubuntu решили установить avconv по умолчанию, а не ffmpeg).
Томасруттер
5

В Ubuntu 16.04 эквивалентом ffmpegявляется командаavconv

Чтобы установить его, запустите:

sudo apt-get install libav-tools

Пример командной строки для обрезки видео по времени:

avconv -i originalFile.ogv -ss 00:00:00 -t 00:00:10 -vcodec copy -acodec copy croppedFile.ogv
AlejandroVD
источник
Недоступно в более поздних версиях Ubuntu.
lolmaus - Андрей Михайлов