Aan de Slag

De Chillin Render API stelt je in staat om de videoinhoud en parameters die gerenderd moeten worden op te geven door een JSON-structuur zoals hieronder te definiëren.

  • Ga naar Render Console om Render API-tegoeden te krijgen en je Render API-sleutel te genereren

  • Stuur een POST-verzoek naar de Render API-eindpunt met je API-sleutel:

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

De API werkt in asynchrone modus en retourneert een reactie zoals deze:

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

Kernconcepten

Alle JSON-objecten bevatten een video projectobject, dat de samengestelde breedte, samengestelde hoogte en resolutie van de video specificeert.

Het projectobject bevat de basisparameters voor het renderen van de video, zoals breedte, hoogte, duur, achtergrondkleur en meer.

Het project bevat ook een of meer elementen, waarbij elk element een videocomponent vertegenwoordigt, zoals een video, afbeelding, tekst, vorm, audio of effect.

Elk element bevat specifieke parameters voor de component, zoals positie, grootte, kleur, inhoud, enzovoort.

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 Ruimte & Camera

De renderengine ondersteunt zowel 2D- als 3D-elementen. Terwijl het canvas is gedefinieerd met breedte en hoogte in pixels, gebruikt de engine een perspectiefcamera voor 3D-rendering:

  • Coördinatensysteem: De x- en y-coördinaten vertegenwoordigen posities op het 2D-canvasvlak. De z-coördinaat regelt de diepte in de 3D-ruimte.
  • Pixel-perfecte projectie: Bij z=0 is één wereldeenheid gelijk aan één pixel, waardoor compatibiliteit met 2D-werkstromen behouden blijft.
  • 3D Rotaties: Elementen kunnen worden gedraaid rond de X-, Y- en Z-assen met behulp van de eigenschappen rotationX, rotationY en rotation (Z-as).

Dit ontwerp maakt naadloos mengen van 2D- en 3D-elementen in hetzelfde project mogelijk. Traditionele 2D-elementen (met z=0) worden precies zoals voorheen gerenderd, terwijl 3D-elementen kunnen worden gepositioneerd en gedraaid in driedimensionale ruimte.

3D Element Voorbeeld

Hier is een eenvoudig voorbeeld van een 3D kubus 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

Belangrijke verschillen van 2D-elementen:

  • type: "3D" identificeert dit als een 3D-element
  • z, rotationX, rotationY en scaleZ stellen 3D-transformaties in staat
  • geometryType specificeert de 3D-vorm (kubus, bol, cilinder, enz.)
  • geometryColor stelt de basiskleur van de 3D-geometrie in

Voor meer details over 3D-elementen, zie de 3D Element documentatie.

JSON Schema

Je verzoek JSON moet strikt voldoen aan het JSON-schema dat in dit document is gedefinieerd. Je kunt de overeenkomstige verzoek JSON testen en genereren in de Chillin Video Editor.