myTest01 / app.py
Marshalls's picture
Update app.py
ae324f9
raw
history blame
2.19 kB
import os
from pathlib import Path
import tempfile
import gradio as gr
from moviepy.editor import VideoFileClip, AudioFileClip
allowed_medias = [".mp3", ".wav", ".ogg"]
def update(file,dclass):
if dclass == "":
raise gr.Error("请输入舞蹈类型.")
if dappear == "":
raise gr.Error("请输入人物外观.")
file_path = Path(file.name)
info = {}
info["size"] = os.path.getsize(file_path)
info["name"] = file_path.name
print(file_path.name)
file_extension = file_path.suffix
info["type"] = "audio"
audio = AudioFileClip(file.name)
info["duration"] = audio.duration
info["audio_channels"] = audio.nchannels
filename = file_path.name
######
audio.close()
#info为音频信息
videopath="myCoolSong.mp4"
#返回视频
if info["size"] > 100000000:
raise gr.Error(
"Please make sure all files are less than 100MB in size."
)
return videopath
with gr.Blocks() as demo:
gr.Markdown(
"""
# <span style="margin-right: 0.3rem;">🏞</span>音频自动生成舞蹈
上传音频,系统会自动生成对应的舞蹈
""",
elem_id="header",
)
with gr.Row():
with gr.Column():
user_file = gr.File(
file_count="single", label="音频文件", keep_filename=True,
file_types=allowed_medias
)
dclass=gr.Dropdown(["流行", "民族", "混合"], label="舞蹈类型", info="")
dappear=gr.Dropdown(["舞蹈服", "休闲服", "混合"], label="人物外观", info="")
number = gr.Slider(minimum=-0, maximum=20, value=1, step=1,
interactive=True, label="人物数量")
btn = gr.Button("Run", label="Run")
with gr.Column():
generated_video = gr.Video(
interactive=False, label="舞蹈视频", include_audio=True
)
# generated_command = gr.Markdown()
btn.click(
fn=update,
inputs=[user_file, dclass],
outputs=[generated_video]
)
if __name__ == "__main__":
demo.launch()