Видобування кадрів у вищій роздільній здатності, ніж у профілі проєкту

Іноді, у ваших проєктах Kdenlive може виникнути потреба у роботі із стоп-кадрами, які видобуто з початкового записаного матеріалу. У сучасних версіях програми отримати кадри доволі просто завдяки пунктам «Видобути кадр…» і «Видобути кадр до проєкту…» контекстного меню монітора кліпу. Див. також главу Видобути кадр до проєкту.

Увага

Поточна версія Kdenlive видобуває кадри відповідно до параметрів вашого проєкту. Це означає, що якщо роздільна здатність вашого матеріалу є вищою, за роздільну здатність у параметрах проєкту чи навіть іншу орієнтацію, видобутий кадр буде записано у форматі кадру проєкту. Як наслідок, якість видобутого кадру може помітно відрізнятися від якості у записаному матеріалі, якщо використати видобутий кадр поряд із обробленим кадром у вашому проєкті.

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

У деяких проєктах ви можете зіткнутися із матеріалом, який взагалі не відповідає профілю проєкту Прикладом є робота із деякими записами з екрана, особливо з екрана планшета або смартфону. Записи можуть навіть мати різну орієнтацію зображення[1].

hires-frames-rawvideo-properties

Конкретний приклад: запис з екрана на планшеті під керуванням Android, скажімо Samsung Galaxy Tab S3 дає необроблений матеріал із розмірами кадру 1536×2048 пікселів із співвідношенням розмірів сторін 2:3 (через книжкову орієнтацію). Навіть якщо записувати у альбомній орієнтації, співвідношення розмірів 3:2 не є ідеальним. І вам дуже навіть варто записувати у початковій роздільній здатності, щоб не мати втрат далі, під час роботи над проєктом, коли вам може знадобитися реверс у необробленому матеріалі.

Примітка

Частота кадрів, яку показує Kdenlive для цього матеріалу (див. знімок вікна) навіть і близько не лежить від правильної. Фактично, цей матеріал записано із частотою кадрів, яка лежить у широкому діапазоні (не слід плутати частоту кадрів зі змінною бітовою швидкістю), і Kdenlive/MLT/ffmpeg у цьому випадку намагається показати приблизні значення, можливо, на основі діапазону кольорів телебачення, яку вказано для цього потоку відеоданих. Але частота кадрів 23500/1001 використовується у NTSC (National Television Standard Committee — основна система телебачення у США, Японії та багатьох інших країнах), а цей матеріал було записано із колірністю PAL на пристрої PAL. Що б там не було…

На жаль, якщо у вас виникне потреба у роботі з стоп-кадрами, видобутими з такого початкового матеріалу, на вас чекає прикра несподіванка: мультимедійний рушій Kdenlive, MLT, завжди видобуває кадри відповідно до параметрів проєкту. Нехай маємо проєкт FullHD 1920×1080 пікселів, 19:6. А зняте з екрана відео має розмірність 1536×2048 пікселів і співвідношення розмірів кадру у книжковому режимі 2:3. Тоді, видобуті кадри матимуть розмірність 1920×1080, альбомну орієнтацію і співвідношення розмірів 16:9. На них буде багато прозорого місця, але розміри будуть далекими від очікуваних 1536×2048. Отже, зміниться не лише роздільна здатність, але і співвідношення розмірів кадру.

hires-frames-frame-properties

Навряд чи це те, що потрібно, як можна бачити на нашому докладному знімку вікна. Якщо порівняти цей знімок монітора кліпу із знімком монітора кліпу, створеним з необробленого матеріалу, можна помітити різну якість зображення. Немає значення, якій ми віддаємо перевагу — проблема у тому, що вони є помітно різними.

Це те, чого не можна допускати, якщо нам потрібно використати одночасно необроблений матеріал і видобуті кадри в одному проєкті, особливо, коли ці зображення є сусідніми на монтажному столі. Різниця є одразу помітною, якщо не виконувати надзвичайного стискання відео результату до рівня фальшування епізоду з Barbapapa.

Видобування кадрів у початковій роздільній здатності

Звичайно ж, коли усі дії на монтажному столі майже виконано, і потрібні видобуті кадри вставлено як стоп-кадри, ми можемо вручну (повторно) видобути кадри у початковій роздільній здатності. Звичайно, це не лише марудна, але і вразлива до помилок справа.

На щастя, є простий спосіб з використанням скрипту оболонки extract-frames (робота автора цієї документації, TheDiveO). Отримайте скрип bash з bash script (файл ZIP), видобудьте з архіву дані і зробіть скрипт виконуваним ($ chmod u+x extract-frames).

Попередження

Невеличке попередження: перш ніж ви почнете вносити зміни до каталогу вашого проєкту Kdenlive, не забудьте створити резервну копію вашого проєкту. Ми вас попереджали. Ми не несемо відповідальності за будь-які втрати даних або інші втрати, яких ви можете зазнати.

Тепер, запустіть скрипт у каталозі вашого проєкту, де зберігаються знімки кадрів у форматі PNG разом із відповідними відеофайлами, з яких ці кадри було видобуто. Вам завжди потрібно вказувати назву проєкту Kdenlive, щоб скрипт виконав свою роботу:

$ extract-frames myproject.kdenlive

Ось і все! Тепер ви маєте помітити, що на панелі контейнера проєкту Kdenlive файли зображень також було оновлено. Отже, ви можете запускати скрипт для паралельно відкритого проєкту Kdenlive.

Що ж насправді робить цей скрипт? Спочатку він виконує пошук зображень кадрів у форматі PNG із назвами у формі xxx-f000000.png. Тут, xxx — назва (без суфікса) відповідного відеофайла, з якого було видобуто кадр. У поточній версії скрипт шукає лише відповідні файли, суфіксом назви яких є .mp4 та .MP4.

Частина f000000 є ідентифікатором номера кадру, з якого видобуто стоп-кадр. Тепер маємо цікаве питання: у якій системі ведеться відлік цих кадрів?

Пам’ятаєте, вище ми писали про те, що Kdenlive видобуває кадри з кліпів контейнера з використанням властивостей проєкту? Отже, системою відліку для нумерації видобутих кадрів є ваш проєкт І це причина того, чому вам слід вказувати extract-frames ваш проєкт: скрипт визначає частоту кадрів проєкту для належної обробки номера кадру. Без відповідних даних, ми пізніше видобуватимемо не ті кадри, якщо необроблений матеріал має іншу частоту кадрів, а отже і їхній відлік, відносно вашого проєкту.

Примітка

Файли зображень кадрів можуть зберігатися не лише у каталозі проєкту, але і у підкаталогах. Скрипт не знайде жодного файла видобутого кадру у форматі PNG поза ієрархією каталогу вашого проєкту, оскільки він не сканує проєкт Kdenlive на видобуті кадри.

Увага

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

hires-frames-hiresframe-properties

Після завершення роботи скрипту extract-frames на панелі властивостей кліпу Kdenlive видобуті кадри у форматі PNG отримають належні розміри і їхнє співвідношення з початкового кадру. Для повноти картини: на моніторі кліпу буде показано ту саму якість зображення, що і у початковому необробленому матеріалі. Отже, у вас буде все, щоб завершити і записати на плівку, — ой! — створити файл-результат з вашого проєкту.

Якщо на цьому кроці у вас виникнуть проблеми зі зміною кольорів, будь ласка, ознайомтеся із іншою частиною документації — Жахіття з кольорами: перекодування Ffmpeg і збереження BT.601.

Суть робочого процесу

Загальна процедура роботи не дуже зміниться — просто не запускайте скрипт extract-frames у каталозі вашого проєкту Kdenlive кожного разу, коли вам потрібно оновити файли зображень кадрів — замінити їх на зображення з повною роздільністю з вашого необробленого матеріалу. Ви можете запускати і повторно запускати скрипт будь-коли під час роботи над вашим проєктом.

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

Нотатки

Джерела

Початковий текст було подано користувачем TheDiveO до зниклого тепер блогу kdenlive.org. Для цієї документації його було запозичено з kdenlive.org, оновлено і адаптовано до загального стилю.