【狂飙全模态】狂飙AGI-智能视频生成助手

狂飙AGI-智能视频生成助手

一、项目展示

二、环境准备

1 阿里云百炼API Key获取
1.1 登录官网

官网网址https://bailian.console.aliyun.com

1.2 添加新的API Key
1.3 点击复制API Key(备用)
2 虚拟环境配置
2.1 创建虚拟环境
shell 复制代码
conda create -n KBAGI python=3.10
2.2 安装依赖包
bash 复制代码
pip install gradio openai dashscope http requests time

三、代码实现

3.1 导入依赖包
python 复制代码
import gradio as gr
import dashscope
from dashscope import VideoSynthesis
from http import HTTPStatus
import requests
import time
3.2 设置API Key
python 复制代码
DASHSCOPE_API_KEY = "XXXXXXXXXX【替换为1.3复制的API Key】XXXXXXXXXXXXXX"

# 初始化DashScope客户端
dashscope.api_key = DASHSCOPE_API_KEY
3.3 定义视频生成函数
python 复制代码
def generate_video(prompt, size="1920*1080", model="wan2.2-t2v-plus"):
    """
    根据文本提示生成视频
    
    Args:
        prompt (str): 视频内容描述
        size (str): 视频分辨率,默认为1920*1080
        model (str): 使用的模型,默认为wan2.2-t2v-plus
    
    Returns:
        str: 视频URL或错误信息
    """
    if not prompt.strip():
        return None, "请输入视频内容描述"

    try:
        # 调用DashScope视频生成API
        rsp = VideoSynthesis.call(
            model=model,
            prompt=prompt,
            size=size
        )

        if rsp.status_code == HTTPStatus.OK:
            video_url = rsp.output.video_url
            # 下载视频文件
            video_filename = f"generated_video_{int(time.time())}.mp4"
            response = requests.get(video_url)

            if response.status_code == 200:
                with open(video_filename, "wb") as f:
                    f.write(response.content)
                return video_filename, "视频生成成功!"
            else:
                return None, f"视频下载失败,状态码: {response.status_code}"
        else:
            return None, f"视频生成失败: {rsp.message}"

    except Exception as e:
        return None, f"视频生成过程中发生错误: {str(e)}"
3.4 Gradio界面构建
python 复制代码
# Gradio界面
with gr.Blocks(title="狂飙AGI-智能视频生成助手") as demo:
    gr.Markdown("# 🌟狂飙AGI-智能视频生成助手")
    gr.Markdown("基于WanX的智能视频生成工具")

    with gr.Row():
        with gr.Column():
            prompt_input = gr.Textbox(
                label="视频内容描述",
                placeholder="请输入要生成的视频内容描述,例如:一只小猫在月光下奔跑...",
                value="一只小猫在月光下奔跑...",
                lines=5
            )

            with gr.Row():
                size_dropdown = gr.Dropdown(
                    choices=["1920*1080", "1280*720", "1024*1024", "720*1280", "1080*1920"],
                    value="1920*1080",
                    label="视频分辨率"
                )
                model_dropdown = gr.Dropdown(
                    choices=["wan2.2-t2v-plus"],
                    value="wan2.2-t2v-plus",
                    label="生成模型"
                )

            generate_button = gr.Button("生成视频", variant="primary")
            status_output = gr.Textbox(label="状态信息", interactive=False)

        with gr.Column():
            video_output = gr.Video(label="生成视频")

    generate_button.click(
        generate_video,
        inputs=[prompt_input, size_dropdown, model_dropdown],
        outputs=[video_output, status_output]
    )
3.5 项目完整代码
python 复制代码
import gradio as gr
import dashscope
from dashscope import VideoSynthesis
from http import HTTPStatus
import requests
import time

DASHSCOPE_API_KEY = "XXXXXXXXXX【替换为1.3复制的API Key】XXXXXXXXXXXXXX"

# 初始化DashScope客户端
dashscope.api_key = DASHSCOPE_API_KEY


def generate_video(prompt, size="1920*1080", model="wan2.2-t2v-plus"):
    """
    根据文本提示生成视频
    
    Args:
        prompt (str): 视频内容描述
        size (str): 视频分辨率,默认为1920*1080
        model (str): 使用的模型,默认为wan2.2-t2v-plus
    
    Returns:
        str: 视频URL或错误信息
    """
    if not prompt.strip():
        return None, "请输入视频内容描述"

    try:
        # 调用DashScope视频生成API
        rsp = VideoSynthesis.call(
            model=model,
            prompt=prompt,
            size=size
        )

        if rsp.status_code == HTTPStatus.OK:
            video_url = rsp.output.video_url
            # 下载视频文件
            video_filename = f"generated_video_{int(time.time())}.mp4"
            response = requests.get(video_url)

            if response.status_code == 200:
                with open(video_filename, "wb") as f:
                    f.write(response.content)
                return video_filename, "视频生成成功!"
            else:
                return None, f"视频下载失败,状态码: {response.status_code}"
        else:
            return None, f"视频生成失败: {rsp.message}"

    except Exception as e:
        return None, f"视频生成过程中发生错误: {str(e)}"


# Gradio界面
with gr.Blocks(title="狂飙AGI-智能视频生成助手") as demo:
    gr.Markdown("# 🌟狂飙AGI-智能视频生成助手")
    gr.Markdown("基于WanX的智能视频生成工具")

    with gr.Row():
        with gr.Column():
            prompt_input = gr.Textbox(
                label="视频内容描述",
                placeholder="请输入要生成的视频内容描述,例如:一只小猫在月光下奔跑...",
                value="一只小猫在月光下奔跑...",
                lines=5
            )

            with gr.Row():
                size_dropdown = gr.Dropdown(
                    choices=["1920*1080", "1280*720", "1024*1024", "720*1280", "1080*1920"],
                    value="1920*1080",
                    label="视频分辨率"
                )
                model_dropdown = gr.Dropdown(
                    choices=["wan2.2-t2v-plus"],
                    value="wan2.2-t2v-plus",
                    label="生成模型"
                )

            generate_button = gr.Button("生成视频", variant="primary")
            status_output = gr.Textbox(label="状态信息", interactive=False)

        with gr.Column():
            video_output = gr.Video(label="生成视频")

    generate_button.click(
        generate_video,
        inputs=[prompt_input, size_dropdown, model_dropdown],
        outputs=[video_output, status_output]
    )

if __name__ == "__main__":
    demo.launch()

四、效果展示

相关推荐
桦说编程3 小时前
我让 AI 加了一个开关,结果代码走了原本不该走的分支
人工智能·代码规范
fly spider3 小时前
AI 到底是怎么访问网页的?从爬虫、Browser Agent 到 Computer Use
人工智能·爬虫
阿里巴巴淘系技术团队官网博客3 小时前
TLiveOmni 1.0: 直播视频多模态理解大模型
音视频
Lee川3 小时前
RAG 实战:从一篇掘金文章出发,拆解检索增强生成的全链路
前端·人工智能·后端
码农小旋风3 小时前
Codex小白入门使用教程
人工智能·chatgpt·claude
Lee川3 小时前
MCP 高德地图实战:当 AI 学会使用工具,一个协议如何重塑大模型的行动边界
前端·人工智能·后端
凌杰3 小时前
AI 学习笔记:Agent 的应用演示
人工智能
程序员cxuan4 小时前
Codex 把我家烂网给优化后,我 TM 直接原地起飞了。
人工智能·后端·程序员
IT_陈寒4 小时前
Redis批量删除踩了坑,原来DEL命令不是万能的
前端·人工智能·后端
xinhuanjieyi4 小时前
gpt-sovits测试语音克隆
人工智能·gpt