키프레임 시스템 및 투명 비디오 내보내기를 지원하는 웹 기반 애니메이션 편집기
크리에이티브 툴 팀은 디자이너들이 여러 객체를 사용하여 부드러운 키프레임 기반 애니메이션을 제작하고, 이를 전체 alpha channel 투명도를 가진 비디오로 내보내어 다른 비디오 콘텐츠에 매끄럽게 오버레이할 수 있는 브라우저 기반 애니메이션 편집기가 필요했습니다.
프로젝트 상담하기
과제
비디오 제작을 위한 투명 배경의 애니메이션 에셋을 만드는 것은 번거로웠습니다:
- 데스크톱 전용 툴 — 기존 애니메이션 툴(After Effects, Motion)은 고가의 라이선스와 데스크톱 설치가 필요했습니다
- 알파 채널 내보내기 불가 — 대부분의 웹 기반 애니메이션 툴은 투명도를 지원하지 않는 불투명 비디오를 내보냈습니다
- 복잡한 키프레임 — 디자이너들은 단순한 CSS transition이 아닌, easing 제어가 가능한 직관적인 키프레임 기반 애니메이션을 필요로 했습니다
- 실시간 미리보기 — 편집자들은 내보내기 전에 애니메이션이 부드럽게 재생되는 것을 확인해야 했습니다
- 다양한 객체 유형 — 애니메이션은 독립적인 애니메이션 타임라인을 가진 도형과 텍스트를 필요로 했습니다
- 내보내기 품질 — 출력물은 전문 편집 워크플로우에서 사용할 수 있는 프로덕션 수준의 비디오 파일이어야 했습니다
우리의 솔루션
우리는 React와 Pixi.js를 사용하여 하드웨어 가속 렌더링을 지원하는 웹 기반 애니메이션 편집기를 구축했습니다. 이 편집기는 30개 이상의 easing 기능을 갖춘 키프레임 엔진과, 전체 VP9 alpha channel을 지원하는 WebM 비디오 내보내기를 위한 FFmpeg 기반 백엔드를 사용합니다.
아키텍처
- 프런트엔드: TypeScript를 사용하는 React, WebGL 가속 캔버스 렌더링을 위한 Pixi.js
- 상태 관리: 중앙 집중식 장면 상태 관리를 위한 Zustand
- 애니메이션 엔진: easing 라이브러리를 갖춘 사용자 정의 키프레임 보간 엔진
- 백엔드: 실시간 프레임 스트리밍을 위한 WebSocket 지원 Express.js
- 비디오 인코딩: alpha channel을 사용한 VP9 WebM 인코딩을 위한 FFmpeg (fluent-ffmpeg 경유)
- 모노레포: 프런트엔드와 백엔드 간에 TypeScript 유형을 공유하는 pnpm workspace
애니메이션 엔진
키프레임 시스템
핵심 애니메이션 엔진은 여러 속성에 걸쳐 키프레임 기반 애니메이션을 지원합니다:
- 위치 — 이동 경로를 위한 X/Y 좌표
- 회전 — 각도 기반 회전 애니메이션
- 색상 — 부드러운 전환을 위한 Hex 색상 보간
- 알파 — 페이드 효과를 위한 불투명도 애니메이션
- 크기 — 너비, 높이, 반지름 스케일링
각 키프레임은 시간(밀리초 단위), 애니메이션 속성의 하위 집합, 그리고 선택된 easing 함수를 저장합니다. 엔진은 어떤 시점에서든 주변 키프레임 사이를 보간하여 적절한 easing 커브를 적용합니다.
이징(Easing) 라이브러리 (30개 이상의 함수)
모든 표준 애니메이션 커브를 포함하는 포괄적인 easing 라이브러리:
- Linear, Quadratic, Cubic, Quartic, Quintic
- Sinusoidal, Exponential, Circular
- Elastic (용수철 같은 오버슈트), Back (예상), Bounce
- 각각 ease-in, ease-out, ease-in-out 변형으로 사용 가능
보간
주어진 모든 타임스탬프에 대해 엔진은 다음을 수행합니다:
- 주변 키프레임(이전 및 이후)을 찾습니다
- 그 사이의 정규화된 진행률(0에서 1)을 계산합니다
- 선택된 easing 함수를 진행률 값에 적용합니다
- 속성 값을 보간합니다 (숫자는 linear, hex 값은 color lerp)
- 렌더링을 위한 애니메이션 속성의 전체 세트를 반환합니다
캔버스 및 렌더링
객체 유형
- 직사각형 — 너비, 높이, 색상, 알파, 회전 설정 가능
- 원 — 반지름, 색상, 알파, 회전 설정 가능
- 텍스트 — 글꼴 모음, 글꼴 크기, 내용, 색상, 알파 설정 가능
하드웨어 가속 렌더링
- 부드러운 60fps 미리보기 재생을 위한 Pixi.js WebGL 렌더링
- 설정 가능한 캔버스 해상도 (기본 1920x1080, 30fps)
- 조절 가능한 배경 알파를 사용한 투명 배경 지원
- 시각적 강조 표시가 있는 대화형 객체 선택
- 재생, 일시 정지 및 타임라인 스크러빙을 통한 실시간 애니메이션 재생
편집기 인터페이스
툴바
장면에 직사각형, 원, 텍스트를 추가하는 객체 생성 버튼으로, 기본 속성을 즉시 사용자 정의할 수 있습니다.
속성 패널
선택된 객체 속성은 실시간으로 편집 가능합니다: 위치, 크기, 색상, 알파, 회전 및 유형별 속성(텍스트 내용, 글꼴 설정).
타임라인
다음과 같은 시각적 타임라인:
- 객체별 시간 위치에 있는 키프레임 마커
- 스크러빙이 가능한 현재 시간 재생 헤드
- 키프레임별 easing 함수 선택
- 현재 재생 헤드 위치에서 키프레임 추가/제거 컨트롤
비디오 내보내기 파이프라인
프레임 캡처
- 애니메이션 지속 시간과 FPS가 총 프레임 수를 결정합니다
- 각 프레임은 전체 해상도로 개별적으로 렌더링됩니다
- 캔버스 내용은 프레임당 PNG blob으로 캡처됩니다
- 인코딩 백엔드에 업로드하기 위해 프레임이 수집됩니다
인코딩 백엔드
Express.js 백엔드는 작업 기반 시스템을 통해 비디오 인코딩을 처리합니다:
- 작업 생성 — 클라이언트가 새로운 내보내기 작업(UUID 기반)을 요청합니다
- 프레임 업로드 — 프레임은 배치(일괄)로 업로드되거나 WebSocket을 통해 스트리밍됩니다
- FFmpeg 인코딩 — 프레임은 VP9 코덱을 사용하여 WebM 비디오로 조립됩니다
- 알파 채널 — 전체 투명도 지원을 위해 yuva420p 픽셀 형식을 사용합니다
- 진행 상황 추적 — 인코딩 중 실시간 진행 상황 업데이트
- 다운로드 — 투명도 확인과 함께 완료된 비디오를 다운로드할 수 있습니다
WebSocket 대안
실시간 내보내기를 위해, 프레임은 HTTP 배치 업로드 대신 WebSocket을 통해 직접 스트리밍될 수 있으며, 캡처, 업로드 및 인코딩 단계 전반에 걸쳐 실시간 진행 상황 업데이트가 제공됩니다.
주요 기능
- 키프레임 애니메이션 — 속성별 키프레임을 사용한 타임라인 기반 애니메이션
- 30개 이상의 이징(Easing) 함수 — 전문적인 애니메이션 커브를 위한 완벽한 easing 라이브러리
- 투명 비디오 내보내기 — 전체 alpha channel을 지원하는 VP9 WebM
- 하드웨어 가속 캔버스 — 부드러운 실시간 미리보기를 위한 Pixi.js WebGL 렌더링
- 다양한 객체 유형 — 독립적인 애니메이션을 가진 직사각형, 원, 텍스트
- 실시간 미리보기 — 애니메이션을 즉시 재생, 일시 정지 및 스크러빙
- 배치 및 스트리밍 내보내기 — HTTP 배치 업로드 또는 WebSocket 실시간 프레임 스트리밍
- 설정 가능한 출력 — 내보내기를 위한 해상도, FPS, bitrate 설정
- 타입 세이프 모노레포 — 프런트엔드와 백엔드 간에 공유되는 TypeScript 유형
- 사용자 정의 배경 — 이미지/비디오 지원과 함께 조절 가능한 배경색 및 알파
결과
기술 스택
caseStudyDetail.more 사례 연구
더 많은 기술 구현 사례를 살펴보세요
자주 묻는 질문
MicrocosmWorks는 키프레임 간에 구성 가능한 easing curves를 가진 캔버스 기반 렌더링 엔진을 구현했으며, position, scale, rotation, opacity properties에 대해 linear, bezier, ease-in-out 및 사용자 정의 곡선 보간을 지원합니다. 이 편집기는 브라우저에서 최대 60fps로 프레임별 미리보기를 실시간으로 렌더링하며, 디자이너가 control points를 드래그하여 키프레임 위치와 easing curves를 시각적으로 조정할 수 있는 대화형 타임라인을 포함합니다.
MicrocosmWorks는 FFmpeg를 사용하여 알파 채널 보존으로 각 프레임을 합성하고, H.264 코덱이 기본적으로 알파 채널을 지원하지 않기 때문에 VP9 alpha가 포함된 WebM 또는 투명도가 포함된 Apple ProRes 4444로 내보내는 서버 측 렌더링 파이프라인을 구축했습니다. 브라우저 기반 편집기는 투명도를 나타내는 바둑판 배경과 함께 실시간 미리 보기를 보여주며, 최종 렌더링은 모든 프레임에서 일관된 품질을 보장하기 위해 서버 측에서 처리됩니다.
네, MicrocosmWorks는 사용자 정의 글꼴이 적용된 텍스트, 래스터 및 벡터 이미지, 비디오 클립, 셰이프 기본 요소를 포함하며 각각 독립적인 키프레임 애니메이션 트랙을 갖춘 z-ordered 레이어를 지원하는 다중 레이어 컴포지션 엔진을 구축했습니다. 레이어 패널은 가시성 토글, 불투명도 슬라이더, 블렌드 모드, 그룹화를 포함하여 익숙한 Photoshop과 유사한 제어 기능을 제공하므로 Adobe 워크플로우에 이미 익숙한 디자이너들에게 직관적입니다.
MicrocosmWorks는 하드웨어 가속 컴포지팅을 위해 WebGL을, 논블로킹 키프레임 계산을 위해 Web Workers를 사용하도록 에디터를 최적화하여, 최신 하드웨어에서 최대 20-30개의 레이어로 구성된 컴포지션에 대해 부드러운 실시간 미리 보기 성능을 달성했습니다. 최종 내보내기 렌더링의 경우, 무거운 작업은 서버 측에서 수행되며, 전용 GPU 리소스가 사용자의 장치 성능과 관계없이 일관된 출력 품질을 보장합니다.
MicrocosmWorks는 시간당 $20~$40의 개발 요율로 맞춤형 애니메이션 편집기 프로젝트를 제공하며, 키프레임 타임라인, 다중 레이어 구성, 투명 비디오 내보내기 기능을 포함하는 완전한 기능을 갖춘 편집기는 일반적으로 4-6개월의 개발 기간이 필요합니다. 이는 사용자별 라이선스 비용을 청구하는 상업용 SDKs를 기반으로 구축하는 것보다 훨씬 더 비용 효율적이며, 장기적인 제품 개발을 위해 코드베이스의 완전한 소유권을 제공합니다.