JavaRush /Курси /Python SELF UA /Нарізка відео на окремі фрагменти і об'єднання кліпів у н...

Нарізка відео на окремі фрагменти і об'єднання кліпів у новий відеопроєкт

Python SELF UA
Рівень 47 , Лекція 3
Відкрита

1. Нарізка відео

Основну увагу в цій лекції ми приділимо нарізці відео та об'єднанню кліпів за допомогою бібліотеки MoviePy. Ви дізнаєтесь, як розділяти відео на частини і як із цих частин створити повноцінні відеопроєкти. Такий собі відеосніданок із шматочків ваших улюблених посібників з програмування в стилі "Python-мікс".

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

Розділення відео за часом

Розділення відео на фрагменти базується на використанні методу cut в MoviePy. Ми можемо задати початкові й кінцеві часові інтервали, які нас цікавлять.


from moviepy.editor import VideoFileClip

# Завантажуємо відео
clip = VideoFileClip("input_video.mp4")

# Вирізаємо фрагмент з 10 по 20 секунду
clip1 = clip.subclip(10, 20)

# Зберігаємо вирізаний фрагмент
clip1.write_videofile("clip1.mp4")

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

Нарізка відео на кілька частин

Ви можете нарізати відео на кілька частин і зберегти їх як окремі кліпи для подальшого об’єднання.

Нарізка відео на три фрагменти

Припустимо, у нас є відео тривалістю 30 секунд, і ми хочемо розділити його на три рівних фрагменти по 10 секунд.


# Створення трьох рівних фрагментів
clip1 = video.subclip(0, 10)
clip2 = video.subclip(10, 20)
clip3 = video.subclip(20, 30)

# Збереження фрагментів
clip1.write_videofile("clip_part1.mp4")
clip2.write_videofile("clip_part2.mp4")
clip3.write_videofile("clip_part3.mp4")

Цей код створює три відеокліпи:

  1. clip1 — з 0 по 10 секунду,
  2. clip2 — з 10 по 20 секунду,
  3. clip3 — з 20 по 30 секунду.

Кожен фрагмент зберігається як окремий відеофайл.

Вирізання найцікавіших фрагментів

Часто одного фрагмента недостатньо, і вам потрібен цілий букет із відеоквітів. Ми можемо створити кілька таких фрагментів і зберегти їх.


clip2 = clip.subclip(30, 40)
clip3 = clip.subclip(50, 60)

clip2.write_videofile("clip2.mp4")
clip3.write_videofile("clip3.mp4")

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

2. Об’єднання кліпів

Після нарізки, час збирати наше відеохмари назад, але вже в новій, переробленій формі. У цьому допоможуть можливості MoviePy з об’єднання кількох кліпів в один.

Створення компіляцій із відеокліпів

Щоб об’єднати кліпи, використовуємо метод concatenate_videoclips. Цей метод дозволяє вибудувати кліпи один за одним у вказаній послідовності.


from moviepy.editor import concatenate_videoclips

# Об’єднуємо кліпи в один
final_clip = concatenate_videoclips([clip1, clip2, clip3])

# Зберігаємо об’єднане відео
final_clip.write_videofile("final_video.mp4")

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

Додавання аудіо при об’єднанні кліпів

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

Об’єднання відеокліпів із додаванням аудіодоріжки


from moviepy.editor import AudioFileClip

# Створення аудіокліпу
audio_clip = AudioFileClip("background_music.mp3")

# Додавання аудіокліпу до об’єднаного відео
final_clip_with_audio = final_clip.set_audio(audio_clip)
final_clip_with_audio.write_videofile("combined_with_audio.mp4")

Тут:

  • AudioFileClip("background_music.mp3") створює аудіокліп із музичного файлу.
  • set_audio(audio_clip) додає аудіодоріжку до об’єднаного відео final_clip.

3. Переходи між кліпами

У MoviePy для створення переходів між кліпами використовується клас CompositeVideoClip, а також різні ефекти. Ключова ідея — накласти один кліп на інший із використанням ефектів, таких як прозорість або зсув. Переходи часто включають зміну прозорості або зсув кадрів, щоб один кліп плавно переходив в інший.

Перехід із поступовим затемненням (Fade)

Затемнення — це один із найпопулярніших переходів, під час якого перший кліп плавно зникає, а другий плавно з’являється на екрані. Цей ефект створюється за допомогою функції crossfadein() або crossfadeout().

Перехід із затемненням між двома кліпами


from moviepy.editor import VideoFileClip, concatenate_videoclips

# Завантаження двох відеокліпів
clip1 = VideoFileClip("clip1.mp4").subclip(0, 5)  # Перший кліп на 5 секунд
clip2 = VideoFileClip("clip2.mp4").subclip(0, 5)  # Другий кліп на 5 секунд

# Налаштування ефекту затемнення
clip1 = clip1.crossfadeout(1)  # Затемнення кліпу 1 на 1 секунду
clip2 = clip2.crossfadein(1)   # Плавне появлення кліпу 2 на 1 секунду

# Об’єднання кліпів із переходом
final_clip = concatenate_videoclips([clip1, clip2], method="compose")
final_clip.write_videofile("fade_transition.mp4")

У цьому прикладі:

  • crossfadeout(1) робить перший кліп поступово менш прозорим протягом однієї секунди.
  • crossfadein(1) робить другий кліп поступово більш прозорим протягом однієї секунди.
  • concatenate_videoclips([clip1, clip2], method="compose") об’єднує два кліпи з переходом затемнення.

Перехід із затемненням

Затемнення (або «фейд в чорне») — це ефект, під час якого перший кліп зникає до чорного екрану, а потім наступний кліп з'являється із затемнення. Цей перехід створює ефект завершення однієї сцени перед початком наступної.


from moviepy.editor import VideoFileClip, concatenate_videoclips

# Завантаження двох кліпів
clip1 = VideoFileClip("clip1.mp4").subclip(0, 5)
clip2 = VideoFileClip("clip2.mp4").subclip(0, 5)

# Налаштування затемнення
clip1 = clip1.fadeout(1)  # Згасання кліпу 1 у чорне
clip2 = clip2.fadein(1)   # Поява кліпу 2 із чорного

# Об'єднання кліпів із затемненням
final_clip = concatenate_videoclips([clip1, clip2], method="compose")
final_clip.write_videofile("fade_to_black_transition.mp4")

Тут:

  • fadeout(1) робить кліп поступово згасаючим до чорного екрану протягом однієї секунди.
  • fadein(1) робить другий кліп плавно появляючимся із чорного екрану.

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

4. Практичне застосування

Навички, здобуті в цій лекції, дуже корисні. Уявіть, ви створюєте туторіал із програмування, рекламний ролик для нової бібліотеки чи монтаж народження вашої кішки у світ IT (так, навіть таке буває!). Уміння нарізати відео й об’єднувати його в тематичні блоки — це крок до того, щоб стати справжнім майстром відеомонтажу й автоматизації.

Сподіваюся, тепер ви не тільки озброєні знаннями, але й відчуваєте легкий трепет від можливостей, які відкрилися перед вами. Уперед, у світ відеомонтажу та творчих рішень із Python та MoviePy!

Коментарі
ЩОБ ПОДИВИТИСЯ ВСІ КОМЕНТАРІ АБО ЗАЛИШИТИ КОМЕНТАР,
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ