¿Cómo dividir un video en partes usando Python?

Jan 05 2021

Necesito dividir un archivo de video de cualquier tamaño en varias partes con un tamaño máximo de hasta 75 MB. Encontré este código, pero no funciona:

import cv

capture = cv.CaptureFromFile(filename)
while Condition1:
    # Need a frame to get the output video dimensions
    frame = cv.RetrieveFrame(capture) # Will return None if there are no frames
    # New video file
    video_out = cv.CreateVideoWriter(output_filenameX, CV_FOURCC('M','J','P','G'), capture.fps, frame.size(), 1)
    # Write the frames
    cv.WriteFrame(video_out, frame)
    while Condition2:
        frame = cv.RetrieveFrame(capture) # Will return None if there are no frames
        cv.WriteFrame(video_out, frame)

Respuestas

AvenDesta Jan 05 2021 at 07:30

Aquí hay un guión que acabo de crear usando MoviePy. Pero en lugar de dividir por tamaño de byte, se divide por la duración del video. Entonces, si establece divide_into_counten 5 y tiene un video de 22 minutos de duración, obtendrá videos de 5, 5, 5, 5, 2 minutos de duración.

from moviepy.editor import VideoFileClip
from time import sleep

full_video = "full.mp4"
current_duration = VideoFileClip(full_video).duration
divide_into_count = 5
single_duration = current_duration/divide_into_count
current_video = f"{current_duration}.mp4"

while current_duration > single_duration:
    clip = VideoFileClip(full_video).subclip(current_duration-single_duration, current_duration)
    current_duration -= single_duration
    current_video = f"{current_duration}.mp4"
    clip.to_videofile(current_video, codec="libx264", temp_audiofile='temp-audio.m4a', remove_temp=True, audio_codec='aac')

    print("-----------------###-----------------")