Статья Автор: Деникина Наталья Владимировна

Создание MP4 - видео файла с анимацией

Создание MP4 - видео файла с анимацией

Как вы знаете из предыдущих уроков, видео при чтении представляет собой набор картинок, а значит создать видео можно тоже из набора изображений.



Разберем пример кода, который создает видео файл формата mp4.
import numpy as np
import cv2


# Параметры видео
width, height = 600, 600
num_frames = 300


filename = 'moving_circle.mp4'

# Создаем объект записи видео
fourcc = cv2.VideoWriter_fourcc(*'mp4v')
fps = 20
out = cv2.VideoWriter(filename, fourcc, fps, (width, height))


for i in range(num_frames):
    frame = np.zeros((height, width, 3), dtype=np.uint8)
    x_position = int(600 * (i / num_frames))
    y_position = 300 
    cv2.circle(frame, (x_position, y_position), 30, (0, 255, 0), -1)
    out.write(frame)
out.release()


cap = cv2.VideoCapture(filename)

while cap.isOpened():
    read_ok, frame = cap.read()
    if not read_ok:
        break
    cv2.imshow('Moving circle', frame)
    if cv2.waitKey(50) == 27:
        break

cap.release()
cv2.destroyAllWindows()

Цикл for создает изображения с кругом, каждый раз в новом месте с небольшим смещением. С ним, все достаточно просто, а вот с функциями для записи видео разберемся подробнее:
fourcc = cv2.VideoWriter_fourcc(*'mp4v')
fps = 20
out = cv2.VideoWriter(filename, fourcc, fps, (width, height))
  • fourcc = cv2.VideoWriter_fourcc(*'mp4v'):

    • fourcc (Four Character Code) — это кодек, который определяет формат видео. В данном случае используется кодек mp4v, что соответствует формату MP4.
  • out = cv2.VideoWriter('wave_effect.mp4', fourcc, fps, (width, height)):

    • Создается объект VideoWriter для записи видеофайла. Аргументы:
      • 'wave_effect.mp4': Имя выходного файла.
      • fourcc: Кодек для записи.
      • fps: Частота кадров (20 кадров в секунду).
      • (width, height): Размер кадра.
  • Запись каждого кадра в видеофайл:
    • out.write(frame): Записывает текущий кадр frame в видеофайл.
  • Освобождение ресурсов после завершения записи:
    • out.release():Освобождает объект VideoWriter и завершает запись видео.
Пропустить Навигационные Ссылки.
Чтобы оставить комментарий нужна авторизация
Печать