Comenzando

La API de Chillin Render te permite especificar el contenido del video y los parámetros que se van a renderizar definiendo una estructura JSON como la que se muestra a continuación.

  • Ve a Render Console para obtener créditos de la API de Render y generar tu clave de API de Render

  • Envía una solicitud POST al punto de acceso de la API de Render con tu clave de 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

La API opera en modo asíncrono y devuelve una respuesta como esta:

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

Conceptos Clave

Todos los objetos JSON incluyen un objeto de proyecto de video, que especifica el ancho compuesto del video, la altura compuesta y la resolución.

El objeto del proyecto contiene los parámetros básicos para renderizar el video, como ancho, altura, duración, color de fondo y más.

El proyecto también incluye uno o más elementos, donde cada elemento representa un componente de video, como un video, imagen, texto, forma, audio o efecto.

Cada elemento contiene parámetros específicos para el componente, como posición, tamaño, color, contenido, y así sucesivamente.

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

Espacio 3D y Cámara

El motor de renderizado admite tanto elementos 2D como 3D. Mientras que el lienzo se define con width y height en píxeles, el motor utiliza una cámara de perspectiva para el renderizado 3D:

  • Sistema de Coordenadas: Las coordenadas x e y representan posiciones en el plano del lienzo 2D. La coordenada z controla la profundidad en el espacio 3D.
  • Proyección Perfecta: En z=0, una unidad mundial equivale a un píxel, manteniendo la compatibilidad con flujos de trabajo 2D.
  • Rotaciones 3D: Los elementos pueden ser rotados alrededor de los ejes X, Y y Z usando las propiedades rotationX, rotationY y rotation (eje Z).

Este diseño permite una mezcla fluida de elementos 2D y 3D en el mismo proyecto. Los elementos 2D tradicionales (con z=0) se renderizan exactamente como antes, mientras que los elementos 3D pueden ser posicionados y rotados en el espacio tridimensional.

Ejemplo de Elemento 3D

Aquí hay un ejemplo simple de un elemento cúbico 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

Diferencias clave de los elementos 2D:

  • type: "3D" identifica esto como un elemento 3D
  • z, rotationX, rotationY y scaleZ habilitan transformaciones 3D
  • geometryType especifica la forma 3D (cubo, esfera, cilindro, etc.)
  • geometryColor establece el color base de la geometría 3D

Para más detalles sobre elementos 3D, consulta la documentación de Elemento 3D.

Esquema JSON

Tu JSON de solicitud debe adherirse estrictamente al esquema JSON definido en este documento. Puedes probar y generar el JSON de solicitud correspondiente en el Editor de Video Chillin.