Редагування відео і ffmpeg

Зображення користувача campana.

Трохи про редагування відео на комп'ютері. Треба було мені вирізати фрагмент із відеофайла. Я наївно відкрив Kdenlive і спробував зробити це там. Ну, здавалося б: графічний інтерфейс, розберуся. Промучився досить довго, але нічого не досяг, окрім розстановки міток і падіння програми. Плюнув і загуглив питання, що мене цікавило. І, о диво: виявилося, що в командному рядку це робиться дуже просто. Треба тільки вибрати, як описати фрагмент відео, який потрібно зберегти в окремий файл: через його початок та тривалість, чи через початок та кінець. В першому випадку вводимо в командному рядку команду

ffmpeg -i вхідний_файл.xyz -ss гг:хвхв:сс -t гг:хвхв:сс -c copy створюваний_файл.xyz

а в другому — команду

ffmpeg -i вхідний_файл.xyz -ss гг:хвхв:сс -to гг:хвхв:сс -c copy створюваний_файл.xyz

і тиснемо enter. В обох командах параметр -ss позначає якраз початок фрагменту, який слід вирізати, і його положення, виміряне в годинах, хвилинах і секундах від початку вихідного ролика (вхідного файла), а параметри -t і -to — це, відповідно, тривалість і кінець фрагмента, який вирізається і записується у створюваний_файл.xyz; параметр -c copy говорить програмі про те, що перекодовувати відео не треба.

Протилежною операцією до вирізання є послідовне склеювання кількох відео в одне. За допомогою ffmpeg така операція теж виконується нескладно. Хоча й дещо складніше, аніж за одну команду. Для об'єднання кількох відеороликів в один потрібно виконати наступну послідовність дій:

1. Розміщуємо всі файли, які будуть об'єднані, в одному каталозі.

2. Створюємо в цьому каталозі текстовий файл з переліком назв наших відеофайлів, взятих у тій послідовності, якій ми склеюватимемо їх в один файл. Це все можна зробити в тому ж командному рядку, в якому ми далі запускатимемо ffmpeg. Нехай текстовий файл з переліком називатиметься «videos». В такому разі переходимо (в командному рядку) в каталог з відеофайлами і виконуємо команду створення файла:

touch videos

після чого вписуємо туди послідовно всі наші файли командами

echo 'file відеофайл_№n.xyz' >> videos

Текст, вказаний між одиничними рядками після команди echo, буде дослівно вписано в кінці файла videos окремим рядком. Перевірити, що все записали правильно, ми можемо, прочитавши файл videos командою

cat videos

Сам список файлів, які лежать в даному каталозі, перевіряється командою

ls

3.Якщо все зроблено правильно, тоді запускаємо ffmpeg командою

ffmpeg -f concat -i videos -c copy об'єднане_відео.xyz

Зверніть увагу, що вище я скрізь припускав, що формат отриманого відео (представлений скрізь розширенням файлів .xyz) однаковий для початкових і кінцевого файла. Якщо ж це не так, і Вам потрібно змінити формат, то замість параметра -c copy слід вписати потрібні параметри перекодування відео та звуку.

У мене, правда, щось склеювання відео, на відміну від вирізання, працює некоректно. Мабуть, щось із ffmpeg в моєму дистрибутиві не так. Поки не став розбиратися, склеюю відео у програмі Shotcut, де все працює добре. Власне, відео, яке я виклав у попередньому дописі, я збирав із трьох фрагментів саме у Shotcut. Як на мене, виходить зручно і швидко. До інших відеоредакторів типу Kino, Cinelerra, Openshot та Olive руки поки не дійшли. Що там в них — не знаю.

Варіант допису в гуглоблозі