¿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_count
en 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("-----------------###-----------------")