edit video in terminal. mkv, avi, ffmpeg, mencoder, cut, concat files


Итак, понадобилось мне из фильма (точнее, мультфильма) вырезать нужные моменты и склеить из между собой, чтобы получился «фильм с самыми-самыми моментами». best of the best.
Я не профи видео монтажа, не знаком с кодеками, терминами, спецификациями, стандартами и т.д. Но стоит вполне конкретная задача и есть желание её решить.
Поскольку у меня сейчас на ноутбуке стоит ubuntu 17.10, то конечно, сначала я полез искать в списках софта полноценные редакторы видео с красивыми графическими интерфейсами…
И тут меня ждало разочарование. Один редактор запускался и падал при загрузке видео, Второй умел только вырезать, третий предполагал научную степень по нему, «простые» редакторы жрали память и глючили…
В общем, как обычно, выяснилось, что нет ничего лучше терминала и старых добрых консольных утилит даже в таком деле как редактирование видео/аудио.
А в терминале меня ждали простые, проверенные временем, безотказные, шустрые, команды как ffmpeg, mencoder (с которым мы подружились еще лет 10 назад), ну и наш текстовый cat, который будем использовать как concat.

Итак, за дело!

1. cut video from avi file. start 00:25:26 stop 00:29:31

У меня открыт терминал и рядом в плеере запущен фильм. В плеере я смотрю метку времени начала и конца нужного мне фрагмента video/audio вместе.

$ ffmpeg -i Despicable_Me2.avi -vcodec copy -acodec copy -ss 00:25:26 -to 00:29:31 katya1.avi

Получим файл katya1.avi с началом в 00:25:26 времени основного фильма и до 00:29:31. т.е. jr 4х минут.
Нарезав таким образом штук 11 нужных мне кусочков, я хочу их объеденить в единый файл.

2. сoncatenation our cuted video with cat

Тут всё так же, как и с текстовыми файлами. cat 1.txt 2.txt 3.txt>4.txt

$ cat katya1.avi katya2.avi katya3.avi katya4.avi katya5.avi katya6.avi katya7.avi katya8.avi katya9.avi> video_draft.avi

Это, конечно можно оставить и так. Будет проигрываться один файл, потом второй, потом третий… Но я же хотел единый фильм, а не набор из кусков.
Поэтому размечаю полученый фильм заново.

$ mencoder video_draft.avi -o girl_and_onehorn2.avi -forceidx -ovc copy -oac copy

Yo! mplayer girl_and_onehorn2.avi показал мне отличный мультик про девочку и единорогов. Вместо мультфильма «Гадкий я 2».
Ну, и конечно, я порезал и сшил снова все 3 (на данный момент) части «Гадкий Я». И получил 3 «мультика про девочку и единорогов». =)

P.S. MKV

Один из файлов был записан в формате matroshka (mkv).
Сначала, я пошел по неправильному пути и порезал на 1.mkv 2.mkv и т.д. Получил битые кадры, отставание аудио, залипшие кадры (картинки вместо действия). Мне было жаль своего труда и времени, но пришлось всё-таки пойти по другому пути с нуля.
Метки времени у меня уже были от нарезки mkv файлов. Их я взял из истории команд.

history

Перегнал в avi весь файл:

$ ffmpeg -i Despicable\ Me\ 3.kinoSpisok.mkv -qscale 0 -acodec copy Despicable_Me3.kinoSpisok.avi

И пошел его резать по новой, ориентируясь на метки в истории.

ffmpeg -i Despicable_Me3.avi -vcodec copy -acodec copy -ss 00:10:05 -to 00:14:04 katya1.avi 
ffmpeg -i Despicable_Me3.avi -vcodec copy -acodec copy -ss 00:17:55 -to 00:19:30 katya2.avi 
ffmpeg -i Despicable_Me3.avi -vcodec copy -acodec copy -ss 00:20:16 -to 00:20:45 katya3.avi 
ffmpeg -i Despicable_Me3.avi -vcodec copy -acodec copy -ss 00:23:26 -to 00:27:00 katya4.avi 
ffmpeg -i Despicable_Me3.avi -vcodec copy -acodec copy -ss 00:33:01 -to 00:37:15 katya5.avi 
ffmpeg -i Despicable_Me3.avi -vcodec copy -acodec copy -ss 00:44:16 -to 00:46:46 katya6.avi 
ffmpeg -i Despicable_Me3.avi -vcodec copy -acodec copy -ss 00:50:14 -to 00:50:55 katya7.avi 
ffmpeg -i Despicable_Me3.avi -vcodec copy -acodec copy -ss 00:55:08 -to 00:56:12 katya8.avi 
ffmpeg -i Despicable_Me3.avi -vcodec copy -acodec copy -ss 01:07:37 -to 01:09:20 katya9.avi 
ffmpeg -i Despicable_Me3.avi -vcodec copy -acodec copy -ss 01:12:50 -to 01:13:16 katya10.avi
ffmpeg -i Despicable_Me3.avi -vcodec copy -acodec copy -ss 01:19:36 -to 01:20:13 katya11.avi

Потом cat, потом mencoder.
Так получился третий замечательный мультик про девочку и единорогов.
Удачи!