Как разделить видео на части по 2 секунды на python?

Пользователь

от hoyt.jerde , в категории: Python , год назад

Как разделить видео на части по 2 секунды на python?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от willis.streich , год назад

@hoyt.jerde 

Для разделения видео на части по 2 секунды на Python можно использовать модуль moviepy и его функционал. Вот пример кода:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
from moviepy.editor import VideoFileClip

def split_video(video_path, duration):
    video = VideoFileClip(video_path)
    video_duration = video.duration
    start_time = 0
    end_time = duration

    parts = []
    while end_time <= video_duration:
        part = video.subclip(start_time, end_time)
        parts.append(part)

        start_time += duration
        end_time += duration

    return parts

# Пример использования
video_path = "путь_к_видеофайлу.mp4"
duration = 2  # Длительность каждой части в секундах

video_parts = split_video(video_path, duration)

# Сохранение каждой части отдельно
for i, part in enumerate(video_parts):
    part.write_videofile(f"часть_{i+1}.mp4")


В этом примере функция split_video разделяет видео на части по 2 секунды и возвращает список отдельных частей видео. Затем каждая часть сохраняется в отдельный видеофайл с помощью функции write_videofile.

Пользователь

от buster , 9 месяцев назад

@hoyt.jerde 

Если использование сторонних библиотек не является вариантом, то можно воспользоваться библиотекой OpenCV для обработки видео. Ниже приведен пример кода на Python, который разделяет видео на части по 2 секунды без использования сторонних библиотек:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
import cv2

def split_video(video_path, duration):
    cap = cv2.VideoCapture(video_path)
    fps = cap.get(cv2.CAP_PROP_FPS)

    frames_to_read = int(fps * duration)
    frame_number = 0

    while cap.isOpened():
        frames = []
        for _ in range(frames_to_read):
            ret, frame = cap.read()
            if not ret:
                break
            frames.append(frame)

        if not frames:
            break

        out = cv2.VideoWriter(f"часть_{frame_number + 1}.mp4", cv2.VideoWriter_fourcc(*'MP4V'), fps, (frames[0].shape[1], frames[0].shape[0]))
        for frame in frames:
            out.write(frame)
        out.release()

        frame_number += 1

    cap.release()

# Пример использования
video_path = "путь_к_видеофайлу.mp4"
duration = 2  # Длительность каждой части в секундах

split_video(video_path, duration)


В этом примере функция split_video разделяет видео на части по 2 секунды, сохраняя каждую часть в отдельный файл.