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_countsur 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("-----------------###-----------------")