1. Додавання тексту та анімація його руху
MoviePy — це просто чудовий інструмент, який дозволяє перетворювати нудні відеоролики на шедеври кінематографа. Ну, або хоча б на щось із рухомим текстом та графікою. Спочатку розберемося, як додавати статичні елементи на наше відео, а потім перейдемо до магії — анімації.
Додавання тексту та анімація його руху
Для створення тексту та його анімації у MoviePy використовується TextClip, який дозволяє задати текст, шрифт, колір та інші параметри. Потім за допомогою методу set_position() можна задати рух тексту по екрану.
Рухомий текст по горизонталі
У цьому прикладі текст буде рухатися зліва направо.
from moviepy.editor import VideoFileClip, TextClip, CompositeVideoClip
# Завантаження основного відео
video = VideoFileClip("sample_video.mp4")
# Створення текстового кліпу
text = TextClip("Рухомий текст", fontsize=50, color='white')
text = text.set_position(lambda t: (int(200 * t), 100)).set_duration(5)
# Накладання тексту на відео
final_video = CompositeVideoClip([video, text])
final_video.write_videofile("video_with_moving_text.mp4", fps=24)
Тут:
TextClip("Рухомий текст", fontsize=50, color='white')створює текст білого кольору з розміром шрифту 50.set_position(lambda t: (int(200 * t), 100))створює анімацію, при якій текст рухається вправо по горизонталі з постійною швидкістю.CompositeVideoClip([video, text])об'єднує текстовий кліп та основний відеокліп.
Анімація тексту зі зміною напрямку руху
Ви також можете створити більш складні траєкторії для тексту, комбінуючи рухи по горизонталі та вертикалі.
Рух тексту по діагоналі
У цьому прикладі текст буде переміщуватися по діагоналі.
text = TextClip("Текст по діагоналі", fontsize=50, color='yellow')
text = text.set_position(lambda t: (int(100 + 50 * t), int(100 + 30 * t))).set_duration(5)
final_video = CompositeVideoClip([video, text])
final_video.write_videofile("video_with_diagonal_text.mp4", fps=24)
Тут:
- Функція
set_position(lambda t: (int(100 + 50 * t), int(100 + 30 * t)))створює рух по діагоналі, комбінуючи горизонтальне та вертикальне зміщення тексту.
Анімація тексту з ефектом появи та зникнення
Щоб текст з'являвся і зникав, можна змінювати його прозорість залежно від часу. Для цього у MoviePy використовується метод fadein() та fadeout().
Плавна поява і зникнення тексту
# Текст з ефектом плавної появи та зникнення
text = TextClip("Текст, що з'являється", fontsize=40, color='blue')
text = text.set_position(('center', 'bottom')).set_duration(5).fadein(1).fadeout(1)
final_video = CompositeVideoClip([video, text])
final_video.write_videofile("video_with_fade_text.mp4", fps=24)
Тут:
fadein(1)таfadeout(1)додають плавну появу тексту на початку та зникнення наприкінці протягом 1 секунди.
2. Вставка графічних елементів
Додавання зображень і анімація їх руху
Крім тексту, MoviePy дозволяє додавати зображення на відео за допомогою класу ImageClip. Ви можете анімувати зображення, задавши його траєкторію та змінюючи позицію за допомогою set_position().
Анімація логотипу, що рухається знизу вгору
from moviepy.editor import VideoFileClip, ImageClip
# Завантаження відео і зображення
video = VideoFileClip("sample_video.mp4")
logo = ImageClip("logo.png").set_duration(5)
# Анімація логотипу — рух знизу вгору
logo = logo.set_position(lambda t: ('center', int(500 - 100 * t)))
# Накладання логотипу на відео
final_video = CompositeVideoClip([video, logo])
final_video.write_videofile("video_with_moving_logo.mp4", fps=24)
Тут:
ImageClip("logo.png").set_duration(5)завантажує зображення логотипу і встановлює його тривалість.set_position(lambda t: ('center', int(500 - 100 * t)))змушує логотип рухатися знизу вгору по вертикалі.
Поява зображення із збільшенням масштабу
Ще один ефект, який можна створити — це поява зображення з поступовим збільшенням розміру.
# Завантаження зображення
logo = ImageClip("logo.png").set_duration(5)
# Налаштування масштабу зображення для ефекту збільшення
logo = logo.resize(lambda t: 1 + 0.5 * t) # Збільшення масштабу
logo = logo.set_position(('center', 'center'))
# Накладання логотипу з анімацією масштабу на відео
final_video = CompositeVideoClip([video, logo])
final_video.write_videofile("video_with_zoom_in_logo.mp4", fps=24)
Тут:
logo.resize(lambda t: 1 + 0.5 * t)збільшує масштаб логотипу на 50% кожну секунду, створюючи ефект наближення.
3. Комбінування декількох анімованих елементів
MoviePy дозволяє комбінувати декілька анімованих елементів на одному відео. Наприклад, можна одночасно додати текст, що рухається по горизонталі, і зображення, що переміщується по вертикалі.
Одночасна анімація тексту і зображення
# Створення тексту, що рухається по горизонталі
text = TextClip("Текст і зображення", fontsize=40, color='red')
text = text.set_position(lambda t: (int(200 * t), 50)).set_duration(5)
# Анімація логотипу знизу вгору
logo = ImageClip("logo.png").set_duration(5)
logo = logo.set_position(lambda t: ('center', int(500 - 100 * t)))
# Накладання тексту і логотипу на відео
final_video = CompositeVideoClip([video, text, logo])
final_video.write_videofile("video_with_text_and_logo.mp4", fps=24)
Тут:
- Ми створюємо анімацію тексту, що рухається зліва направо, і логотипу, який рухається знизу вгору.
CompositeVideoClip([video, text, logo])накладає обидва анімовані елементи на основне відео.
Створення анімації тексту і графіки в одному відео
У цьому прикладі ми створимо повний відеокліп, де текст буде рухатися по діагоналі, логотип плавно з'являтиметься і збільшуватиметься у масштабі.
from moviepy.editor import VideoFileClip, TextClip, ImageClip, CompositeVideoClip
# Завантаження відео
video = VideoFileClip("sample_video.mp4")
# Текст, що рухається по діагоналі
text = TextClip("Анімований текст", fontsize=40, color='yellow')
text = text.set_position(lambda t: (int(100 + 50 * t), int(100 + 30 * t))).set_duration(5)
# Логотип, що збільшується у масштабі і плавно з'являється
logo = ImageClip("logo.png").set_duration(5)
logo = logo.resize(lambda t: 1 + 0.5 * t).fadein(1)
# Накладання тексту і логотипу на відео
final_video = CompositeVideoClip([video, text, logo])
final_video.write_videofile("animated_text_and_logo.mp4", fps=24)
Помилки, на які варто звернути увагу
Інколи текст або графіка можуть не відображатися так, як ви очікуєте. Це може бути пов'язано з неправильним зазначенням часу або позиції. Перевіряйте логічні вирази, які ви використовуєте, і не забувайте про відладку коду.
Інше часте питання — чому моє відео не зберігається у потрібному форматі? Упевніться, що у вас встановлені необхідні кодеки для експорту відео. MoviePy робить це простіше, але інколи можуть виникнути проблеми з сумісністю, які найлегше вирішити встановленням додаткових бібліотек.
На цьому наш урок завершується. Тепер ви вмієте не лише додавати текст і графіку в відео, але й робити їх динамічними і живими. У наступних лекціях вас очікують нові захопливі техніки, тож залишайтеся з нами і продовжуйте розвивати свої навички!
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ