Share

Как вырезать кусок из видео

Программ, которыми можно вырезать из видео нужный кусок на самом деле вагон и маленькая тележка, но одни платные, другие открывают только видеофайлы определенного типа (например, только avi) или только использующие определенные кодеки, к третьей привыкнешь под windows, а под linux её не окажется. Чтоб не морочить себе голову всякой ерундой, проще всего запомнить одно универсальное бесплатное решение под windows, mac и linux — командную строку FFMPEG.

В простейшем случае она будет выглядеть так (вырезать из input.mp4 начиная с момента в 1 мин 9 сек кусок в 10 мин и положить в output.mp4 без перекодировки):

ffmpeg -i input.mp4 -ss 00:01:09 -t 00:10:00 -c copy output.mp4

Но здесь есть одна засада — кодеки, сжимающие видео пишут один полный видео кадр (опорный), а потом несколько кадров с информацией только об изменившихся кусочках опорного кадра, потом снова опорный кадр полностью и т.д. Вырезая кусок с опцией -c copy ffmpeg может (и скорее всего так и сделает) начать видео файл output.mp4 с нескольких неполных кусков кадров без опорного кадра перед ними. При просмотре это будет выглядеть как секунда мусора в начале видео, проигрыватели видео ее без проблем пережевывают.

Собственно засада будет если попытаться выложить вырезанный кусок на какой-либо видеохостинг — после закачки будет выдано сообщение об ошибке при обработке видеофайла с адекватностью обратно-пропорциональной пофигизму программиста, который писал эту обработку — от вполне понятного на youtube до полностью дебильного на facebook-е. Сам ffmpeg, кстати, такие файлы тоже обычно потом пережёвывать не может — ругается на неправильные пикселы в первом видеокадре.Полечить этот неприятный момент можно включив одновременное пережатие вырезаемого куска (тип кодеков в данном случае задается расширением выходного файла — mp4):

ffmpeg -i input.mp4 -ss 00:01:09 -t 00:10:00 output.mp4

а лучше так:

ffmpeg -i input.mp4 -ss 00:01:09 -t 00:10:00 -b:v 3000K -acodec libmp3lame output.mp4

поднятие битрейта видео (-b:v 3000K) по сравнению с используемым по умолчанию позволяет получить более приличное качество (конечно если у исходного видео битрейт был больше 3000K), а с кодеком звука mp3 почему-то никогда не возникает дефекта постепенной рассинхронизации видео и аудио, который нет-нет да и вылезает при таких манипуляциях и использовании других аудиокодеков.

Если надо одновременно поменять разрешение вырезаемого куска, добавляем опцию -s:

ffmpeg -i input.mp4 -ss 00:01:09 -t 00:10:00 -s 1280x720 -b:v 3000K -acodec libmp3lame output.mp4

Если исходное видео содержит несколько аудио дорожек и/или субтитры, нужно будет указать номера всех дорожек, которые нам нужны в выходном файле:

ffmpeg -i input.mkv -ss 00:01:09 -t 00:10:00 -map 0:0 -map 0:1 -map 0:2 -map 0:3 -s 1280x720 \
-b:v 3000K -acodec libmp3lame -scodec copy output.mkv

-map задает перечень и порядок дорожек, которые нужны в выходном файле, а -scodec copy копирование субтитров без перекодировки.

Источник http://malgarr.blogspot.ru/2013/03/blog-post.html

You may also like...

Добавить комментарий

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.