Làm thế nào để chia video thành nhiều phần bằng Python?

Jan 05 2021

Tôi cần chia tệp video có kích thước bất kỳ thành nhiều phần khác nhau có kích thước tối đa lên đến 75 MB. Tôi đã tìm thấy mã này, nhưng nó không hoạt động:

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)

Trả lời

AvenDesta Jan 05 2021 at 07:30

Đây là một tập lệnh tôi vừa tạo bằng MoviePy. Nhưng thay vì chia theo kích thước byte, nó chia theo độ dài video. Vì vậy, nếu bạn đặt divide_into_countthành 5 và bạn có video dài 22 phút, thì bạn sẽ nhận được video có độ dài 5, 5, 5, 5, 2 phút.

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