🎬 Как обрезать видео в Python: простой и эффективный способ

Для обрезки видео в Python используйте библиотеку moviepy.

from moviepy.video.io.ffmpeg_tools import ffmpeg_extract_subclip

def обрезать_видео(входной_файл, начало, конец, выходной_файл):
    ffmpeg_extract_subclip(входной_файл, начало, конец, targetname=выходной_файл)

обрезать_видео('видео.mp4', 10, 30, 'вырезанное_видео.mp4')

В функции обрезать_видео, укажите путь к входному видео, время начала и время конца обрезки в секундах, и путь для сохранения обрезанного видео.

Детальный ответ

Как обрезать видео в Python

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

1. Использование библиотеки MoviePy

Библиотека MoviePy предоставляет простой способ обрезать видео. Вот пример кода, демонстрирующий этот процесс:


from moviepy.video.io.ffmpeg_tools import ffmpeg_extract_subclip

# Устанавливаем временные метки начала и конца обрезанного фрагмента
start_time = 10  # в секундах
end_time = 20  # в секундах

# Обрезаем видео
ffmpeg_extract_subclip("input.mp4", start_time, end_time, targetname="output.mp4")

В приведенном выше примере мы используем функцию `ffmpeg_extract_subclip()` из библиотеки MoviePy для обрезки видеофайла `"input.mp4"`. Мы устанавливаем временные метки начала и конца обрезанного фрагмента и сохраняем обрезанное видео в файл `"output.mp4"`.

2. Использование библиотеки OpenCV

Библиотека OpenCV также предоставляет средства для обрезки видео. Вот пример кода, демонстрирующий использование OpenCV:


import cv2

# Устанавливаем временные метки начала и конца обрезанного фрагмента
start_time = 10  # в миллисекундах
end_time = 20000  # в миллисекундах

# Загружаем видео
video = cv2.VideoCapture("input.mp4")

# Определяем FPS и количество кадров видео
fps = video.get(cv2.CAP_PROP_FPS)
frame_count = video.get(cv2.CAP_PROP_FRAME_COUNT)

# Вычисляем начальный и конечный кадры для обрезанного фрагмента
start_frame = int(start_time * fps)
end_frame = int(end_time * fps)

# Обрезаем видео
output_frames = []

for frame_index in range(start_frame, end_frame):
    video.set(cv2.CAP_PROP_POS_FRAMES, frame_index)
    _, frame = video.read()
    output_frames.append(frame)

# Создаем обрезанное видео
output_video = cv2.VideoWriter("output.mp4",
                               cv2.VideoWriter_fourcc(*"mp4v"),
                               fps,
                               (frame.shape[1], frame.shape[0]))

for frame in output_frames:
    output_video.write(frame)

# Освобождаем ресурсы
video.release()
output_video.release()

В приведенном выше примере мы загружаем видео с помощью функции `cv2.VideoCapture()`, устанавливаем временные метки начала и конца обрезанного фрагмента и проходим по кадрам видео в этом диапазоне. Затем мы записываем каждый обрезанный кадр в список `output_frames` и создаем новый видеофайл `"output.mp4"` с помощью функции `cv2.VideoWriter()`.

3. Использование библиотеки PyAV

Библиотека PyAV - это еще один инструмент, который можно использовать для обрезки видео в Python. Вот пример кода с использованием PyAV:


import av

# Устанавливаем временные метки начала и конца обрезанного фрагмента
start_time = 10  # в секундах
end_time = 20  # в секундах

# Открываем видеофайл
container = av.open("input.mp4")

# Находим видеопоток
video_stream = container.streams.video[0]

# Устанавливаем временные метки начала и конца обрезанного фрагмента
start_pts = int(start_time * video_stream.time_base)
end_pts = int(end_time * video_stream.time_base)

# Создаем новый контейнер для обрезанного видео
output_container = av.open("output.mp4", "w")

# Добавляем видеопоток в новый контейнер
output_stream = output_container.add_stream("h264", video_stream.rate)

# Копируем кадры из исходного видео в обрезанное
for frame in container.decode(video=0):
    if frame.pts >= start_pts:
        if frame.pts >= end_pts:
            break
        output_container.mux(output_stream.encode(frame))

# Закрываем контейнеры
container.close()
output_container.close()

В приведенном выше примере мы открываем видеофайл с помощью `av.open()`, находим видеопоток и устанавливаем временные метки начала и конца обрезанного фрагмента. Затем мы создаем новый контейнер для обрезанного видео с помощью `av.open()`, добавляем видеопоток в новый контейнер и копируем кадры из исходного видеофайла в обрезанное.

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

Видео по теме

#5. Обрезка видео (cropping) | FFmpeg

Монтаж видео на python | Модуль moviepy

Как обрезать видео в программе movavi

Похожие статьи:

🔎 Как преобразовать текст в JSON в Python: пошаговое руководство и примеры кода

Как автоматизировать действия в браузере с помощью Python 🤖

Как я стал Python разработчиком в 35 лет 🐍

🎬 Как обрезать видео в Python: простой и эффективный способ

🔍 Как превратить true в false в Python: полезные советы и примеры кода

🔎 Как найти папку по названию python: простая инструкция с примерами

Что такое встраиваемый пакет Python? Как использовать? 🐍