7def crop_clip(input_video_path, output_video_path, crop_area, time_interval=[0, -1], interver_type='time'):
8 """
9 동영상에서 특정 영역및 시간 범위를 잘라서 저장하는 기능
10 args:
11 input_video_path (str): 입력 동영상 경로
12 output_video_path (str): 동영상을 저장할 경로
13 crop_area (list[int] or tuple) : 동영상에서 잘라낼 영역의 좌상단과 우하단 좌표 (x1, y1, x2, y2)
14 time_interval (list or tuple): 동영상에서 잘라낼 시작 구간과 종료 구간 (시작 구간, 종료 구간)
15 interver_type : time_interval 단위
16 'time' : 초단위, 소수점 입력 가능
17 'frame' : 프레임 단위, 정수로 입력
18 """
19
20
21 clip = VideoFileClip(input_video_path)
22
23
24 start_time, end_time = time_interval
25 if interver_type == 'frame':
26 fps = clip.fps
27 start_time = start_time / fps
28 end_time = end_time / fps
29
30
31 subclip = clip.subclip(start_time, end_time)
32
33
34 cropped_clip = subclip.crop(y1=crop_area[1], y2=crop_area[3], x1=crop_area[0], x2=crop_area[2])
35
36
37 cropped_clip.write_videofile(output_video_path, codec="libx264")
38
39
40 clip.close()
41
42