AI Video Effects
AI Video Effects
- AI Video Effects 是一款先进的视频变换引擎,使用 AI 为用户提交的图片应用高级风格化、修复和动画效果。
Features(功能)
- AI Video Effects 通过基于提示词的控制或预训练效果类型,实现流畅的视频增强与变换。
Key Features(主要功能)
- 提示词驱动的视频效果:使用自然语言提示词应用旋转、动物、刺客或愤怒等效果。
- 预训练效果库:从不断增长的内置效果中选择,例如 VHS Footage、Samurai It、Film Noir、Inflate It 等。
- 帧一致性:保持帧与帧之间的时间一致性,输出流畅且不闪烁。
- 快速推理:针对高速推理设计,短片通常可在 2 分钟内完成。
- 灵活的输入支持:支持 MP4、MOV、WebM 等多种输入格式。
- 云端或本地部署:可以通过 API 使用,也可以部署到私有环境。
Limitations(限制)
- 创意用途为主:模型针对艺术和娱乐使用场景调优,不用于真实世界的视频事实修复。
- 效果差异:某些效果对特定视频类型的影响可能较弱,例如低光或快速移动的场景。
- 片段时长:面向 10 秒以内的短内容;长视频可能需要预处理或分段。
- 提示词歧义:含糊或相互矛盾的提示词可能产生不可预测的结果。
Out-of-Scope Use(禁止用途)
-
AI Video Effects 不得用于违反适用法律或道德准则的场景,包括但不限于:
- 在未经同意的情况下生成用于冒充真实个人的深度伪造内容。
- 以欺骗为目的制作或传播虚假信息或被操纵的媒体。
- 生成非自愿或具有剥削性的视觉内容。
- 对涉及未成年人的内容应用可能被视为有害或具有剥削性的效果。
- 使用 AI 生成的视频进行骚扰、威胁或有组织的滥用活动。
- 制作意图煽动暴力、仇恨或歧视的视频输出。
- 规避知识产权,或制作关于品牌、公众人物的误导性呈现。
Authentication(身份验证)
- 身份验证详情请参阅身份验证指南。
API Endpoints(API 端点)
Submit Task & Query Result(提交任务与查询结果)
-
cURL
# Submit Task curl --location --request POST 'https://api.muapi.ai/api/v1/generate_wan_ai_effects' \ --header "Content-Type: application/json" \ --header "x-api-key: {MUAPIAPP_API_KEY}" \ --data-raw '{ "prompt": "a cute kitten", "image_url": "https://example.com/kitten.jpg", "name": "Cakeify", "aspect_ratio": "16:9", "resolution": "480p", "quality": "medium", "duration": 5 }' # Poll for results curl --location --request GET "https://api.muapi.ai/api/v1/predictions/${request_id}/result" \ --header "x-api-key: {MUAPIAPP_API_KEY}" -
Python
import os import requests import json import time from dotenv import load_dotenv load_dotenv() def main(): print("Hello from MuApiApp!") API_KEY = os.getenv("MUAPIAPP_API_KEY") print(f"API_KEY: {API_KEY}") url = "https://api.muapi.ai/api/v1/generate_wan_ai_effects" headers = { "Content-Type": "application/json", "x-api-key": f"{API_KEY}", } payload = { "prompt": "a cute kitten", "image_url": "https://d3adwkbyhxyrtq.cloudfront.net/ai-images/186/902675646946/c0951838-8bc5-4598-8e8e-941df16446fa.jpg", "name": "Cakeify", "aspect_ratio": "16:9", "resolution": "480p", "quality": "medium", "duration": 5 } begin = time.time() response = requests.post(url, headers=headers, data=json.dumps(payload)) if response.status_code == 200: result = response.json() request_id = result["data"]["request_id"] print(f"Task submitted successfully. Request ID: {request_id}") else: print(f"Error: {response.status_code}, {response.text}") return url = f"https://api.muapi.ai/api/v1/predictions/{request_id}/result" headers = {"x-api-key": f"{API_KEY}"} while True: response = requests.get(url, headers=headers) if response.status_code == 200: result = response.json() status = result["data"]["status"] if status == "completed": end = time.time() print(f"Task completed in {end - begin} seconds.") url = result["video"]["url"] print(f"Task completed. URL: {url}") break elif status == "failed": print(f"Task failed: {result.get('error')}") break else: print(f"Task still processing. Status: {status}") else: print(f"Error: {response.status_code}, {response.text}") break time.sleep(0.5) if __name__ == "__main__": main() -
JavaScript
require('dotenv').config(); const axios = require('axios'); async function main() { console.log("Hello from MuApiApp!"); const API_KEY = process.env.MUAPIAPP_API_KEY; console.log(`API_KEY: ${API_KEY}`); const url = 'https://api.muapi.ai/api/v1/generate_wan_ai_effects'; const headers = { 'Content-Type': 'application/json', 'x-api-key': `${API_KEY}`, }; const payload = { prompt: 'a cute kitten', image_url: 'https://d3adwkbyhxyrtq.cloudfront.net/ai-images/186/902675646946/c0951838-8bc5-4598-8e8e-941df16446fa.jpg', name: 'Cakeify', aspect_ratio: '16:9', resolution: '480p', quality: 'medium', duration: 5, }; try { const begin = Date.now(); const response = await axios.post(url, payload, { headers }); if (response.status === 200) { const requestId = response.data.data.request_id; console.log(`Task submitted successfully. Request ID: ${requestId}`); const resultUrl = `https://api.muapi.ai/api/v1/predictions/${request_id}/result`; const pollHeaders = { x-api-key: `${API_KEY}` }; while (true) { const pollResponse = await axios.get(resultUrl, { headers: pollHeaders }); if (pollResponse.status === 200) { const status = pollResponse.data.data.status; if (status === 'completed') { const end = Date.now(); console.log(`Task completed in ${(end - begin) / 1000} seconds.`); const videoUrl = pollResponse.data.video.url; console.log(`Task completed. URL: ${videoUrl}`); break; } else if (status === 'failed') { console.log(`Task failed: ${pollResponse.data.error}`); break; } else { console.log(`Task still processing. Status: ${status}`); } } else { console.log(`Error: ${pollResponse.status}, ${pollResponse.statusText}`); break; } await new Promise(resolve => setTimeout(resolve, 500)); } } else { console.log(`Error: ${response.status}, ${response.statusText}`); } } catch (error) { console.error(`Request failed: ${error.message}`); } } main();
Parameters(参数)
Task Submission Parameters(任务提交参数)
Request Parameters(请求参数)
| 参数 | 类型 | 必填 | 默认值 | 范围 | 说明 |
|---|---|---|---|---|---|
| prompt | string | 是 | "" | - | 生成输出所使用的提示词。 |
| image_url | string | 是 | "" | - | 用于生成输出的图片。 |
| name | string | 是 | "" | - | 任务或输出文件的自定义名称。 |
| aspect_ratio | string | 否 | 16:9 | 1:1、9:16、16:9 | 输出视频的宽高比。 |
| resolution | string | 否 | 480p | 480p、720p | 输出视频的分辨率。 |
| quality | string | 否 | medium | medium、high | 控制整体视频质量,也会影响渲染时间。 |
| duration | number | 否 | 5 | 5 ~ 10 | 生成视频的时长,单位为秒。 |
Response Parameters(响应参数)
| 参数 | 类型 | 说明 |
|---|---|---|
| code | integer | HTTP 状态码,例如成功时为 200。 |
| message | string | 状态消息,例如 success。 |
| id | string | 生成任务的唯一标识符。 |
| outputs | array of strings | 指向生成视频输出的 URL。 |
| urls.get | string | 通过任务 ID 获取结果的 API URL。 |
| has_nsfw_contents | array of booleans | 指示输出是否包含 NSFW 内容。 |
| status | string | 任务状态:completed、failed 或 processing。 |
| created_at | string(timestamp) | 任务创建时间的 ISO 时间戳。 |
| error | string | 任务失败时的错误信息;成功时为空。 |
| executionTime | number(milliseconds) | 任务完成所用的总时间,单位为毫秒。 |
| timings.inference | number(milliseconds) | 模型推理所用时间,单位为毫秒。 |
Result Query Parameters(结果查询参数)
Result Request Parameters(结果请求参数)
| 参数 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
| id | string | 是 | - | 任务 ID |
Result Response Parameters(结果响应参数)
| 参数 | 类型 | 说明 |
|---|---|---|
| code | integer | HTTP 状态码,例如成功时为 200。 |
| message | string | 状态消息,例如 success。 |
| id | string | 生成任务的唯一标识符。 |
| outputs | array of strings | 指向生成视频输出的 URL。 |
| urls.get | string | 通过任务 ID 获取结果的 API URL。 |
| has_nsfw_contents | array of booleans | 指示输出是否包含 NSFW 内容。 |
| status | string | 任务状态:completed、failed 或 processing。 |
| created_at | string(timestamp) | 任务创建时间的 ISO 时间戳。 |
| error | string | 任务失败时的错误信息;成功时为空。 |
| executionTime | number(milliseconds) | 任务完成所用的总时间,单位为毫秒。 |
| timings.inference | number(milliseconds) | 模型推理所用时间,单位为毫秒。 |