File size: 3,958 Bytes
667baea
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
# import tempfile
# from moviepy import *

# def combine_video(sample_obj_path):
#     gif1 = VideoFileClip(sample_obj_path+ "/shadow_gif/gt_obj_tranp.gif")
#     gif2 = VideoFileClip(sample_obj_path+ "/shadow_gif/pred_closest_GT_obj_tranp.gif")
#     gif3 = VideoFileClip(sample_obj_path+ "/shadow_gif/pred_far_0_obj_tranp.gif")

#     common_duration = min(gif1.duration, gif2.duration, gif3.duration)
#     gif1 = gif1.subclipped(0, common_duration)
#     gif2 = gif2.subclipped(0, common_duration)
#     gif3 = gif3.subclipped(0, common_duration)
#     print(gif1.duration, gif2.duration, gif3.duration)

#     text1 = TextClip(font = 'Roboto-VariableFont_wdth,wght.ttf', text="Ground Truth", font_size=30, color='black').with_position('center').with_duration(common_duration)
#     text2 = TextClip(font = 'Roboto-VariableFont_wdth,wght.ttf', text="Generated_1", font_size=30, color='black').with_position('center').with_duration(common_duration)
#     text3 = TextClip(font = 'Roboto-VariableFont_wdth,wght.ttf', text="Generated_2", font_size=30, color='black').with_position('center').with_duration(common_duration)

#     gif1_with_text = CompositeVideoClip([gif1, text1.with_position(("center", "top"))])
#     gif2_with_text = CompositeVideoClip([gif2, text2.with_position(("center", "top"))])
#     gif3_with_text = CompositeVideoClip([gif3, text3.with_position(("center", "top"))])

#     combined = clips_array([[gif1_with_text, gif2_with_text, gif3_with_text]])
#     # combined = clips_array([[gif1, gif2, gif3]])

#     target_duration = 2.5
#     original_duration = combined.duration
#     speed_factor = original_duration / target_duration

#     accelerated_video = combined.with_speed_scaled(factor=speed_factor*3)

#     # accelerated_video.write_videofile("combined_video.mp4", fps=60)
#     output_path = tempfile.NamedTemporaryFile(suffix=".gif", delete=False).name
#     accelerated_video.write_gif(output_path, fps=60)
#     return output_path

# if __name__ == "__main__":
#     combine_video("./9622_GRAB/")

import tempfile, os
from moviepy.editor import VideoFileClip, TextClip, CompositeVideoClip, clips_array, vfx

def combine_video(sample_obj_path):
    # os.environ['IMAGEMAGICK_BINARY'] = '/home/stud/yaji/storage/user/yaji/NonisotropicSkeletonDiffusion/magick'
    gif1 = VideoFileClip(sample_obj_path+ "/shadow_gif/gt_obj_tranp.gif")
    gif2 = VideoFileClip(sample_obj_path+ "/shadow_gif/pred_closest_GT_obj_tranp.gif")
    gif3 = VideoFileClip(sample_obj_path+ "/shadow_gif/pred_far_0_obj_tranp.gif")

    common_duration = min(gif1.duration, gif2.duration, gif3.duration)
    gif1 = gif1.subclip(0, common_duration)
    gif2 = gif2.subclip(0, common_duration)
    gif3 = gif3.subclip(0, common_duration)
    print(gif1.duration, gif2.duration, gif3.duration)

    text1 = TextClip("Ground Truth", fontsize=30, color='black').set_position('center').set_duration(common_duration)
    text2 = TextClip("Generated_1", fontsize=30, color='black').set_position('center').set_duration(common_duration)
    text3 = TextClip("Generated_2", fontsize=30, color='black').set_position('center').set_duration(common_duration)

    gif1_with_text = CompositeVideoClip([gif1, text1.set_position(("center", "top"))])
    gif2_with_text = CompositeVideoClip([gif2, text2.set_position(("center", "top"))])
    gif3_with_text = CompositeVideoClip([gif3, text3.set_position(("center", "top"))])

    combined = clips_array([[gif1_with_text, gif2_with_text, gif3_with_text]])
    # combined = clips_array([[gif1, gif2, gif3]])

    target_duration = 2.5
    original_duration = combined.duration
    speed_factor = original_duration / target_duration

    accelerated_video = combined.fx(vfx.speedx, factor=speed_factor)

    output_path = tempfile.NamedTemporaryFile(suffix=".gif", delete=False).name
    accelerated_video.write_gif(output_path, fps=60)
    return output_path

if __name__ == "__main__":
    combine_video("./9622_GRAB/")