
# 文生视频
文生视频，简单来说就是"通过提示词生成视频"。你只需要输入一段描述性的文字，比如"一只猫在夕阳下的草地上奔跑"，文生视频功能就能自动理解你的意思，并生成一段对应的动态视频画面。
MaaS支持模型以及相关参数，请参见[支持模型]。
 #### 支持模型
表1通义万相模型 
| model参数（模型 ID）  | 支持能力 | 输入输出限制                                                                                                                                                                                                                                                                                                                               | 默认限流    |
|:---|:---|:---|:---|
| Wan2.2-T2V-A14B | 文生视频 | 输入类型：文本 最大输入长度：文本 1000字符 输出视频格式：MP4 支持输入帧率：16、24、30（默认16） 支持输入分辨率：480P、720P 视频输入时长：3s、5s（默认5s） | RPM: 60 |
   
表2三方模型 
| model参数（模型 ID）               | 支持能力 | 输入输出限制                                                                                                                                                                                                                                                                                                                             | 默认限流    |
|:---|:---|:---|:---|
| pixverse/pixverse-v6-t2v     | 文生视频 | 输入类型：文本 最大输入限制：文本 5000 字符 输出视频格式：MP4 输出视频最高分辨率：1080p 输出视频时长：1s～15s，可选。                                                                   | RPM: 30 |
| vidu/viduq3-pro_text2video   | 文生视频 | 输入类型：文本 最大输入限制：文本 5000 字符 输出视频格式：MP4 输出视频帧率（fps）：24 输出视频最高分辨率：1080p 输出视频时长：1s～16s，可选。 | RPM: 30 |
| vidu/viduq3-turbo_text2video | 文生视频 | 输入类型：文本 最大输入限制：文本 5000 字符 输出视频格式：MP4 输出视频帧率（fps）：24 输出视频最高分辨率：1080p 输出视频时长：1s～16s，可选。        | RPM: 30 |
   
#### API说明
模型调用的完整参数列表请见[通义万相创建视频生成任务](https://support.huaweicloud.com/model-call-maas/model-call-070.html)、[生数科技创建文生视频任务](https://support.huaweicloud.com/model-call-maas/model-call-073.html)以及[爱诗科技创建文生视频任务](https://support.huaweicloud.com/model-call-maas/model-call-079.html)。
#### 使用限制
- 任务数据（如任务状态、视频URL等）仅保留24小时，超时后会被自动清除。请您务必及时保存生成的视频。
- 不同模型的限制值不同，具体限制值请以MaaS控制台"在线推理\>预置服务"页面的模型限流列为准。
  - TPM：每分钟处理的Tokens数（输入+输出）。
  
  - RPM：每分钟处理的请求数。
   
- 目前三方服务仅支持个人用户开通。
 
#### 前提条件
- 已在"模型推理 \> 在线推理 \> 预置服务"页签开通预置服务。详情请见[开通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参数值。详情请见[支持模型]。
 
#### 输入输出示例
通过一句话即可生成视频，视频呈现丰富的艺术风格及影视级画质。
表3输入输出示例 
| 输入示例  | 输出视频                                                                                                                                                                                                                                                                                                                                                                |
|:---|:---|
| 小猫在散步 | <video controls="controls" preload="none" id="object1293322614328" 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_0000002498709742.png" style="width:100%;height:auto;max-width:600px"></video> |
   
#### 创建文生视频（通义万相）
此处以使用Wan2.2-T2V-A14B模型通过Python、Curl、Java生成视频为例，展示文本生成视频的基本用法。
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": "Wan2.2-T2V-A14B",  # model参数
          "input": {
              "prompt": "小猫在散步",
          },
          "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]
  ```
  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-T2V-A14B",
      "input": {
          "prompt": "小猫在散步"
      },
      "parameters": {
          "size": "720x1280",
          "fps": 16,
          "duration": 5,
          "seed": 0
      }
  }'
  ```
  响应示例
  ```
  {
    "task_id": "e0cc914f-66bb-402a-912b-990fa1e4ab42",
  }
  ```
- [Java]
  建议JDK版本为15+。
  ```
  import java.net.URI;
  import java.net.http.HttpClient;
  import java.net.http.HttpRequest;
  import java.net.http.HttpResponse;
  import java.time.Duration;
  public class VideoGeneration {
      public static void main(String[] args) {
          // 接口地址
          String apiUrl = "https://api.modelarts-maas.com/v1/video/generations";
          // 把MAAS_API_KEY替换成已获取的API Key
          String apiKey = "MAAS_API_KEY";
          // 替换为你要调用的模型名称，例如 "Wan2.2-T2V-A14B"
          String modelName = "Wan2.2-T2V-A14B";
          // 构造请求体
          String requestBody = String.format(
                  """
                      {
                          "model": "%s",
                          "input":{"prompt": "小猫在散步"},
                          "parameters": {
                              "size": "720x1280",
                              "fps": 16,
                              "duration": 5,
                              "seed": 0
                          }
                      }""", modelName);
          // 创建 HttpClient
          HttpClient client = HttpClient.newBuilder()
                  .connectTimeout(Duration.ofSeconds(10))
                  .build();
          // 创建请求
          HttpRequest request = HttpRequest.newBuilder()
                  .uri(URI.create(apiUrl))
                  .header("Content-Type", "application/json")
                  .header("Authorization", "Bearer " + apiKey)
                  .POST(HttpRequest.BodyPublishers.ofString(requestBody))
                  .build();
          try {
              // 发送请求并打印结果
              HttpResponse<String> response = client.send(
                      request, HttpResponse.BodyHandlers.ofString());
              System.out.println("HTTP Status: " + response.statusCode());
              System.out.println("Response Body:\n" + response.body());
          } catch (Exception e) {
              e.printStackTrace();
          }
      }
  }
  ```
  响应示例：
  ```
  {
    "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://modelarts.obs.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://modelarts.obs.com/example.mp4"
      },
      "usage": {
          "model_latency": 43564,
          "completion_tokens": 124800,
          "prompt_tokens": 0,
          "total_tokens": 124800
      },
      "created_at": 1751894112234,
      "updated_at": 1751894156753
  }
  ```
- [Java]
  建议JDK版本为15+。
  ```
  import java.net.URI;
  import java.net.http.HttpClient;
  import java.net.http.HttpRequest;
  import java.net.http.HttpResponse;
  import java.time.Duration;
  /**
   * 视频生成，根据taskid获取视频
   * */
  public class GetVideoByTaskId{
      public static void main(String[] args) {
          // 接口地址，将task_id替换为实际的ID
          String apiUrl = "https://api.modelarts-maas.com/v1/video/generations/{task_id}";
          // 把MAAS_API_KEY替换成已获取的API Key
          String apiKey = "MAAS_API_KEY";
          // 创建 HttpClient
          HttpClient client = HttpClient.newBuilder()
                  .connectTimeout(Duration.ofSeconds(10))
                  .build();
          // 创建请求
          HttpRequest request = HttpRequest.newBuilder()
                  .uri(URI.create(apiUrl))
                  .header("Content-Type", "application/json")
                  .header("Authorization", "Bearer " + apiKey)
                  .GET().build();
          try {
              // 发送请求并打印结果
              HttpResponse<String> response = client.send(
                      request, HttpResponse.BodyHandlers.ofString());
              System.out.println("HTTP Status: " + response.statusCode());
              System.out.println("Response Body:\n" + response.body());
          } catch (Exception e) {
              e.printStackTrace();
          }
      }
  }
  ```
#### 创建文生视频（生数科技）
此处以使用ViduQ3-Pro T2V模型通过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-pro_text2video",
    "input": {
       "prompt": "小猫在散步"
    },
    "parameters": {
      "size": "1280*720",
      "duration": 5,
      "audio": False
        }
      }
      response = requests.post(url, headers=headers, data=json.dumps(data), verify=False)
      # Print result.
      print(response.status_code)
      print(response.text)
  ```
  响应示例
  ```
  {
    "task_id" : "964395715545571329"
  }
  ```
- [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-pro_text2video",
    "input": {
       "prompt": "小猫在散步"
    },
    "parameters": {
      "size": "1280*720",
      "duration": 5,
      "audio": false
        }
      }'
  ```
  响应示例
  ```
  {
    "task_id" : "964395715545571329"
  }
  ```
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" : "964395715545571329",
    "status" : "succeeded",
    "error" : null,
    "content" : {
      "result_url" : "https://example.com/example.mp4"
    },
    "usage" : {
      "duration" : 5,
      "size" : "1280*720",
      "audio" : false,
      "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" : "964395715545571329",
    "status" : "succeeded",
    "error" : null,
    "content" : {
      "result_url" : "https://example.com/example.mp4"
    },
    "usage" : {
      "duration" : 5,
      "size" : "1280*720",
      "audio" : false,
      "shot_type" : "single"
    },
    "created_at" : 1780281309530,
    "updated_at" : 1780281338634
  }
  ```
#### 创建文生视频（爱诗科技）
此处以使用PixVerse V6 T2V模型通过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-t2v",
    "input": {
       "prompt": "小猫在散步"
    },
    "parameters": {
      "resolution": "720p",
                    "ratio": "16:9",
      "duration": 5,
      "audio": False
                  }
      }
      response = requests.post(url, headers=headers, data=json.dumps(data), verify=False)
      # Print result.
      print(response.status_code)
      print(response.text)
  ```
  响应示例
  ```
  {
      "task_id": "408884082825756",
      "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-t2v",
    "input": {
       "prompt": "小猫在散步"
    },
    "parameters": {
      "resolution": "720p",
      "ratio": "16:9",
      "duration": 5,
      "audio": false
        }
      }'
  ```
  响应示例
  ```
  {
      "task_id": "408884082825756",
      "resolution": "720p",
      "duration": 5,
      "audio": false
  }
  ```
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" : "408884082825756",
    "status" : "succeeded",
    "error": {
          "code": 0,
          "message": ""
      },
    "content" : {
      "result_url" : "https://example.com/example.mp4"
    },
    "usage" : {
      "duration" : 5,
      "audio" : false,
      "resolution": "720p"
    },
    "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" : "408884082825756",
    "status" : "succeeded",
    "error": {
          "code": 0,
          "message": ""
      },
    "content" : {
      "result_url" : "https://example.com/example.mp4"
    },
    "usage" : {
      "duration" : 5,
      "audio" : false,
      "resolution": "720p"
    },
    "created_at" : 1780281309530,
    "updated_at" : 1780281338634
  }
  ```
