Commencer

L'API Chillin Render vous permet de spécifier le contenu vidéo et les paramètres à rendre en définissant une structure JSON comme celle ci-dessous.

  • Allez sur Render Console pour obtenir des crédits API Render et générer votre clé API Render

  • Envoyez une requête POST à l'endpoint de l'API Render avec votre clé API :

curl-example.sh
1curl -X POST https://render-api.chillin.online/render/v1 \ 2-H "Accept: application/json" \ 3-H "Content-Type: application/json" \ 4-H "Authorization: Bearer YOUR_API_KEY" \ 5-d @request.json
request.json
1{ 2"compositeWidth": 1920, 3"compositeHeight": 1080, 4"fps": 30, 5"projectData": { 6 "type": "", 7 "width": 1920, 8 "height": 1080, 9 "fill": "#000000", 10 "view": [ 11 { 12 "id": "bba95c7f-652b-4380-b166-6bece989f527", 13 "type": "Image", 14 "start": 0, 15 "duration": 5, 16 "trackIndex": 0, 17 "x": 0, 18 "y": 0, 19 "width": 3629, 20 "height": 5444, 21 "blendMode": "normal", 22 "anchorX": 1814.5, 23 "anchorY": 2722, 24 "rotation": 0, 25 "scaleX": 0.19838354151359294, 26 "scaleY": 0.19838354151359294, 27 "alpha": 1, 28 "skewX": 0, 29 "skewY": 0, 30 "hidden": false, 31 "locked": false, 32 "keyframes": [], 33 "externalUrl": "https://images.pexels.com/photos/33189512/pexels-photo-33189512.jpeg", 34 "ext": "jpeg" 35 } 36 ], 37 "audio": [], 38 "effect": [], 39 "transition": [], 40 "version": 0, 41 "duration": 5 42} 43}; 44

L'API fonctionne en mode asynchrone et renvoie une réponse comme celle-ci :

async_response.json
1{ 2"code": 0, 3"data": { 4 "message": "Async render request submitted successfully", 5 "render_id": 100000, 6 "status": "processing" 7}, 8"msg": "success" 9} 10

Concepts de base

Tous les objets JSON incluent un objet de projet vidéo, spécifiant la largeur composite, la hauteur composite et la résolution de la vidéo.

L'objet de projet contient les paramètres de base pour le rendu de la vidéo, tels que la largeur, la hauteur, la durée, la couleur de fond, et plus encore.

Le projet inclut également un ou plusieurs éléments, où chaque élément représente un composant vidéo, tel qu'une vidéo, une image, du texte, une forme, de l'audio ou un effet.

Chaque élément contient des paramètres spécifiques au composant, tels que la position, la taille, la couleur, le contenu, etc.

project.json
1{ 2"compositeWidth": 1920, 3"compositeHeight": 1080, 4"fps": 30, 5"projectData": { 6 "type": "", 7 "width": 1920, 8 "height": 1080, 9 "fill": "#000000", 10 "view": [ 11 { 12 "id": "8ecf7475-2c6c-47f9-827b-a09c7913f4c0", 13 "type": "Image", 14 "start": 0, 15 "duration": 5, 16 "trackIndex": 0, 17 "x": -570.0335392757963, 18 "y": -170.90659033307685, 19 "blendMode": "normal", 20 "anchorX": 1302, 21 "anchorY": 2312, 22 "rotation": 0, 23 "scaleX": 0.23356401384083045, 24 "scaleY": 0.23356401384083045, 25 "alpha": 1, 26 "skewX": 0, 27 "skewY": 0, 28 "keyframes": [], 29 "externalUrl": "https://images.pexels.com/photos/30465303/pexels-photo-30465303.jpeg", 30 "ext": "jpeg" 31 } 32 ], 33 "audio": [], 34 "effect": [], 35 "transition": [], 36 "version": 0, 37 "duration": 5 38} 39}; 40

Espace 3D & Caméra

Le moteur de rendu prend en charge à la fois des éléments 2D et 3D. Alors que le canevas est défini avec width et height en pixels, le moteur utilise une caméra à perspective pour le rendu 3D :

  • Système de coordonnées : Les coordonnées x et y représentent des positions sur le plan du canevas 2D. La coordonnée z contrôle la profondeur dans l'espace 3D.
  • Projection Pixel Parfaite : À z=0, une unité de monde équivaut à un pixel, maintenant la compatibilité avec les flux de travail 2D.
  • Rotations 3D : Les éléments peuvent être tournés autour des axes X, Y et Z en utilisant les propriétés rotationX, rotationY et rotation (axe Z).

Ce design permet de mélanger sans couture des éléments 2D et 3D dans le même projet. Les éléments 2D traditionnels (avec z=0) se rendent exactement comme auparavant, tandis que les éléments 3D peuvent être positionnés et tournés dans l'espace tridimensionnel.

Exemple d'élément 3D

Voici un exemple simple d'un élément de cube 3D :

3d-cube-example.json
1{ 2"id": "3d-cube-001", 3"type": "3D", 4"start": 0, 5"duration": 5, 6"trackIndex": 0, 7"x": 960, 8"y": 540, 9"z": 0, 10"width": 200, 11"height": 200, 12"anchorX": 100, 13"anchorY": 100, 14"rotation": 0, 15"rotationX": 30, 16"rotationY": 45, 17"scaleX": 1, 18"scaleY": 1, 19"scaleZ": 1, 20"alpha": 1, 21"ext": "geometry", 22"geometryType": "cube", 23"nodeCategory": "basic", 24"geometryColor": "#4A90E2" 25} 26

Principales différences par rapport aux éléments 2D :

  • type: "3D" identifie ceci comme un élément 3D
  • z, rotationX, rotationY et scaleZ permettent les transformations 3D
  • geometryType spécifie la forme 3D (cube, sphère, cylindre, etc.)
  • geometryColor définit la couleur de base de la géométrie 3D

Pour plus de détails sur les éléments 3D, consultez la documentation 3D Element.

Schéma JSON

Votre JSON de requête doit strictement respecter le schéma JSON défini dans ce document. Vous pouvez tester et générer le JSON de requête correspondant dans l'éditeur vidéo Chillin.