Pixelle-Video API 完全指南:Python SDK 与 HTTP REST 双接口实战

Pixelle-Video API 完全指南:Python SDK 与 HTTP REST 双接口实战 Pixelle-Video API 完全指南Python SDK 与 HTTP REST 双接口实战【免费下载链接】Pixelle-Video AI 全自动短视频引擎 | AI Fully Automated Short Video Engine项目地址: https://gitcode.com/GitHub_Trending/pi/Pixelle-Video导读Pixelle-Video 是一套 AI 全自动短视频生成引擎对外同时暴露 Python SDK 与 HTTP REST API 两种调用方式开发者既可以在 Python 代码中直接驱动端到端视频生成也可以通过 HTTP 接口将生成能力集成进任意语言的服务端。本文以官方 API 参考文档为主线结合仓库内pixelle_video/service.py、api/routers/video.py、api/tasks/manager.py等源码实现系统讲解 SDK 初始化、generate_video()全参数、同步/异步生成端点、任务状态查询与完整请求参数语义读完后你可以直接在自己的项目中接入并跑通第一条 AI 视频生成链路。一、双入口架构概览从仓库结构看Pixelle-Video 的对外能力分为两层对应 docs/en/reference/api-overview.md 的主线Python SDK以PixelleVideoCore为核心门面类统一封装 LLM、TTS、图片/视频生成、模板渲染、流水线调度等全部能力适合在 Python 脚本、服务进程或 Web 后端中直接调用HTTP REST API基于 FastAPI 构建位于api/目录将 SDK 能力封装为一组 REST 端点视频生成、任务管理、文件访问、资源查询等适合跨语言集成与远程调用。两类入口共享同一套底层实现SDK 负责进程内调用REST API 负责跨进程调用二者参数模型高度一致——HTTP 请求体中的字段与 SDKgenerate_video()的关键字参数一一对应掌握一套即可触类旁通。二、Python SDK 使用详解2.1 初始化 PixelleVideoCorePixelleVideoCore是 SDK 的主服务类定义于 pixelle_video/service.py。文档给出的最小用法如下from pixelle_video.service import PixelleVideoCore pixelle PixelleVideoCore() await pixelle.initialize()结合源码可以补充以下几点关键行为配置来源PixelleVideoCore(config_pathconfig.yaml)构造时读取全局配置管理器config_manager的单例即仓库根目录的config.yaml可参照 config.example.yaml 编写LLM、TTS、ComfyUI、模板等能力均由此驱动。初始化内容initialize()会依次装配LLMService、TTSService、APIProviderMediaService、MediaService、FrameProcessor、PersistenceService、HistoryManager等组件并注册三条视频生成流水线standard/custom/asset_based见 pixelle_video/service.py。ComfyUI 懒加载ComfyKit 实例并不在initialize()中创建而是在首次使用时按需创建并通过配置哈希检测配置变更、自动重建实例_get_or_create_comfykit/_compute_comfykit_config_hash支持热更新 ComfyUI 地址与 API Key。资源释放使用完毕可调用await pixelle.cleanup()关闭 ComfyKit 会话类本身也实现了异步上下文管理器__aenter__/__aexit__推荐写法from pixelle_video.service import PixelleVideoCore async with PixelleVideoCore() as pixelle: result await pixelle.generate_video(text如何养成阅读习惯, n_scenes5)另外模块底部还导出了一个全局实例pixelle_video PixelleVideoCore()pixelle_video/service.py可直接from pixelle_video import pixelle_video复用。2.2 generate_video()视频生成主方法generate_video()是 SDK 的核心入口。它实际上是一个支持流水线选择的包装函数见 pixelle_video/service.py签名为generate_video(text, pipelinestandard, **kwargs)最终把参数转发给对应流水线实例执行。原文档列出的参数如下参数类型说明textstr主题或完整脚本modestr生成模式generateAI 生成旁白或fixed原样使用文本n_scenesint场景数量titlestr, optional视频标题tts_workflowstrTTS 工作流media_workflowstr媒体生成工作流图片或视频frame_templatestr视频模板template_paramsdict, optional自定义模板参数bgm_pathstr, optionalBGM 文件路径bgm_volumefloatBGM 音量0.0–1.0结合 api/schemas/video.py 与 pixelle_video/models/storyboard.py 的字段定义实际可用的参数比文档更丰富其中几个高频参数值得展开ref_audiostr, optional参考音频路径用于 TTS 音色克隆voice cloning仅在指定了对应 TTS 工作流时生效。prompt_prefixstr, optional图片风格前缀会拼接到每张生成图片的提示词之前用于统一全片视觉风格如极简黑白火柴人风格插画。min_narration_words/max_narration_wordsint每条旁白的最小/最大字数默认 5 / 20约束 LLM 生成脚本的粒度。min_image_prompt_words/max_image_prompt_wordsint每条图片提示词的最小/最大字数默认 30 / 60。video_fpsint成片帧率默认 30取值范围 15–60。voice_idstr, optional旧版 TTS 音色 ID源码中已标记为废弃deprecated建议改用tts_workflow。返回值VideoResult对象包含video_path视频文件绝对路径、duration时长秒等字段REST 层正是据此构造下载 URL 与文件大小见 api/routers/video.py。2.3 底层执行流程StandardPipeline默认流水线standard定义于 pixelle_video/pipelines/standard.py从类注释与源码可以还原其六步执行链setup_environment创建隔离的任务目录create_task_output_dir并确定最终成片路径generate_contentmodegenerate时由 LLM 依据主题生成n_scenes条旁白modefixed时按行切分脚本split_narration_script为每条旁白生成图片提示词generate_image_prompts逐帧处理TTS 生成音频 → 生成图片/视频素材 → 套用 HTML 模板合成带字幕的帧 → 生成该帧的视频片段拼接全部片段concat后期处理可选叠加 BGMbgm_pathbgm_volume得到最终 mp4。这解释了为什么frame_template是必填项媒体宽高media_width/media_height需要从模板文件的 meta 标签中解析模板路径中的尺寸目录如1080x1920直接决定输出视频分辨率。REST 端点在生成前会通过HTMLFrameGenerator.get_media_size()自动完成这一推断见 api/routers/video.py。三、HTTP REST API 实战3.1 启动 API 服务器原文档给出的启动命令为uv run uvicorn api.app:app --host 0.0.0.0 --port 8000也可以直接运行入口脚本见 api/app.pyuv run python api/app.py --host 0.0.0.0 --port 8000 --reload启动后服务会输出横幅与地址信息。需要注意的几点应用默认挂载在/api前缀下api_config.api_prefix /api健康检查端点GET /health无前缀CORS 默认开启且允许所有来源cors_origins [*]便于前端直接调用服务生命周期由 FastAPIlifespan管理启动时初始化任务管理器关闭时取消所有进行中的任务并释放 Pixelle-Video 资源api/app.py服务端默认任务并发上限为 5、已完成任务保留 24 小时后自动清理每小时清理一次这些参数定义于 api/config.py。3.2 同步生成POST /api/video/generate/sync同步接口适用于成片小于 30 秒的短视频请求会阻塞至视频生成完成。原文档示例{ text: Why you should develop a reading habit, mode: generate, n_scenes: 5, frame_template: 1080x1920/image_default.html, template_params: { accent_color: #3498db, background: https://example.com/custom-bg.jpg }, title: The Power of Reading }curl 调用示例curl -X POST http://localhost:8000/api/video/generate/sync \ -H Content-Type: application/json \ -d { text: Why you should develop a reading habit, mode: generate, n_scenes: 5, frame_template: 1080x1920/image_default.html, template_params: {accent_color: #3498db}, title: The Power of Reading }响应示例VideoGenerateResponse结构{ success: true, message: Success, video_url: http://localhost:8000/api/files/xxx/final.mp4, duration: 45.5, file_size: 12345678 }字段语义来自 api/schemas/video.pysuccess/message调用状态与提示video_url成片访问地址由path_to_url()将输出目录下的文件路径转换为基于当前请求 host 的 URLapi/routers/video.py因此换域名部署时该 URL 会自动跟随请求域名duration视频时长秒file_size文件大小字节。注意源码提示大视频在同步模式下可能超时建议改用异步接口。3.3 异步生成POST /api/video/generate/async异步接口适用于大视频请求立即返回任务 ID后台协程继续执行生成。请求体与同步接口完全一致响应结构VideoGenerateAsyncResponse{ success: true, message: Task created successfully, task_id: abc123 }其执行机制api/routers/video.py为先通过task_manager.create_task()以 UUID 创建video_generation类型任务再把生成协程交给task_manager.execute_task()在后台执行执行成功后将video_url、duration、file_size写入任务结果。3.4 查询任务状态GET /api/tasks/{task_id}轮询该端点即可获得任务进度与结果原文档响应示例{ task_id: abc123, status: completed, result: { video_url: http://localhost:8000/api/files/xxx/final.mp4, duration: 45.5, file_size: 12345678 } }任务状态机定义于 api/tasks/models.py状态含义pending已创建等待执行running正在生成completed已完成result字段携带成片信息failed失败error字段携带错误信息cancelled已被取消任务对象还包含created_at/started_at/completed_at时间戳、request_params原始请求参数以及可选的progress进度对象含current/total/percentage/message便于构建进度条api/tasks/models.py。完整异步调用链官方推荐的 4 步流程见 api/app.py 的 Getting Started 描述# 1. 健康检查 curl http://localhost:8000/health # 2. 提交异步任务 curl -X POST http://localhost:8000/api/video/generate/async \ -H Content-Type: application/json \ -d {text: Why you should develop a reading habit, mode: generate, n_scenes: 5, frame_template: 1080x1920/image_default.html} # {success: true, message: Task created successfully, task_id: abc123} # 3. 轮询任务状态 curl http://localhost:8000/api/tasks/abc123 # {task_id: abc123, status: running, ...} # 4. status 变为 completed 后从 result.video_url 下载成片3.5 任务管理的扩展端点除单任务查询外任务路由还提供了两个配套端点api/routers/tasks.pyGET /api/tasks任务列表支持按status过滤、limit限制条数默认 100最大 1000按创建时间倒序返回DELETE /api/tasks/{task_id}取消 pending/running 状态的任务对已终态任务无效成功返回{success: true, message: Task {task_id} cancelled successfully}。任务数据当前保存在内存中TaskManager的_tasks字典源码注释说明未来可替换为 Redis 等持久化存储因此服务重启后任务记录会清空。四、请求参数总表与取值约束综合原文档参数表与 api/schemas/video.py 的 Pydantic 校验规则完整请求参数如下REST 请求体与 SDK 关键字参数通用参数类型必填说明textstring是主题或完整脚本modestring否generateAI 生成或fixed原文即用默认generaten_scenesint否场景数范围 1–20默认 5仅generate模式生效titlestring否视频标题缺省时自动生成frame_templatestring否模板路径如1080x1920/image_default.html实际为必填用于推导视频尺寸template_paramsobject否自定义模板参数颜色、背景等可用参数取决于模板media_workflowstring否媒体工作流图片或视频生成缺省使用配置默认值tts_workflowstring否TTS 工作流如runninghub/tts_edge.json缺省使用配置默认值ref_audiostring否音色克隆参考音频路径prompt_prefixstring否图片风格前缀bgm_pathstring否BGM 文件路径bgm_volumefloat否BGM 音量 0.0–1.0默认 0.3min_narration_wordsint否单条旁白最小字数范围 1–100默认 5max_narration_wordsint否单条旁白最大字数范围 1–200默认 20min_image_prompt_wordsint否图片提示词最小字数范围 10–100默认 30max_image_prompt_wordsint否图片提示词最大字数范围 10–200默认 60video_fpsint否帧率范围 15–60默认 30voice_idstring否已废弃deprecated旧版音色 ID请改用tts_workflow说明frame_template在 Schema 中标记为可选但两个生成端点的源码都会在缺失时抛出ValueError(frame_template is required to determine media size)因为媒体宽高必须从模板 meta 中解析media_width/media_height不开放给调用方由服务端自动推导。模板可选用例可直接参考 templates/1080x1920竖屏如image_default.html、image_modern.html、video_default.html、templates/1080x1080方形image_minimal_framed.html与 templates/1920x1080横屏image_film.html、image_full.html。五、更多资源与交互式文档Swagger UIhttp://localhost:8000/docs可直接在线调试全部端点POST /api/video/generate/sync、POST /api/video/generate/async、GET /api/tasks/{task_id}等ReDochttp://localhost:8000/redoc面向阅读的 API 文档OpenAPI JSONhttp://localhost:8000/openapi.json可导入 Postman / Apifox 等工具生成客户端根路径GET /返回服务信息与全部 API 分组入口llm / tts / image / content / video / tasks / files / resources / frame见 api/app.py其中frame路由提供模板参数发现能力GET /api/templates/{template_path}/params可用于查询某模板支持的自定义参数能力配置LLM、ComfyUI、直接 API 提供商OpenAI / DashScope / Ark / Kling、默认模板与默认工作流的完整配置示例见 config.example.yaml中文文档中文版 API 参考见 docs/zh/reference/api-overview.md。六、小结Pixelle-Video 的 API 设计强调一套参数、双入口复用Python SDK 通过PixelleVideoCore.generate_video()提供进程内编程接口REST API 则将其包装为同步/异步两套 HTTP 端点配合任务状态轮询与内存任务管理覆盖从几十秒短视频到长视频批量的全场景。接入时只需记住三个核心动作——初始化SDK或启动服务REST、提交生成请求、查询/获取结果其余细节场景拆分、旁白与图片提示词生成、逐帧合成、BGM 混音均由底层StandardPipeline自动完成。【免费下载链接】Pixelle-Video AI 全自动短视频引擎 | AI Fully Automated Short Video Engine项目地址: https://gitcode.com/GitHub_Trending/pi/Pixelle-Video创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考