Comment diviser une vidéo en plusieurs parties en utilisant Python?
Jan 05 2021
Je dois diviser un fichier vidéo de n'importe quelle taille en différentes parties d'une taille maximale de 75 Mo maximum. J'ai trouvé ce code, mais cela ne fonctionne pas:
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)
Réponses
AvenDesta Jan 05 2021 at 07:30
Voici un script que je viens de créer avec MoviePy. Mais au lieu de diviser par taille d'octet, il divise par longueur de vidéo. Donc, si vous réglez divide_into_count
sur 5 et que vous avez une vidéo d'une durée de 22 minutes, vous obtenez des vidéos d'une durée de 5, 5, 5, 5, 2 minutes.
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("-----------------###-----------------")