CoolFace
Apppublic

DynamicScene/DynamicGeneration

sourceHugging Faceupdated 2y agoView on Hugging Face
8likes
generate_video.py47 linesDownload Raw Back to root
1from pathlib import Path2import uuid3import pickle as pkl4from dynamic_utils import Sampler, get_layout5from utils import clean_temp_dir, get_scene_data, get_scene_dir_path6from video_utils import Video_Generator7from utils import get_video_path, read_character8 9 10def generate_schedules(scene_file_name, character_files):11    scene_dir = get_scene_dir_path(scene_file_name)12    house_info = get_scene_data(scene_dir)13 14    activity_base_list = []15    character_info_list = []16    schedule_list = []17    for character_file in character_files:18        activity_base, character_info, schedule = read_character(character_file)19        activity_base_list.append(activity_base)20        character_info_list.append(character_info)21        schedule_list.append(schedule)22 23    #set sampler24    sampler = Sampler()25    sampler.set_activity(character_info_list, activity_base_list, schedule_list)26    scene_layout = get_layout(house_info)27    sampler.set_scene_layout(scene_layout)28    schedules, _, _ = sampler.sample()29    return schedules30 31def save_vedio(schedules, scene_id, vedio_path):32    video_generator = Video_Generator()33    video_generator.generate(schedules, scene_id, vedio_path)34 35def generate_video(scene_file_name: str, character_files: list[dict|str|Path], max_try_num: int=5) -> Path:36    for _ in range(max_try_num):37        try:38            schedules = generate_schedules(scene_file_name, character_files)39            clean_temp_dir()40            video_path = get_video_path()41            save_vedio(schedules, scene_file_name, video_path)42            return video_path43        except:44            continue45    return None46 47