Найти в Дзене
IT Start | Python

5 программ на Python для работы с видео

В данной статье напишем 5 программ на Python для работы с видео с использованием библиотеки moviepy. Перед написанием кода необходимо установить библиотеку moviepy. Сделать это можно через pip. Для этого нужно перейти в терминал/командную строку, прописать pip install moviepy, нажать Enter и ждать установки. pip install moviepy Напишем код на Python для обрезки видео по времени. Импортируем всё необходимое из moviepy: from moviepy.editor import VideoFileClip Загрузим видео: from moviepy.editor import VideoFileClip # Загрузка видео
clip = VideoFileClip("input_video.mp4") Обрежем видео с 10-й по 20-ю секунду и сохраним: from moviepy.editor import VideoFileClip clip = VideoFileClip("input_video.mp4") # Обрезка видео с 10-й по 20-ю секунду
clip = clip.subclip(10, 20) # Сохранение обрезанного видео
clip.write_videofile("trimmed_video.mp4") В целом, это весь код для обрезки видео. Он обрезает видео с 10-й по 20-ю секунду и сохраняет результат в новый файл. Напишем код на Python для создан
Оглавление

Введение

В данной статье напишем 5 программ на Python для работы с видео с использованием библиотеки moviepy.

Установка moviepy

Перед написанием кода необходимо установить библиотеку moviepy. Сделать это можно через pip. Для этого нужно перейти в терминал/командную строку, прописать pip install moviepy, нажать Enter и ждать установки.

pip install moviepy

Обрезка видео по времени на Python

Напишем код на Python для обрезки видео по времени. Импортируем всё необходимое из moviepy:

from moviepy.editor import VideoFileClip

Загрузим видео:

from moviepy.editor import VideoFileClip

# Загрузка видео
clip = VideoFileClip("input_video.mp4")

Обрежем видео с 10-й по 20-ю секунду и сохраним:

from moviepy.editor import VideoFileClip

clip = VideoFileClip("input_video.mp4")

# Обрезка видео с 10-й по 20-ю секунду
clip = clip.subclip(10, 20)

# Сохранение обрезанного видео
clip.write_videofile("trimmed_video.mp4")

В целом, это весь код для обрезки видео. Он обрезает видео с 10-й по 20-ю секунду и сохраняет результат в новый файл.

Создание слайд-шоу из изображений на Python

Напишем код на Python для создания слайд-шоу, который будет находить все изображения в указанной директории и формировать из них слайд-шоу. Первым делом импортируем всё необходимое из moviepy, а также модуль glob:

from moviepy.editor import ImageClip, concatenate_videoclips
import glob

Создадим функцию search_files(), которая будет находить все файлы определённого расширения в указанной директории.

У функции будет присутствовать два параметра, а именно:

  • directory — путь до директории, из которой необходимо взять изображения для создания слайд-шоу.
  • types — расширения искомых файлов (в нашем случае изображений).

from moviepy.editor import ImageClip, concatenate_videoclips
import glob

# Определение функции для поиска файлов в указанной директории с указанными типами файлов
def search_files(directory, types):
files_grabbed = []
for files in types:
files_grabbed.extend(glob.glob(f'{directory}/{files}'))
return files_grabbed

Теперь вызовем функцию search_files() с указанием директории и расширений:

from moviepy.editor import ImageClip, concatenate_videoclips
import glob

def search_files(directory, types):
files_grabbed = []
for files in types:
files_grabbed.extend(glob.glob(f'{directory}/{files}'))
return files_grabbed

# Вызов функции search_files() для поиска файлов с расширениями '*.png', '*.jpg' и *.jpeg в директории 'images'
image_files = search_files('images', ('*.png', '*.jpg', '*.jpeg'))

Создадим пустой список для сохранения видео-клипов из изображений:

from moviepy.editor import ImageClip, concatenate_videoclips
import glob

def search_files(directory, types):
files_grabbed = []
for files in types:
files_grabbed.extend(glob.glob(f'{directory}/{files}'))
return files_grabbed

image_files = search_files('images', ('*.png', '*.jpg', '*.jpeg'))

# Пустой список для сохранения видео-клипов
video_clips = []

Теперь пройдемся по каждому изображению с помощью цикла for. Внутри цикла каждое изображение будет сначала загружаться, затем изменяться его размер на 1024×1024, создаваться видеоклип продолжительностью 5 секунд с этим изображением, и клип будет добавляться в список video_clips:

from moviepy.editor import ImageClip, concatenate_videoclips
import glob

def search_files(directory, types):
files_grabbed = []
for files in types:
files_grabbed.extend(glob.glob(f'{directory}/{files}'))
return files_grabbed

image_files = search_files('images', ('*.png', '*.jpg', '*.jpeg'))

video_clips = []

# Проходимся по каждому изображению
for image_file in image_files:
# Загружаем изображение
image = ImageClip(image_file)

# Изменяем размер изображения
resized_image = image.resize((1024, 1024))

# Создаём видео-клип с изображением и заданной длительностью
video_clip = image.set_duration(5)

# Добавляем видео-клип в список
video_clips.append(video_clip)

Осталось объединить все полученные видео-клипы в одно слайд-шоу и сохранить:

from moviepy.editor import ImageClip, concatenate_videoclips
import glob

def search_files(directory, types):
files_grabbed = []
for files in types:
files_grabbed.extend(glob.glob(f'{directory}/{files}'))
return files_grabbed

image_files = search_files('images', ('*.png', '*.jpg', '*.jpeg'))

video_clips = []

for image_file in image_files:
image = ImageClip(image_file)

resized_image = image.resize((1024, 1024))

video_clip = image.set_duration(5)

video_clips.append(video_clip)

# Объединяем все видео-клипы в слайд-шоу
slideshow = concatenate_videoclips(video_clips)

# Сохраняем слайд-шоу в видео-файл
slideshow.write_videofile("Слайд-шоу.mp4", fps=24)

Итог

-2

Разделение экранов видео на Python

Напишем интересный код на Python для разделения экранов видео. Для начала импортируем всё необходимое из moviepy:

from moviepy.editor import VideoFileClip, clips_array

Загрузим четыре видео:

from moviepy.editor import VideoFileClip, clips_array

# Загружаем первый видеоклип из файла "v1.mp4",
# берём его подотрезок с 0 по 2 секунды и добавляем границу в 5 пикселей
clip1 = VideoFileClip("v1.mp4").subclip(0, 2).margin(5)
# Загружаем второй видеоклип из файла "v2.mp4",
# берём его подотрезок с 0 по 2 секунды и добавляем границу в 5 пикселей
clip2 = VideoFileClip("v2.mp4").subclip(0, 2).margin(5)
# Загружаем третий видеоклип из файла "v3.mp4",
# берём его подотрезок с 0 по 2 секунды и добавляем границу в 5 пикселей
clip3 = VideoFileClip("v3.mp4").subclip(0, 2).margin(5)
# Загружаем четвертый видеоклип из файла "v4.mp4",
# берём его подотрезок с 0 по 2 секунды и добавляем границу в 5 пикселей
clip4 = VideoFileClip("v4.mp4").subclip(0, 2).margin(5)

Объединим все четыре видео в массив 2×2 и сохраняем:

from moviepy.editor import VideoFileClip, clips_array

clip1 = VideoFileClip("v1.mp4").subclip(0, 2).margin(5)
clip2 = VideoFileClip("v2.mp4").subclip(0, 2).margin(5)
clip3 = VideoFileClip("v3.mp4").subclip(0, 2).margin(5)
clip4 = VideoFileClip("v4.mp4").subclip(0, 2).margin(5)

# Объединяем видеоклипы в массив 2x2 (две строки и два столбца)
combined = clips_array([[clip1, clip2],
[clip3, clip4]])

# Записываем объединенное видео в файл "output.mp4"
combined.write_videofile('output.mp4')

Итог

-3

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

Напишем код для извлечения аудио из видео с сохранением в отдельный файл. Импортируем всё необходимое из moviepy:

from moviepy.editor import VideoFileClip

Загрузим видео:

from moviepy.editor import VideoFileClip

# Загрузка видео
clip = VideoFileClip("video2.mp4")

Извлечём аудио из видео и сохраним:

from moviepy.editor import VideoFileClip

clip = VideoFileClip("video2.mp4")

# Извлечение аудио из видео
audio = clip.audio

# Сохранение аудио в файл
audio.write_audiofile("audio_from_video.mp3")

Преобразование видео в GIF на Python

Последний код, который мы напишем, будет преобразовывать видео в формат GIF. Из moviepy импортируем класс VideoFileClip:

from moviepy.editor import VideoFileClip

Создадим функцию convert_video_to_gif(), которая и будет преобразовывать видео в GIF.

У функции будет присутствовать два параметра, а именно:

  • video_path— путь к исходному видео.
  • gif_path — путь/название к итоговому GIF.

from moviepy.editor import VideoFileClip

def convert_video_to_gif(video_path, gif_path):
# Загрузка видео
video = VideoFileClip(video_path)
# Запись файла GIF из объекта VideoFileClip
video.write_gif(gif_path, fps=60)

Вызовем функцию и передадим в неё пути:

from moviepy.editor import VideoFileClip

def convert_video_to_gif(video_path, gif_path):
video = VideoFileClip(video_path)
video.write_gif(gif_path, fps=60)

# Вызов функции convert_video_to_gif с путями к входному и выходному файлам
convert_video_to_gif("video.mp4", "output.gif")

Заключение

В ходе статьи мы с Вами написали код целых 5 программ на Python для работы с видео. Надеюсь Вам понравилась статья, желаю удачи и успехов! 🙂

Мой Telegram канал

Мой YouTube канал

Мой курс по Python (50 видоуроков + дополнительные уроки)

Курс по созданию телеграм-ботов на Python с фреймворком Aiogram

Курс по созданию GUI на Python