В повседневной жизни, даже не обязательно, если ты занимаешься видео по долгу службы, встают самые элементарные задачи для линейного монтажа, будь то вырезать кусочек, соединить и прочее.

Вот разные быстрые способы линейного монтажа, а главное гарантированно сохраняющего качество, т.к. будет отсутствовать рендер.

Есть такая библиотека как ffmpeg. Определение по вики не замысловатое:

набор свободных библиотек с открытым исходным кодом, которые позволяют записывать, конвертировать и передавать цифровые аудио- и видеозаписи в различных форматах.

Если работаете на Windows, то рекомендую скачать 64-bit static отсюда.

Нам понадобится ffmpeg.exe файл, он небольшой.
Его надо запустить в командной строке и «скормить» ему параметры. К сожалению придется вспомнить лихие 90-е и как обращаться с консолью.
Но ffmpeg.exe можно скопировать в C:\Windows\System32, тогда он станет доступен в командной строке из любой папки просто как команда ffmpeg.

И так, что я обычно с помощью него быстро делаю, возможно это сгодится.

1. Быстрая вырезка куска без рендера.

Когда это к примеру надо: снял видео на фотик/телефон/или как у меня часто на видеорегистратор, а вывешивать долгое видео на YouTube не нужно, а вот нужно вырезать кусок, а Youtube обработает и сконвертирует сам, как ему это надо.

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

ffmpeg -i in.mp4 -ss [start] -t [duration] -c: copy out.mp4
  • -ss это откуда начать в формате чч:мм:сс.ддд например так 00:01:23.000 или без долей секунд, вот так чч:мм:сс , например 00:01:23, или можно даже просто указывать число в секундах, типа 42 ил 83 ну и т.д.
  • -t продолжительность все в том же формате.
  • -to в таком же формате, это если не нужна продолжительность, а нужно указать до какого момента вырезать.

Если смотришь в видео в плеер MPC-HC (Media Player Classic Home Cinema), то точный формат с долями секунд можно посмотреть и скопировать при паузе в меню Навигация -> переход, или просто нажать ctrl+g.

Например:

ffmpeg -i in.mp4 -ss 00:01:23 -t 300 -c: copy out.mp4

Вырежет 5 минут «как есть» начиная с 00:01:23 из файла i.mp4 в файл out.mp4.

2. Вырезка куска с рендером в H264.

Когда это к примеру надо: снял видео на фотик/телефон/видеорегистратор, хочешь залить в instagram в мобильнике. Брать видео в 4гб с камеры в телефон, да он захлебнется, также как и с фотика. Можно было бы воспользоваться предыдущим пунктом, но мой регистратор снимает в MOV, фотик еще в какой-та формат, телефон их все обрабатывать не хочет, не всегда ясно почему. Видимо как по размеру так и по кодеку. Таким образом, когда первый пункт не катит по тем или иным причинам.

H264 кодек сейчас это такой стандарт де-факто, скушают даже утюги.

ffmpeg -ss [start] -i in.mov -t [duration] -c:v libx264 -c:a aac -strict experimental -b:a 128k out.mp4

Битрейт видео выставит сам, для аудио можно указать и 320k при желании. Я обычно его и указываю. Кстати лимит для инстраграмма по продолжительности: 15 секунд. Видео с 320k аудио и такой продолжительности будет примерно ~8мб.

3. Соединить много одинаковых по свойствам файлов в 1 общий.

Если вы снимаете на камеру долго, например мероприятие, а это не 5 минут, то скорей всего используете карту памяти. Ntfs формат устройства не понимают, а понимают fat32, а там ограничение по размеру файла на ~4гб. Камеры даже перестраховываются (видимо записывать надежнее и проще) и разбивают по 2 гб, или по продолжительности во времени. (можно сказать что взаимосвязанные вещи, но вдаваться в детали сейчас не будем, мы не об этом).

Так вот после съемки в минут ~40-50 будет файлов 4-5 шт., одинаковых по параметрам. Камеры разбивают без нахлеста (в отличии от моего регистратора, сейчас опять таки не об этом но обязательно помните и обратите внимание), и вот тут линейная склейка нас спасет.

Такой режим у ffmpeg называется Concat, а процедура Concatenation of files with same codecs. Это на случай если захотите погуглить.

Создаем текстовый файл mylist.txt вот с таким содержанием:

file '/path/to/001.mp4'
file '/path/to/002.mp4'
file '/path/to/003.mp4'

Можно указывать без пути к файлу, только названия, если собираемся запускать отсюда же из той же папки (В общем помним, что пути бывают абсолютные и относительные).

file '001.mp4'
file '002.mp4'
file '003.mp4'

Команда на запуск будет в результате такая:

ffmpeg -f concat -i mylist.txt -c copy output.mp4

Расширение у output файла такое же пишем. У меня к примеру камера снимает в mts расширении, я его в output и пишу.

4. Подготовка dvd.

Несмотря на youtube и интернет, у нас есть много бабушек или просто родственников, у которых есть dvd плеер, смотрят они его на телевизоре Рубин, находятся в Сибири, или на Камчатке, короче тот случай, когда этот формат будет являться оптимальным.

Для Windows можно использовать вот эту программу Dvd Styler.  Она свободная, под gpl лицензией, и уже имеет встроенный ffmpeg на борту с домино и буфетчицами, то есть сконвертирует все сама, что немало важно. Сама спросит путь для временных файлов, можно указать там временную папку на другом диске, если это важно из-за свободного места. Есть готовые меню со свистелками и перделками. Бабушки это любят.

Для Linux пользователей:

ffmpeg -i input.mp4 -target pal-dvd output.mpg

Потом ставим dvdauthor.

export VIDEO_FORMAT=PAL
dvdauthor --title -o folder_name -f out.mpg
dvdauthor -T -o folder_name

Можно из этой папки собрать iso образ

genisoimage -dvd-video -o movie.iso folder_name

Ну и зафигачить на болванку, хотя во многих окружениях уже есть GUI утилиты, и последние шаги не обязательны.

apt-get install dvd+rw-tools
growisofs -dvd-compat -Z /dev/dvd=movie.iso

5. Наложить субтитры в видео слой.

Иногда по работе развлекаюсь тем, что придумываю перевод для интервью с Речито. Ну какие еще цели, сомтреть файл на телевизоре не имеющий механизмов субтитров, или загрузить видео в вк именно с субтитрами.

ffmpeg -i video.mp4 -vf "ass=subtitle.ass" out.mp4

Для подготовки файла субтитров, точнее для его написания, я использую Subtitle Workshop. Тоже gpl программа. Она с видео не оперирует, а только с текстовыми файлами, но позволяет делать предпросмотр, расставляет тайминги, ну и т.д.

P.S. Писалось для себя, чтобы собрать все в одном месте.

Ссылки по теме: