В повседневной жизни, даже не обязательно, если ты занимаешься видео по долгу службы, встают самые элементарные задачи для линейного монтажа, будь то вырезать кусочек, соединить и прочее.
Вот разные быстрые способы линейного монтажа, а главное гарантированно сохраняющего качество, т.к. будет отсутствовать рендер.
Есть такая библиотека как 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. Писалось для себя, чтобы собрать все в одном месте.
Добавить комментарий