VFX
VFX
- VFX モデル可以として視频或図像添加电影化、高冲击力的視觉特效。它通过 AI 合成和运動生成技术,模拟爆炸、解体、悬浮和元素力量等大规模視觉效果。
功能
- 創作者只需使用简单提示词或预設,即可获得好莱坞风格的視觉特效。系統会利用空间、時间和視觉一致性機制,将效果合成到提供的媒体上。
核心功能
- AI 驱動的視觉特效: として静态図像或視频添加爆炸、闪电、龙卷风等動态电影化效果。
- 预設效果库: 支持建筑爆炸、汽车爆炸等预置效果。
- 空间感知合成: 使用 AI 推断的对象位置,将效果与主体对齐并自然融合。
- 時间控制: 自動校准特效時長和过渡時间,提升真実感。
- 図像输入: 支持静态画面和短視频片段。
限制
- 效果强度可能有所不同: 某些预設高度依赖主体姿势、位置或光照,才能获得最佳结果。
- 优先支持单主体: 目前针对包含一个或两个主要視觉主体(例如人物或汽车)的场景進行了优化。
- 更适合静态背景: 摄像機运動或背景复杂的场景可能降低真実感。
- 暂不支持精细控制: 用户还不能完全自定义特效的位置、図层関連系或路径動画。
不适用的用途
-
VFX 不得用于:
- 模拟真実灾难影像,以误导他人或制造恐慌。
- 在缺乏背景说明或未経同意的情况下制作伤害、暴力或虐待的視觉内容。
- 在敏感场景中修改未成年人的図像。
- 制作虚假信息或冒充他人的宣传活動。
- 制作宣扬仇恨、极端主义或违法活動的场景。
認証
- 身份验证详情请参阅身份验证指南。
API エンドポイント
提交任务并查询结果
-
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 Mercedes bench car", "image_url": "https://example.com/car.jpg", "name": "Car Explosion", "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 Mercedes bench car", "image_url": "https://d3adwkbyhxyrtq.cloudfront.net/ai-images/186/325013990791/fa5a980c-5c3c-42c3-87a3-578976ffd8a6.jpg", "name": "Car Explosion", "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 Mercedes bench car', image_url: 'https://d3adwkbyhxyrtq.cloudfront.net/ai-images/186/325013990791/fa5a980c-5c3c-42c3-87a3-578976ffd8a6.jpg', name: '3Car Explosion', 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();
パラメータ
任务提交参数
请求参数
| 参数 | 型 | 必須 | 默認值 | 范围 | 説明 |
|---|---|---|---|---|---|
| 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 | 生成視频的時長(秒)。 |
响应参数
| 参数 | 型 | 説明 |
|---|---|---|
| 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(時间戳) | 任务創建時间的 ISO 時间戳。 |
| error | string | 任务失败時的错误消息;成功時として空。 |
| executionTime | number(毫秒) | 完成任务所花费的総時间(毫秒)。 |
| timings.inference | number(毫秒) | モデル推理所花费的時间(毫秒)。 |
结果查询参数
结果请求参数
| 参数 | 型 | 必須 | 默認值 | 説明 |
|---|---|---|---|---|
| id | string | 是 | - | 任务 ID |
结果响应参数
| 参数 | 型 | 説明 |
|---|---|---|
| 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(時间戳) | 任务創建時间的 ISO 時间戳。 |
| error | string | 任务失败時的错误消息;成功時として空。 |
| executionTime | number(毫秒) | 完成任务所花费的総時间(毫秒)。 |
| timings.inference | number(毫秒) | モデル推理所花费的時间(毫秒)。 |