
# 图生视频
图生视频简单来说，就是让一张静止的图片"动起来"，变成一段视频。MaaS支持模型以及相关参数，请参见[支持模型]。
 #### 支持模型
表1通义万相模型 
| model参数（模型 ID）  | 支持能力 | 输入输出限制                                                                                                                                                                                                                                                                                                                                                                                                                                       | 默认限流    |
|:---|:---|:---|:---|
| Wan2.2-I2V-A14B | 图生视频 | 输入类型：文本+图片 最大输入长度：文本 1000字符；图片 8MB（Base64编码）。 支持输入图片格式：jpg、png、webp、jpeg、bmp 输出视频格式：MP4 支持输入帧率：16、24、30（默认16） 支持输入分辨率：480P、720P 视频输入时长：3s、5s（默认5s） | RPM: 60 |
   
表2三方模型 
| model参数（模型 ID）              | 支持能力 | 输入输出限制                                                                                                                                                                                                                                                                                                                                                 | 默认限流    |
|:---|:---|:---|:---|
| pixverse/pixverse-v6-it2v   | 图生视频 | 输入类型：文本+图片 最大输入限制：文本 5000 字符；图片 20MB，10000px（Base64编码）。 输出视频格式：MP4 输出视频最高分辨率：1080p 输出视频时长：1s～15s，可选。                                                         | RPM: 30 |
| vidu/viduq3-pro_img2video   | 图生视频 | 输入类型：文本+图片 最大输入限制：文本 5000 字符；图片50 MB（Base64编码）。 输出视频格式：MP4 输出视频帧率（fps）：24 输出视频最高分辨率：1080p 输出视频时长：1s～16s，可选。 | RPM: 30 |
| vidu/viduq3-turbo_img2video | 图生视频 | 输入类型：文本+图片 最大输入限制：文本 5000 字符；图片50 MB（Base64编码）。 输出视频格式：MP4 输出视频帧率（fps）：24 输出视频最高分辨率：1080p 输出视频时长：1s～16s，可选。    | RPM: 30 |
   
#### 前提条件
- 已在"模型推理 \> 在线推理 \> 预置服务"页签开通预置服务。详情请见[开通MaaS预置服务](https://support.huaweicloud.com/model-call-maas/model-call-052.html)。
- （可选）如果需要控制服务调用流量，可提前创建自定义接入点（**三方模型暂不支持创建自定义接入点** ），详情请参见[MaaS创建自定义接入点](https://support.huaweicloud.com/model-call-maas/model-call-048.html)。
- 已获取API Key。详情请见[在MaaS管理API Key](https://support.huaweicloud.com/model-call-maas/model-call-049.html)。

- 已获取模型服务的model参数值。详情请见[支持模型]。
 
#### 使用限制
- 任务数据（如任务状态、视频URL等）仅保留24小时，超时后会被自动清除。请您务必及时保存生成的视频。
- 不同模型的限制值不同，具体限制值请以MaaS控制台"在线推理\>预置服务"页面的模型限流列为准。
  - TPM：每分钟处理的Tokens数（输入+输出）。
  
  - RPM：每分钟处理的请求数。
   
- 目前三方服务仅支持个人用户开通。
 
#### API说明
模型调用的完整参数列表请见[通义万相创建图生视频任务](https://support.huaweicloud.com/model-call-maas/model-call-083.html)、[生数科技创建图生视频任务](https://support.huaweicloud.com/model-call-maas/model-call-074.html)以及[爱诗科技创建图生视频任务](https://support.huaweicloud.com/model-call-maas/model-call-080.html)。
#### 输入输出示例
将输入图片作为视频首帧，再根据提示词生成视频。视频呈现丰富的艺术风格及影视级画质。
表3输入输出示例 
| 输入图片                                                                                                | 提示词    | 输出视频                                                                                                                                                                                                                                                                                                                                                                |
|:---|:---|:---|
| ![](https://support.huaweicloud.com/model-call-maas/figure/zh-cn_image_0000002624759388.png "点击放大") | 小猫在散步。 | <video controls="controls" preload="none" id="object13885134282215" class="idp-external-video" src="https://res-video.hc-cdn.cn/cloudbu-site/china/zh-cn/support/maas-video/小猫在散步-图生视频.mp4" title="图生视频示例" poster="https://support.huaweicloud.com/model-call-maas/figure/zh-cn_image_0000002498867568.jpg" style="width:100%;height:auto;max-width:600px"></video> |
   
#### 创建图生视频（通义万相）
此处以使用Wan2.2-I2V-A14B模型通过Python脚本和Curl命令生成视频为例，展示图片生成视频的基本用法。
1. 创建视频生成任务。
- [python]
  ```
  import base64
  import requests
  import json
  #  Base64 编码格式
  def encode_image(image_path):
      with open(image_path, "rb") as image_file:
          return base64.b64encode(image_file.read()).decode("utf-8")
  base64_image = encode_image(r"D:\Pictures\image.jpg") # 图片Base64编码，支持jpg、png、webp、jpeg、bmp。
  if __name__ == '__main__':
      url = "https://api.modelarts-maas.com/v1/video/generations"  # API地址
      api_key = "MAAS_API_KEY"  # 把MAAS_API_KEY替换成已获取的API Key
      # Send request.
      headers = {
          'Content-Type': 'application/json',
          'Authorization': f'Bearer {api_key}'
      }
      data = {
          "model": "Wan2.2-I2V-A14B",  # model参数
          "input": {
              "prompt": "小猫在散步",
              "img_url": f"data:image/jpg;base64,{base64_image}"  # 支持填写图片的Base64编码后的内容或公网可访问的URL地址，支持jpg、png、webp、jpeg、bmp。
          },
          "parameters": {
              "size": "720x1280",  # 参照接口规范，填写相应的分辨率。
              "fps": 16,
              "duration": 5,
              "seed": 0
          }
      }
      response = requests.post(url, headers=headers, data=json.dumps(data), verify=False)
      # Print result.
      print(response.status_code)
      print(response.text)
  ```
  响应示例
  ```
  {
    "task_id": "e0cc914f-66bb-402a-912b-990fa1e4ab42",
  }
  ```
- [Curl]
  请将示例中的"$BASE64_IMAGE"替换为实际的Base64。
  ```
  curl -X POST "https://api.modelarts-maas.com/v1/video/generations" \
    -H "Content-Type: application/json" \
    -H "Authorization: Bearer $MAAS_API_KEY" \
    -d '{
      "model": "Wan2.2-I2V-A14B",
      "input": {
          "prompt": "小猫在散步",
          "img_url": "data:image/jpg;base64,$BASE64_IMAGE"
      },
      "parameters": {
          "size": "720x1280",
          "fps": 16,
          "duration": 5,
          "seed": 0
      }
  }'
  ```
  响应示例
  ```
  {
    "task_id": "e0cc914f-66bb-402a-912b-990fa1e4ab42",
  }
  ```
2. 根据视频生成任务id获取视频。
![](https://support.huaweicloud.com/model-call-maas/public_sys-resources/note_3.0-zh-cn.png)
视频生成为异步接口，您需要先创建视频生成任务，再通过视频生成任务的ID去查询视频生成结果。视频生成过程耗时较长，查询结果时请您耐心等待。
- [Python]
  ```
  import requests 
  import json
  if __name__ == '__main__': 
      url = "https://api.modelarts-maas.com/v1/video/generations/task_id" # API地址。请将task_id替换为实际的ID，您可以通过创建视频生成任务API获取。
      api_key = "MAAS_API_KEY"  # 把yourApiKey替换成已获取的API Key  
      # Send request. 
      headers = { 
          'Content-Type': 'application/json', 
          'Authorization': f'Bearer {api_key}'  
      } 
      response = requests.get(url, headers=headers, verify=False) 
      # Print result. 
      print(response.status_code) 
      print(response.text)
  ```
  **响应示例**
  ```
  {
      "task_id": "e0cc914f-66bb-402a-912b-990fa1e4ab42",
      "status": "succeeded",
      "error": {
          "code": 0,
          "message": ""
      },
      "content": {
          "result_url": "https://example.com/example.mp4"
      },
      "usage": {
          "model_latency": 43564,
          "completion_tokens": 124800,
          "prompt_tokens": 0,
          "total_tokens": 124800
      },
      "created_at": 1751894112234,
      "updated_at": 1751894156753
  }
  ```
- [Curl]
  ```
  curl -X GET 'https://api.modelarts-maas.com/v1/video/generations/task_id' \ 
    -H "Content-Type: application/json" \ 
    -H "Authorization: Bearer $MAAS_API_KEY"
  ```
  **响应示例**
  ```
  {
      "task_id": "e0cc914f-66bb-402a-912b-990fa1e4ab42",
      "status": "succeeded",
      "error": {
          "code": 0,
          "message": ""
      },
      "content": {
          "result_url": "https://example.com/example.mp4"
      },
      "usage": {
          "model_latency": 43564,
          "completion_tokens": 124800,
          "prompt_tokens": 0,
          "total_tokens": 124800
      },
      "created_at": 1751894112234,
      "updated_at": 1751894156753
  }
  ```
#### 创建图生视频（生数科技）
此处以使用ViduQ3-Turbo IT2V模型通过Python脚本和Curl命令生成视频为例，展示图片生成视频的基本用法。
1. 创建视频生成任务。
- [Python]
  ```
  import requests
  import json
  if __name__ == '__main__':
      url = "https://api.modelarts-maas.com/v1/video/generations"  # API地址
      api_key = "MAAS_API_KEY"  # 把 MAAS_API_KEY 替换成已获取的API Key
      # Send request.
      headers = {
          'Content-Type': 'application/json',
          'Authorization': f'Bearer {api_key}'
      }
      data = {
     "model": "vidu/viduq3-turbo_img2video",
     "input": {
    "prompt": "小猫在散步",
    "media": [
      {
     "type": "image_url",
     "url": "https://example.com/image.jpeg"
      }
    ]
     },
     "parameters": {
    "size": "720*1280",
    "duration": 5,
    "audio": True,
    "shot_type": "single"
     }
   }
      response = requests.post(url, headers=headers, data=json.dumps(data), verify=False)
      # Print result.
      print(response.status_code)
      print(response.text)
  ```
  响应示例
  ```
  {
    "task_id": "962939796957712384",
  }
  ```
- [Curl]
  ```
  curl -X POST "https://api.modelarts-maas.com/v1/video/generations" \
    -H "Content-Type: application/json" \
    -H "Authorization: Bearer $MAAS_API_KEY" \
    -d ' {
     "model": "vidu/viduq3-turbo_img2video",
     "input": {
    "prompt": "小猫在散步",
    "media": [
      {
     "type": "image_url",
     "url": "https://example.com/image.jpeg"
      }
    ]
     },
     "parameters": {
    "size": "720*1280",
    "duration": 5,
    "audio": true,
    "shot_type": "single"
     }
   }'
  ```
  响应示例
  ```
  {
    "task_id": "962939796957712384",
  }
  ```
2. 根据视频生成任务id获取视频。
![](https://support.huaweicloud.com/model-call-maas/public_sys-resources/note_3.0-zh-cn.png)
视频生成为异步接口，您需要先创建视频生成任务，再通过视频生成任务的ID去查询视频生成结果。视频生成过程耗时较长，查询结果时请您耐心等待。
- [Python]
  ```
  import requests 
  import json
  if __name__ == '__main__': 
      url = "https://api.modelarts-maas.com/v1/video/generations/task_id" # API地址。请将task_id替换为实际的ID，您可以通过创建视频生成任务API获取。
      api_key = "MAAS_API_KEY"  # 把yourApiKey替换成已获取的API Key  
      # Send request. 
      headers = { 
          'Content-Type': 'application/json', 
          'Authorization': f'Bearer {api_key}'  
      } 
      response = requests.get(url, headers=headers, verify=False) 
      # Print result. 
      print(response.status_code) 
      print(response.text)
  ```
  **响应示例**
  ```
  {
    "task_id" : "962939796957712384",
    "status" : "succeeded",
    "error" : null,
    "content" : {
      "result_url" : "https://example.com/example.mp4"
    },
    "usage" : {
      "duration" : 5,
      "size" : "720*1280",
      "audio" : true,
      "shot_type" : "single"
    },
    "created_at" : 1780281309530,
    "updated_at" : 1780281338634
  }
  ```
- [Curl]
  ```
  curl -X GET 'https://api.modelarts-maas.com/v1/video/generations/task_id' \ 
    -H "Content-Type: application/json" \ 
    -H "Authorization: Bearer $MAAS_API_KEY"
  ```
  **响应示例**
  ```
  {
    "task_id" : "962939796957712384",
    "status" : "succeeded",
    "error" : null,
    "content" : {
      "result_url" : "https://example.com/example.mp4"
    },
    "usage" : {
      "duration" : 5,
      "size" : "720*1280",
      "audio" : true,
      "shot_type" : "single"
    },
    "created_at" : 1780281309530,
    "updated_at" : 1780281338634
  }
  ```
#### 创建图生视频（爱诗科技）
此处以使用PixVerse V6 IT2V模型通过Python脚本和Curl命令生成视频为例，展示图片生成视频的基本用法。
1. 创建视频生成任务。
- [Python]
  ```
  import requests
  import json
  if __name__ == '__main__':
      url = "https://api.modelarts-maas.com/v1/video/generations"  # API地址
      api_key = "MAAS_API_KEY"  # 把 MAAS_API_KEY 替换成已获取的API Key
      # Send request.
      headers = {
          'Content-Type': 'application/json',
          'Authorization': f'Bearer {api_key}'
      }
      data = {
     "model": "pixverse/pixverse-v6-it2v",
     "input": {
    "prompt": "小猫在散步",
    "media": [
      {
     "type": "image_url",
     "url": "https://example.com/image.jpeg"
      }
    ]
     },
     "parameters": {
    "resolution": "720p",
    "duration": 5,
    "audio": False,
    "shot_type": "single"
     }
   }
      response = requests.post(url, headers=headers, data=json.dumps(data), verify=False)
      # Print result.
      print(response.status_code)
      print(response.text)
  ```
  响应示例
  ```
  {
      "task_id": "408911568368321",
      "resolution": "720p",
      "duration": 5,
      "audio": false
  }
  ```
- [Curl]
  ```
  curl -X POST "https://api.modelarts-maas.com/v1/video/generations" \
    -H "Content-Type: application/json" \
    -H "Authorization: Bearer $MAAS_API_KEY" \
    -d ' {
     "model": "pixverse/pixverse-v6-it2v",
     "input": {
    "prompt": "小猫在散步",
    "media": [
      {
     "type": "image_url",
     "url": "https://example.com/image.jpeg"
      }
    ]
     },
     "parameters": {
    "resolution": "720p",
    "duration": 5,
    "audio": false,
    "shot_type": "single"
     }
   }'
  ```
  响应示例
  ```
  {
      "task_id": "408911568368321",
      "resolution": "720p",
      "duration": 5,
      "audio": false
  }
  ```
2. 根据视频生成任务id获取视频。
- [Python]
  ```
  import requests 
  import json
  if __name__ == '__main__': 
      url = "https://api.modelarts-maas.com/v1/video/generations/task_id" # API地址。请将task_id替换为实际的ID，您可以通过创建视频生成任务API获取。
      api_key = "MAAS_API_KEY"  # 把yourApiKey替换成已获取的API Key  
      # Send request. 
      headers = { 
          'Content-Type': 'application/json', 
          'Authorization': f'Bearer {api_key}'  
      } 
      response = requests.get(url, headers=headers, verify=False) 
      # Print result. 
      print(response.status_code) 
      print(response.text)
  ```
  **响应示例**
  ```
  {
      "task_id": "408911568368321",
      "status": "succeeded",
      "error": {
          "code": 0,
          "message": ""
      },
      "content": {
          "result_url": "https://example.com/example.mp4"
      },
      "usage": {
          "duration": 5,
          "audio": false,
          "resolution": "720p"
      },
      "created_at": 1781786206000,
      "updated_at": 1781786264000
  }
  ```
- [Curl]
  ```
  curl -X GET 'https://api.modelarts-maas.com/v1/video/generations/task_id' \ 
    -H "Content-Type: application/json" \ 
    -H "Authorization: Bearer $MAAS_API_KEY"
  ```
  **响应示例**
  ```
  {
      "task_id": "408911568368321",
      "status": "succeeded",
      "error": {
          "code": 0,
          "message": ""
      },
      "content": {
          "result_url": "https://example.com/example.mp4"
      },
      "usage": {
          "duration": 5,
          "audio": false,
          "resolution": "720p"
      },
      "created_at": 1781786206000,
      "updated_at": 1781786264000
  }
  ```
