python 根据时间节点分片

 

 

from cv2 import cv2 as cv2
from PIL import Image
import imagehash
from moviepy.editor import VideoFileClip
 
 
def sliceVideo2(clip,stime,endtime): 
    clip.subclip(stime, endtime).write_videofile(f"SUBCLIP.mp4")

def toSec(value):
    h,m,s,f = value.strip().split(":")
    return int(h) * 3600 + int(m) * 60 + int(s)+int(f)/1000
     

def sliceVideoFull(clip,mytime,name='SUBCLIP',head=False,foot=False): 
    num = 1  
    if head:  
        print(f"BEGIN 第{num}个片段!", 0.0,toSec(mytime[0]))
        clip.subclip(0.0,toSec(mytime[0])).write_videofile(f"{name}-{num}.mp4")
        num = num+1
    for i,value in enumerate(mytime):
        
        if(i==len(mytime)-1):
            continue;
        print(f"BEGIN 第{num}个片段!",toSec(value),toSec( mytime[i+1])) 
        clip.subclip(toSec(value),toSec( mytime[i+1])).write_videofile(f"{name}-{num}.mp4")
        num = num+1
    if foot:
        print(f"BEGIN 第{num}个片段!",toSec(mytime[len(mytime)-1]),clip.duration)
        clip.subclip(toSec(mytime[len(mytime)-1]),clip.duration).write_videofile(f"{name}-{num}.mp4")
    print(f"END 已完成{num}个片段!")
        
 

if __name__ == '__main__':
    # sliceVideo()
    clip = VideoFileClip("H:\\抖音视频项目\\三体\\202109242120(1).mp4")  
    name = '四十分钟讲完三体'
    mytime = ['00:04:19:14',
              '00:08:07:01',
              '00:11:58:10',
              '00:16:54:17',
              '00:21:37:12',
              '00:29:09:29',
              '00:33:12:17',
            ]
    sliceVideoFull(clip,mytime,name,True,True) 
    
 

Guess you like

Origin blog.csdn.net/Allure_LoveU/article/details/120468700