Spaces:
Running
on
Zero
Running
on
Zero
# -*- coding: utf-8 -*- | |
""" | |
THis is the main file for the gradio web demo. It uses the CogVideoX-5B model to generate videos gradio web demo. | |
set environment variable OPENAI_API_KEY to use the OpenAI API to enhance the prompt. | |
Usage: | |
OpenAI_API_KEY=your_openai_api_key OPENAI_BASE_URL=https://api.openai.com/v1 python inference/gradio_web_demo.py | |
""" | |
import logging | |
import math | |
import os | |
import sys | |
from fastapi.responses import PlainTextResponse | |
from PIL import Image | |
from huggingface_hub.utils.tqdm import progress_bar_states | |
from numpy import ndarray | |
current_dir = os.path.abspath(os.path.dirname(__file__)) | |
sys.path.append(os.path.join(current_dir, '../')) | |
import random | |
import threading | |
import time | |
import cv2 | |
import tempfile | |
import imageio_ffmpeg | |
import gradio as gr | |
from datetime import datetime, timedelta | |
os.makedirs("./output", exist_ok=True) | |
os.makedirs("./input", exist_ok=True) | |
os.makedirs("./gradio_tmp", exist_ok=True) | |
def delete_old_files(): | |
while True: | |
now = datetime.now() | |
cutoff = now - timedelta(minutes=10) | |
directories = ["./output", "./gradio_tmp"] | |
for directory in directories: | |
for filename in os.listdir(directory): | |
file_path = os.path.join(directory, filename) | |
if os.path.isfile(file_path): | |
file_mtime = datetime.fromtimestamp(os.path.getmtime(file_path)) | |
if file_mtime < cutoff: | |
os.remove(file_path) | |
time.sleep(600) | |
threading.Thread(target=delete_old_files, daemon=True).start() | |
class DEMO: | |
def __init__(self,generate): | |
with gr.Blocks() as self.demo: | |
gr.Markdown(""" | |
<div style="text-align: center; font-size: 32px; font-weight: bold; margin-bottom: 20px;"> | |
AniSora-Bilibiliε¨η»θ§ι’ηζ樑ε | |
</div> | |
""") | |
with gr.Row(): | |
with gr.Column(): | |
with gr.Accordion("I2V: Image Input (cannot be used simultaneously with video input)", open=True): | |
image_input = gr.Image(label="Input Image") | |
prompt = gr.Textbox(label="Prompt (Less than 200 Words)", placeholder="Enter your prompt here", lines=5) | |
nf = gr.Slider(label="η§ζ°", minimum=3,maximum=5, step=0.5, value=5) | |
speed = gr.Radio(label="ε ι樑εΌ",value='ε ιη',choices=['εη','ε ιη']) | |
with gr.Group(): | |
with gr.Column(): | |
with gr.Row(): | |
seed_param = gr.Number( | |
label="Inference Seed (Enter a positive number, -1 for random)", value=233 | |
) | |
generate_button = gr.Button("π¬ Generate Video") | |
with gr.Column(): | |
video_output = gr.Video(label="Generated Video") | |
with gr.Row(): | |
download_video_button = gr.File(label="π₯ Download Video", visible=False) | |
seed_text = gr.Number(label="Seed Used for Video Generation", visible=False) | |
generate_button.click( | |
generate, | |
inputs=[prompt, image_input,seed_param,nf,speed], | |
outputs=[video_output, download_video_button, seed_text], | |
) | |
if __name__ == "__main__": | |
from fastapi import FastAPI | |
import uvicorn | |
app = FastAPI() | |
def health(): | |
return "" | |
demoo=DEMO() | |
demo=demoo.demo | |
demo.queue(max_size=15) | |
app = gr.mount_gradio_app(app,demo, path="/api/adhoc/ttv/demo") | |
uvicorn.run(app,host="0.0.0.0",port=26780)# | |
# demo.launch(server_name="0.0.0.0",server_port=16780) |