VFX

VFX

  • VFX 模型可以为视频或图像添加电影化、高冲击力的视觉特效。它通过 AI 合成和运动生成技术,模拟爆炸、解体、悬浮和元素力量等大规模视觉效果。

功能

  • 创作者只需使用简单提示词或预设,即可获得好莱坞风格的视觉特效。系统会利用空间、时间和视觉一致性机制,将效果合成到提供的媒体上。

核心功能

  • AI 驱动的视觉特效: 为静态图像或视频添加爆炸、闪电、龙卷风等动态电影化效果。
  • 预设效果库: 支持建筑爆炸、汽车爆炸等预置效果。
  • 空间感知合成: 使用 AI 推断的对象位置,将效果与主体对齐并自然融合。
  • 时间控制: 自动校准特效时长和过渡时间,提升真实感。
  • 图像输入: 支持静态画面和短视频片段。

限制

  • 效果强度可能有所不同: 某些预设高度依赖主体姿势、位置或光照,才能获得最佳结果。
  • 优先支持单主体: 目前针对包含一个或两个主要视觉主体(例如人物或汽车)的场景进行了优化。
  • 更适合静态背景: 摄像机运动或背景复杂的场景可能降低真实感。
  • 暂不支持精细控制: 用户还不能完全自定义特效的位置、图层关系或路径动画。

不适用的用途

  • VFX 不得用于:

    1. 模拟真实灾难影像,以误导他人或制造恐慌。
    2. 在缺乏背景说明或未经同意的情况下制作伤害、暴力或虐待的视觉内容。
    3. 在敏感场景中修改未成年人的图像。
    4. 制作虚假信息或冒充他人的宣传活动。
    5. 制作宣扬仇恨、极端主义或违法活动的场景。

身份验证

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();
    

参数

任务提交参数

请求参数

参数类型必填默认值范围描述
promptstring""-生成输出的提示词。
image_urlstring""-用于生成输出的图像。
namestring""-任务或输出文件的自定义名称。
aspect_ratiostring16:91:1、9:16、16:9输出视频的画面比例。
resolutionstring480p480p、720p输出视频的分辨率。
qualitystringmediummedium、high控制整体视频质量(会影响渲染时间)。
durationnumber55 ~ 10生成视频的时长(秒)。

响应参数

参数类型描述
codeintegerHTTP 状态码(例如成功时为 200)。
messagestring状态消息(例如“success”)。
idstring生成任务的唯一标识符。
outputsarray of strings指向生成视频输出的 URL。
urls.getstring根据任务 ID 获取结果的 API URL。
has_nsfw_contentsarray of booleans表示输出是否包含 NSFW 内容。
statusstring任务状态:completedfailedprocessing
created_atstring(时间戳)任务创建时间的 ISO 时间戳。
errorstring任务失败时的错误消息;成功时为空。
executionTimenumber(毫秒)完成任务所花费的总时间(毫秒)。
timings.inferencenumber(毫秒)模型推理所花费的时间(毫秒)。

结果查询参数

结果请求参数

参数类型必填默认值描述
idstring-任务 ID

结果响应参数

参数类型描述
codeintegerHTTP 状态码(例如成功时为 200)。
messagestring状态消息(例如“success”)。
idstring生成任务的唯一标识符。
outputsarray of strings指向生成视频输出的 URL。
urls.getstring根据任务 ID 获取结果的 API URL。
has_nsfw_contentsarray of booleans表示输出是否包含 NSFW 内容。
statusstring任务状态:completedfailedprocessing
created_atstring(时间戳)任务创建时间的 ISO 时间戳。
errorstring任务失败时的错误消息;成功时为空。
executionTimenumber(毫秒)完成任务所花费的总时间(毫秒)。
timings.inferencenumber(毫秒)模型推理所花费的时间(毫秒)。
VFX — Muapi Docs