Erste Schritte

Die Chillin Render API ermöglicht es Ihnen, die Video-Inhalte und Parameter, die gerendert werden sollen, durch die Definition einer JSON-Struktur wie der untenstehenden anzugeben.

  • Gehen Sie zur Render Console, um Render API-Guthaben zu erhalten und Ihren Render API-Schlüssel zu generieren.

  • Senden Sie eine POST-Anfrage an den Render API-Endpunkt mit Ihrem API-Schlüssel:

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

Die API arbeitet im asynchronen Modus und gibt eine Antwort wie folgt zurück:

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

Grundlegende Konzepte

Alle JSON-Objekte enthalten ein Video-Projektobjekt, das die zusammengesetzte Breite, die zusammengesetzte Höhe und die Auflösung des Videos angibt.

Das Projektobjekt enthält die grundlegenden Parameter für das Rendern des Videos, wie Breite, Höhe, Dauer, Hintergrundfarbe und mehr.

Das Projekt umfasst auch ein oder mehrere Elemente, wobei jedes Element eine Video-Komponente darstellt, wie ein Video, ein Bild, Text, eine Form, Audio oder einen Effekt.

Jedes Element enthält spezifische Parameter für die Komponente, wie Position, Größe, Farbe, Inhalt und so weiter.

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

3D Raum & Kamera

Die Rendering-Engine unterstützt sowohl 2D- als auch 3D-Elemente. Während die Leinwand mit width und height in Pixeln definiert ist, verwendet die Engine eine Perspektivkamera für das 3D-Rendering:

  • Koordinatensystem: Die x- und y-Koordinaten repräsentieren Positionen auf der 2D-Leinwand. Die z-Koordinate steuert die Tiefe im 3D-Raum.
  • Pixel-genaue Projektion: Bei z=0 entspricht eine Welteinheit einem Pixel, was die Kompatibilität mit 2D-Workflows aufrechterhält.
  • 3D-Rotationen: Elemente können um die X-, Y- und Z-Achsen unter Verwendung der Eigenschaften rotationX, rotationY und rotation (Z-Achse) rotiert werden.

Dieses Design ermöglicht eine nahtlose Mischung von 2D- und 3D-Elementen im selben Projekt. Traditionelle 2D-Elemente (mit z=0) werden genau wie zuvor gerendert, während 3D-Elemente im dreidimensionalen Raum positioniert und rotiert werden können.

Beispiel für ein 3D-Element

Hier ist ein einfaches Beispiel für ein 3D-Würfel-Element:

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

Wesentliche Unterschiede zu 2D-Elementen:

  • type: "3D" identifiziert dies als 3D-Element
  • z, rotationX, rotationY und scaleZ ermöglichen 3D-Transformationen
  • geometryType gibt die 3D-Form an (Würfel, Kugel, Zylinder usw.)
  • geometryColor legt die Grundfarbe der 3D-Geometrie fest

Für weitere Details zu 3D-Elementen siehe die 3D Element Dokumentation.

JSON-Schema

Ihr Anfrage-JSON muss strikt dem in diesem Dokument definierten JSON-Schema entsprechen. Sie können das entsprechende Anfrage-JSON im Chillin Video Editor testen und generieren.