File size: 2,475 Bytes
b257e01
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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


file_path = '/home/lizhikai/webvid_prompt100.txt'
str_list = []
with open(file_path, 'r', encoding='utf-8') as file:
    for line in file:
        str_list.append(line.strip())
        if len(str_list) == 100:
            break

def generate_image_ig_api(prompt, model_name):
    model_source, model_name, model_type = model_name.split("_")
    pipe = load_replicate_model(model_name, model_type)
    result = pipe(prompt=prompt)
    return result
model_names = ['replicate_Zeroscope-v2-xl_text2video',
                    #    'replicate_Damo-Text-to-Video_text2video',
                        'replicate_Animate-Diff_text2video',
                        'replicate_OpenSora_text2video',
                        'replicate_LaVie_text2video',
                        'replicate_VideoCrafter2_text2video',
                        'replicate_Stable-Video-Diffusion_text2video',
                        ]
save_names = []
for name in model_names:
    model_source, model_name, model_type = name.split("_")
    save_names.append(model_name)

for i, prompt in enumerate(str_list):
    print("save the {} prompt".format(i+1))
    # if i+1 < 97:
    #     continue
    with concurrent.futures.ThreadPoolExecutor() as executor:
        futures = [executor.submit(generate_image_ig_api, prompt, model) for model in model_names]
        results = [future.result() for future in futures]

    root_dir = '/mnt/data/lizhikai/ksort_video_cache/'
    save_dir = os.path.join(root_dir, f'cache_{i+1}')
    if not os.path.exists(save_dir):
        os.makedirs(save_dir, exist_ok=True)
    with open(os.path.join(save_dir, "prompt.txt"), 'w', encoding='utf-8') as file:
        file.write(prompt)

    # 下载视频并保存
    repeat_num = 5
    for j, url in enumerate(results):
        while 1:
            time.sleep(1)
            response = requests.get(url, stream=True)
            if response.status_code == 200:
                file_path = os.path.join(save_dir, f'{save_names[j]}.mp4')
                with open(file_path, 'wb') as file:
                    for chunk in response.iter_content(chunk_size=8192):
                        file.write(chunk)
                print(f"视频 {j} 已保存到 {file_path}")
                break
            else:
                repeat_num = repeat_num - 1
                if repeat_num == 0:
                    print(f"视频 {j} 保存失败")
                    # raise ValueError("Video request failed.")
                continue