시작하기

Chillin Render API는 아래와 같은 JSON 구조를 정의하여 렌더링할 비디오 콘텐츠와 매개변수를 지정할 수 있게 해줍니다.

  • Render Console에 가서 Render API 크레딧을 받고 Render API 키를 생성하세요.

  • API 키와 함께 Render API 엔드포인트에 POST 요청을 보내세요:

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

API는 비동기 모드로 작동하며 다음과 같은 응답을 반환합니다:

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

핵심 개념

모든 JSON 객체에는 비디오의 합성 너비, 합성 높이 및 해상도를 지정하는 비디오 프로젝트 객체가 포함되어 있습니다.

프로젝트 객체는 비디오 렌더링을 위한 기본 매개변수(너비, 높이, 지속 시간, 배경 색상 등)를 포함합니다.

프로젝트는 하나 이상의 요소도 포함하며, 각 요소는 비디오, 이미지, 텍스트, 도형, 오디오 또는 효과와 같은 비디오 구성 요소를 나타냅니다.

각 요소는 위치, 크기, 색상, 콘텐츠 등과 같은 구성 요소에 대한 특정 매개변수를 포함합니다.

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 공간 및 카메라

렌더링 엔진은 2D 및 3D 요소를 모두 지원합니다. 캔버스는 픽셀 단위로 widthheight로 정의되며, 엔진은 3D 렌더링을 위해 원근 카메라를 사용합니다:

  • 좌표 시스템: x 및 y 좌표는 2D 캔버스 평면의 위치를 나타냅니다. z 좌표는 3D 공간의 깊이를 제어합니다.
  • 픽셀 완벽 프로젝션: z=0에서 하나의 월드 유닛은 하나의 픽셀과 같아 2D 워크플로우와의 호환성을 유지합니다.
  • 3D 회전: 요소는 rotationX, rotationYrotation (Z축) 속성을 사용하여 X, Y 및 Z 축을 따라 회전할 수 있습니다.

이 디자인은 동일한 프로젝트 내에서 2D 및 3D 요소를 매끄럽게 혼합할 수 있게 해줍니다. 전통적인 2D 요소(그림 z=0)는 이전과 정확히 동일하게 렌더링되며, 3D 요소는 3차원 공간에서 위치와 회전이 가능합니다.

3D 요소 예제

여기 간단한 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

2D 요소와의 주요 차이점:

  • type: "3D"는 이것이 3D 요소임을 식별합니다.
  • z, rotationX, rotationYscaleZ는 3D 변형을 가능하게 합니다.
  • geometryType은 3D 형태(큐브, 구, 실린더 등)를 지정합니다.
  • geometryColor는 3D 기하의 기본 색상을 설정합니다.

3D 요소에 대한 자세한 내용은 3D Element 문서를 참조하세요.

JSON 스키마

귀하의 요청 JSON은 이 문서에 정의된 JSON 스키마를 엄격하게 준수해야 합니다. Chillin Video Editor에서 해당 요청 JSON을 테스트하고 생성할 수 있습니다.