Transformez vos vidéos en styles artistiques tout en préservant la fluidité des mouvements et la cohérence du contenu. Huit styles sont disponibles : manga japonais, bande dessinée américaine, bande dessinée fraîche, dessin animé 3D, dessin animé chinois, art du papier, illustration simple et peinture à l'encre chinoise.
ImportantCe service de modèle est disponible uniquement dans la région China (Beijing). Vous devez utiliser une clé API de cette région pour appeler l'API.
Démonstration des performances
| **Vidéo d'entrée** | **Vidéo de sortie (manga japonais)** |
|---|---|
| %E5%8E%9F%E8%A7%86%E9%A2%91.mp4 | input_00002_%E6%BC%AB%E7%94%BBV4_00001.mp4 |
Pour plus d'exemples, consultez la section Annexe : Autres démonstrations d'effets de style.
Prérequis
Avant d'appeler l'API, suivez les étapes ci-dessous :
- Obtenir une clé API dans la région China (Beijing).
- Définir la clé API comme variable d'environnement.
Fonctionnement
Le traitement vidéo étant long, l'API utilise une invocation asynchrone pour éviter les délais d'expiration. Le flux de travail est le suivant :
- Soumission d'une tâche : envoyez une requête
POSTcontenant l'URL de la vidéo et les paramètres de style. L'API renvoie un identifiant uniquetask_id. - Interrogation des résultats : utilisez le
task_idpour vérifier l'état via des requêtesGET. Une fois la tâche terminée avec succès, la réponse inclut l'URL de la vidéo transformée.
Exigences relatives à la vidéo d'entrée
Votre vidéo d'entrée doit respecter les exigences suivantes :
| Contrainte | Exigence |
|---|---|
| Résolution | Chaque côté doit mesurer entre 256 et 4 096 pixels. Le rapport hauteur/largeur (côté long/côté court) ne peut pas dépasser 1,8. |
| Format | MP4, AVI, MKV, MOV, FLV, TS, MPG et MXF |
| Durée | 30 secondes maximum |
| Taille du fichier | 100 Mo maximum |
| Encodage URL | Encodez les URL de vidéo contenant des caractères non ASCII (par exemple, des caractères chinois). |
Styles pris en charge
| Code de style | Nom du style | Notes |
|---|---|---|
| 0 | Manga japonais | Par défaut |
| 1 | Bande dessinée américaine | |
| 2 | Bande dessinée fraîche | |
| 3 | Dessin animé 3D | |
| 4 | Dessin animé chinois | Idéal pour les entrées comportant des costumes anciens |
| 5 | Style art du papier | |
| 6 | Illustration simple | |
| 7 | Peinture à l'encre chinoise |
Étape 1 : Soumettre une tâche de transformation de style vidéo
POST https://dashscope.aliyuncs.com/api/v1/services/aigc/video-generation/video-synthesis
En-têtes de requête
| En-tête | Type | Obligatoire | Description |
|---|---|---|---|
Content-Type | string | Oui | Type de contenu. Définissez cette valeur sur application/json. |
Authorization | string | Oui | Clé API pour l'authentification. Format : Bearer sk-xxxx (clé API Model Studio). |
X-DashScope-Async | string | Oui | Active le traitement asynchrone. Cette valeur doit être définie sur enable. Les requêtes HTTP ne prennent en charge que le traitement asynchrone. Si cet en-tête est absent, l'API renvoie l'erreur : « current user api does not support synchronous calls ». |
Corps de la requête
| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
model | string | Oui | Nom du modèle. Définissez cette valeur sur video-style-transform. |
input | object | Oui | Contenu d'entrée. Consultez la section paramètres input. |
parameters | object | Non | Paramètres de traitement vidéo. Consultez la section parameters. |
Paramètres input
| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
video_url | string | Oui | URL publique de la vidéo d'entrée. Exemple : https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20250704/viwndw/%E5%8E%9F%E8%A7%86%E9%A2%91.mp4. La vidéo doit respecter les exigences relatives à la vidéo d'entrée. |
Paramètres parameters
| Paramètre | Type | Obligatoire | Valeur par défaut | Description |
|---|---|---|---|---|
style | int | Non | 0 | Type de style. Valeurs valides : 0-7. Consultez la section Styles pris en charge pour obtenir la liste complète. |
video_fps | int | Non | 15 | Fréquence d'images (images par seconde, FPS) de la vidéo de sortie. Plage valide : [15, 25]. |
animate_emotion | bool | Non | true | Indique s'il faut optimiser les expressions faciales. L'activation de cette option améliore généralement la synchronisation labiale et des expressions. Pour les petites zones faciales, la désactivation peut améliorer les résultats. |
min_len | int | Non | 720 | Nombre de pixels du côté le plus court de la vidéo de sortie, déterminant la résolution. Valeurs valides : 720 et 540. Ce paramètre influence la facturation : une vidéo 720p coûte plus cher qu'une vidéo 540p. Pour plus de détails, consultez la section Facturation et limites de taux. |
use_SR | bool | Non | false | Indique s'il faut appliquer un traitement de super-résolution (SR) après la transformation de style. Améliore la qualité vidéo sans coût supplémentaire. Si vous définissez min_len sur 540 avec SR activé, la sortie passe en 1080p tout en étant facturée au tarif 540p. Cela augmente le temps de traitement et est recommandé pour une sortie de haute qualité. |
Exemples de requêtes
Générer une vidéo 720p
curlcurl --location --request POST 'https://dashscope.aliyuncs.com/api/v1/services/aigc/video-generation/video-synthesis' \
--header 'X-DashScope-Async: enable' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
"model": "video-style-transform",
"input": {
"video_url": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20250704/viwndw/%E5%8E%9F%E8%A7%86%E9%A2%91.mp4"
},
"parameters": {
"style": 0,
"video_fps": 15
}
}'
Python
import requests
import os
DASHSCOPE_API_KEY = os.getenv("DASHSCOPE_API_KEY")
# Replace this with your video URL
video_url = "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20250704/viwndw/%E5%8E%9F%E8%A7%86%E9%A2%91.mp4"
response = requests.post(
"https://dashscope.aliyuncs.com/api/v1/services/aigc/video-generation/video-synthesis",
headers={
"Authorization": f"Bearer {DASHSCOPE_API_KEY}",
"X-DashScope-Async": "enable",
},
json={
"model": "video-style-transform",
"input": {
"video_url": video_url
},
"parameters": {
"style": 0,
"video_fps": 15
}
}
)
print(response.json())
Générer une vidéo 540p
curlcurl --location --request POST 'https://dashscope.aliyuncs.com/api/v1/services/aigc/video-generation/video-synthesis' \
--header 'X-DashScope-Async: enable' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
"model": "video-style-transform",
"input": {
"video_url": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20250704/viwndw/%E5%8E%9F%E8%A7%86%E9%A2%91.mp4"
},
"parameters": {
"style": 0,
"video_fps": 15,
"min_len": 540
}
}'
Python
import requests
import os
DASHSCOPE_API_KEY = os.getenv("DASHSCOPE_API_KEY")
# Replace this with your video URL
video_url = "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20250704/viwndw/%E5%8E%9F%E8%A7%86%E9%A2%91.mp4"
response = requests.post(
"https://dashscope.aliyuncs.com/api/v1/services/aigc/video-generation/video-synthesis",
headers={
"Authorization": f"Bearer {DASHSCOPE_API_KEY}",
"X-DashScope-Async": "enable",
},
json={
"model": "video-style-transform",
"input": {
"video_url": video_url
},
"parameters": {
"style": 0,
"video_fps": 15,
"min_len": 540
}
}
)
print(response.json())
Réponse
Réponse réussie
{
"output": {
"task_id": "xxxxxxxx",
"task_status": "PENDING"
},
"request_id": "7574ee8f-38a3-4b1e-9280-11c33ab46e51"
}
Réponse d'erreur
{
"code": "InvalidApiKey",
"message": "Invalid API-key provided.",
"request_id": "fb53c4ec-1c12-4fc4-a580-xxxxxxxxxxxx"
}
Paramètres de réponse
| Paramètre | Type | Description |
|---|---|---|
output | object | Informations de sortie de la tâche. |
output.task_id | string | Identifiant unique de la tâche asynchrone. Utilisez cet ID pour interroger l'état et les résultats de la tâche. |
output.task_status | string | État de la tâche. Valeurs possibles : PENDING, RUNNING, SUSPENDED, SUCCEEDED, FAILED. |
request_id | string | Identifiant unique de la requête. Utilisez cet ID pour tracer et résoudre les problèmes. |
code | string | Code d'erreur. Renvoyé uniquement en cas d'échec de la requête. Pour plus de détails, consultez la section Messages d'erreur. |
message | string | Détails de l'erreur. Renvoyé uniquement en cas d'échec de la requête. Pour plus de détails, consultez la section Messages d'erreur. |
Étape 2 : Interroger l'état et le résultat de la tâche
GET https://dashscope.aliyuncs.com/api/v1/tasks/{task_id}
ImportantLes données de résultat de la tâche (état et URL de la vidéo) sont valides pendant 24 heures, puis automatiquement supprimées. Interrogez et enregistrez les résultats rapidement.
En-têtes de requête
| En-tête | Type | Obligatoire | Description |
|---|---|---|---|
Authorization | string | Oui | Clé API pour l'authentification. Format : Bearer sk-xxxx (clé API Model Studio). |
Paramètres de chemin
| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
task_id | string | Oui | Identifiant de tâche renvoyé à l'étape 1. |
Exemples de requêtes
Remplacez {task_id} par le véritable task_id obtenu dans la réponse de soumission de la tâche.
curl -X GET \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
https://dashscope.aliyuncs.com/api/v1/tasks/{task_id}
Python
import requests
import os
DASHSCOPE_API_KEY = os.getenv("DASHSCOPE_API_KEY")
# Replace task_id with your task_id
task_id = "0c9c33e6-b2e7-41e5-*********"
task_response = requests.get(
f"https://dashscope.aliyuncs.com/api/v1/tasks/{task_id}",
headers={
"Authorization": f"Bearer {DASHSCOPE_API_KEY}"
})
print(task_response.json())
Réponse
Tâche réussie
{
"request_id": "b67df059-ca6a-9d51-afcd-xxxxxxxxxxxx",
"output": {
"task_id": "d76ec1e8-ea27-4038-8913-xxxxxxxxxxxx",
"task_status": "SUCCEEDED",
"submit_time": "2024-05-16 13:50:01.247",
"scheduled_time": "2024-05-16 13:50:01.354",
"end_time": "2024-05-16 13:50:27.795",
"output_video_url": "http://xxx/result.mp4"
},
"usage": {
"duration": 3,
"SR": 720
}
}
Tâche en cours d'exécution
Les tâches soumises sont mises en file d'attente puis planifiées. L'état passe à RUNNING lors de la planification.
{
"request_id": "e5d70b02-ebd3-98ce-9fe8-xxxxxxxxxxxx",
"output": {
"task_id": "13b1848b-5493-4c0e-xxxxxxxxxxxx",
"task_status": "RUNNING",
"submit_time": "2025-09-08 15:53:13.143",
"scheduled_time": "2025-09-08 15:53:13.169"
}
}
Échec de la tâche
{
"request_id": "dccfdf23-b38e-97a6-a07b-xxxxxxxxxxxx",
"output": {
"task_id": "4cbabbdf-2c1f-43f4-b983-xxxxxxxxxxxx",
"task_status": "FAILED",
"submit_time": "2024-05-16 14:15:14.103",
"scheduled_time": "2024-05-16 14:15:14.154",
"end_time": "2024-05-16 14:15:14.694",
"code": "InvalidParameter.FileDownload",
"message": "download for input video error"
}
}
Paramètres de réponse
| Paramètre | Type | Description |
|---|---|---|
request_id | string | Identifiant unique de la requête. Utilisez cet ID pour tracer et résoudre les problèmes. |
output | object | Informations de sortie de la tâche. |
output.task_id | string | Identifiant de la tâche. Valide pendant 24 heures. |
output.task_status | string | État de la tâche. Valeurs possibles : PENDING, RUNNING, SUSPENDED, SUCCEEDED, FAILED, UNKNOWN. |
output.submit_time | string | Heure de soumission de la tâche. Fuseau horaire UTC+8. Format : YYYY-MM-DD HH:mm:ss.SSS. |
output.scheduled_time | string | Heure de début d'exécution de la tâche. Fuseau horaire UTC+8. Format : YYYY-MM-DD HH:mm:ss.SSS. |
output.end_time | string | Heure de fin de la tâche. Fuseau horaire UTC+8. Format : YYYY-MM-DD HH:mm:ss.SSS. |
output.output_video_url | string | URL de la vidéo transformée. Renvoyée uniquement lorsque task_status est SUCCEEDED. Exemple : http://xxx/result.mp4. |
output.code | string | Code d'erreur. Renvoyé uniquement lorsque task_status est FAILED. Pour plus de détails, consultez la section Messages d'erreur. |
output.message | string | Détails de l'erreur. Renvoyé uniquement lorsque task_status est FAILED. Pour plus de détails, consultez la section Messages d'erreur. |
usage | object | Statistiques d'utilisation de la tâche. Renvoyées uniquement lorsque task_status est SUCCEEDED. |
usage.duration | float | Durée de la vidéo générée, en secondes. |
usage.SR | int | Valeur en pixels du côté le plus court de la vidéo, utilisée pour la facturation. Cette valeur correspond à la valeur min_len définie dans la requête. |
Facturation et limites de taux
Seules les tâches réussies sont facturées. Les frais sont calculés en fonction de la durée de la vidéo de sortie (en secondes) et de la résolution sélectionnée.
Formule de facturation : Frais totaux = Durée de la vidéo de sortie (secondes) x Prix unitaire pour la résolution correspondante
Les frais finaux sont calculés à partir des champs
durationetSRde l'objetusage.
Tarifs
| Modèle | Résolution | Prix unitaire |
|---|---|---|
| video-style-transform | 720p | 0,071677 $/seconde |
| video-style-transform | 540p | 0,028671 $/seconde |
Limites de taux
Les limites de taux sont partagées entre les comptes et les utilisateurs RAM.
| Type de limite | Valeur |
|---|---|
| Requêtes par seconde (QPS) pour l'API de soumission de tâches | 2 |
| Tâches simultanées | 1 |
Exemple de facturation
Exemple : soumettez une vidéo de 10 secondes avec une résolution de 720p. Si la tâche réussit, les frais s'élèvent à : 10 secondes × 0,071677 $/seconde = 0,71677 $.
Codes d'erreur
Si l'appel du modèle échoue et renvoie un message d'erreur, consultez la section Codes d'erreur pour obtenir une solution.
Annexe : Autres démonstrations d'effets de style
| Nom du style | Vidéo originale | Vidéo transformée |
|---|---|---|
| Manga japonais (style=0) | %E5%8E%9F%E8%A7%86%E9%A2%91.mp4 | input_00002_%E6%BC%AB%E7%94%BBV4_00001.mp4 |
| Bande dessinée américaine (style=1) | car_%E5%8E%9F%E5%9B%BE.mp4 | car_style_1.mp4 |
| Bande dessinée fraîche (style=2) | %E6%8C%A5%E6%89%8B_%E5%8E%9F%E5%9B%BE.mp4 | %E6%8C%A5%E6%89%8B_style_2.mp4 |
| Dessin animé 3D (style=3) | %E9%87%8E%E9%A4%90_%E5%8E%9F%E5%9B%BE.mp4 | %E9%87%8E%E9%A4%90_style_3.mp4 |
| Dessin animé chinois (style=4) | %E5%BC%B9%E7%90%B4_%E5%8E%9F%E5%9B%BE.mp4 | %E5%BC%B9%E7%90%B4_style_4.mp4 |
| Style art du papier (style=5) | %E7%94%9F%E6%88%90_%E6%B1%BD%E8%BD%A6.mp4 | %E6%B1%BD%E8%BD%A6%E8%8D%89%E5%8E%9F_%E7%BA%B8%E8%89%BA%E9%A3%8E%E6%A0%BC.mp4 |
| Illustration simple (style=6) | %E6%A1%8C%E9%9D%A2_%E5%8E%9F%E5%9B%BE.mp4 | %E6%A1%8C%E9%9D%A2_style_6.mp4 |
| Peinture à l'encre chinoise (style=7) | %E5%8F%A4%E9%95%87_%E5%8E%9F%E5%9B%BE.mp4 | %E5%8F%A4%E9%95%87_style_7.mp4 |
.inline-code___exakR {
font-family: monospace;
background-color: #f5f5f5;
padding: 2px 4px;
border-radius: 3px;
}