MoviePy – редактирование видео

онлайн тренер по питону
Онлайн-тренажер Python 3 для начинающих

Теория без воды. Задачи с автоматической проверкой. Подсказки на русском языке. Работает в любом современном браузере.

начать бесплатно

Введение

Работа с видео традиционно ассоциируется с тяжёлыми инструментами и сложным API. Но в Python существует библиотека, делающая видеоредактирование простым и выразительным — MoviePy. Она позволяет создавать, редактировать, комбинировать и экспортировать видео с минимальным количеством кода.

MoviePy построена поверх FFmpeg и поддерживает множество видео- и аудиоформатов. Библиотека удобна для создания динамических роликов, генерации мемов, программного монтажа, анимации и синхронизации с аудио. В этой статье — полный обзор возможностей MoviePy, от обрезки и фильтров до генерации надписей и работы со звуком.

Основная часть

Установка

pip install moviepy

Дополнительно: убедитесь, что установлен ffmpeg (MoviePy вызывает его под капотом).


Загрузка видео

from moviepy.editor import VideoFileClip
clip = VideoFileClip("video.mp4")

Обрезка видео

clip_cut = clip.subclip(10, 20)  # с 10-й по 20-ю секунду

Изменение размера и FPS

resized = clip.resize(height=480)
fps_changed = clip.set_fps(30)

Добавление текста

from moviepy.editor import TextClip, CompositeVideoClip

text = TextClip("Привет!", fontsize=70, color='white')
text = text.set_position("center").set_duration(5)
final = CompositeVideoClip([clip_cut, text])

Объединение нескольких клипов

from moviepy.editor import concatenate_videoclips
final = concatenate_videoclips([clip1, clip2, clip3])

Анимации: появление, исчезновение, перемещение

text = text.fadein(1).fadeout(1)

Работа со звуком

audio = clip.audio
clip_no_audio = clip.without_audio()
clip_with_new_audio = clip.set_audio(audio_clip)

Извлечение аудио

clip.audio.write_audiofile("sound.mp3")

Создание GIF

clip.subclip(5, 10).resize(0.5).write_gif("funny.gif")

Экспорт финального ролика

final.write_videofile("output.mp4", fps=24)

Использование программно созданных клипов

from moviepy.editor import ColorClip
red = ColorClip(size=(640, 480), color=(255, 0, 0), duration=3)

Работа с масками и прозрачностью

clip = clip.set_opacity(0.5)

Эффекты

  • fadein(duration) / fadeout(duration) — затемнение

  • volumex(factor) — изменение громкости

  • fx() — функция для применения эффектов (например, зеркалирование)

Пример:

from moviepy.video.fx import mirror_x
mirrored = mirror_x(clip)

Сравнение с другими инструментами

Инструмент Поддержка видео Аудио Текст Анимации Уровень кода
MoviePy Да Да Да Да Низкий
OpenCV Да (низкоуровневое) Нет Ограничено Ограничено Средний
FFmpeg (CLI) Да Да Нет Да Высокий

Примеры использования

  • Генерация интро и аутро

  • Создание рекламных роликов

  • Обработка видео с веб-камер

  • Монтирование выпусков подкастов с анимированными подложками

  • Конвертация видео в GIF/MP4

Полный список функций и методов библиотеки MoviePy для Python, сгруппированных по категориям


Загрузка и создание клипов

Функция Описание
VideoFileClip(filename) Загружает видеофайл как объект-клип.
AudioFileClip(filename) Загружает аудиофайл.
ImageClip(filename) Создаёт видео из изображения.
TextClip(txt, font, fontsize, color) Создаёт текстовый клип.
ColorClip(size, color, duration) Генерирует однотонное видео.
CompositeVideoClip(clips) Комбинирует несколько клипов в один (наложение).
concatenate_videoclips(clips) Склеивает клипы друг за другом.
concatenate_audioclips(clips) Объединяет аудио.
ImageSequenceClip(image_list, fps) Создаёт видео из последовательности изображений.

Основные операции с видео

Метод Описание
clip.subclip(t_start, t_end) Вырезает фрагмент видео.
clip.cutout(t_start, t_end) Удаляет фрагмент из клипа.
clip.set_duration(t) Устанавливает длительность клипа.
clip.set_fps(fps) Изменяет FPS.
clip.resize(height=..., width=...) Масштабирует клип.
clip.rotate(angle) Поворачивает клип.
clip.speedx(factor) Ускоряет или замедляет клип.
clip.volumex(factor) Изменяет громкость.
clip.set_audio(audio_clip) Заменяет аудиодорожку.
clip.without_audio() Удаляет звук.
clip.set_position((x, y)) Позиционирует клип в кадре (для композита).

Работа с текстом и изображениями

Метод Описание
TextClip(txt) Создание текста в видео.
text_clip.set_duration(t) Задает длительность отображения текста.
text_clip.set_position(pos) Задает позицию текста ("center", координаты, функции).
text_clip.crossfadein(t) Плавное появление текста.
text_clip.crossfadeout(t) Плавное исчезновение.
clip.set_opacity(alpha) Прозрачность клипа или текста.

Фильтры и эффекты

Метод Описание
clip.fx(vfx.fadein, duration) Плавное появление.
clip.fx(vfx.fadeout, duration) Плавное исчезновение.
clip.fx(vfx.blackwhite) Чёрно-белый фильтр.
clip.fx(vfx.invert_colors) Инвертирует цвета.
clip.fx(vfx.time_mirror) Обратное воспроизведение.
clip.fx(vfx.lum_contrast, lum, contrast) Изменяет яркость и контраст.

Сохранение и экспорт

Метод Описание
clip.write_videofile(filename, fps) Сохраняет видеофайл.
clip.write_gif(filename) Сохраняет клип в формате GIF.
clip.write_images_sequence(folder) Сохраняет кадры как изображения.
clip.audio.write_audiofile(filename) Сохраняет только аудиодорожку.

Получение информации

Атрибут / Метод Описание
clip.duration Длительность клипа (в секундах).
clip.fps Частота кадров.
clip.size Размер кадра (ширина, высота).
clip.reader Доступ к низкоуровневому читателю кадров.
clip.iter_frames() Итератор по кадрам в формате NumPy-массивов.

Пример: нарезка и экспорт видео

python
from moviepy.editor import VideoFileClip clip = VideoFileClip("video.mp4").subclip(10, 20) clip = clip.resize(height=720) clip.write_videofile("output.mp4", fps=24)

Заключение

MoviePy — это мощная и доступная библиотека для видеомонтажа на Python. Она позволяет быстро собирать клипы, добавлять текст, музыку, эффекты и экспортировать в популярные форматы. Подходит как для новичков, так и для автоматизации сложных задач видеопроизводства.