AI 에이전트가 비디오 편집기를 제어하는 새로운 방식

by DD
3시간 전
조회수 0

기존 AI 비디오 도구와 달리, FableCut은 프로젝트 파일(project.json)을 인터페이스로 사용하여 AI 에이전트가 직접 편집 상태를 제어하도록 함

SSE(Server-Sent Events)를 단순 변경 알림 용도로만 사용하여, 상태 동기화 복잡성을 최소화하고 실시간 미리보기(Real-time Preview) 기능을 구현함

단일 정수형 리비전 카운터를 통해 동시성 문제를 해결하며, 마지막 작성자 우선(Last-Writer-Wins) 전략으로 복잡한 동기화 로직을 배제함

CSS 애니메이션을 활용한 프레임 단위 제어 방식으로, 실시간 렌더링 없이도 정확한 애니메이션 상태를 미리보기 및 내보내기에서 동일하게 구현함

프로젝트 파일 중심의 인터페이스 설계

FableCut은 JSON 기반의 단일 프로젝트 파일(project.json)을 핵심 인터페이스로 채택하여, AI 에이전트와 인간 사용자가 동일한 편집 상태에 접근하고 수정할 수 있도록 설계함.

API 추상화 제거: 기존 AI 비디오 도구들이 내부 상태를 API로 숨기는 방식과 달리, FableCut은 모든 편집 정보(미디어, 클립, 트랙, 키프레임 등)를 JSON 문서에 직접 기록함.

범용 편집 가능성: 이 접근 방식은 Claude Code, Python 스크립트, jq, 또는 텍스트 에디터 등 JSON을 읽고 쓸 수 있는 모든 도구를 비디오 편집기로 활용할 수 있게 하여, AI 기반 워크플로우의 유연성을 극대화함.

상태 관리 단순화: UI, AI 에이전트, 스크립트 등 모든 편집 주체가 동일한 파일에 접근하므로, 복잡한 상태 동기화 로직이나 협업 레이어 구축의 필요성이 줄어듦.

SSE를 활용한 실시간 변경 감지 메커니즘

FableCut은 SSE(Server-Sent Events)를 단순한 변경 알림 채널로 사용하여, 서버에서 프로젝트 파일 변경 시 브라우저에 즉각적으로 알림을 전달함.

단방향 통신 최적화: 데이터는 REST API나 파일 시스템을 통해 쓰여지고, 브라우저는 변경 사항 발생 시 프로젝트 파일을 재요청(Re-fetch)하여 UI를 업데이트함. 이는 양방향 통신이 필요한 WebSockets보다 단순함.

이벤트 누락의 영향 최소화: SSE는 페이로드 없이 변경 사실만 전달하므로, 이벤트 순서가 바뀌거나 누락되어도 다음 재요청 시 최신 상태를 반영하므로 결과적 일관성(Eventual Consistency)을 보장함.

간결한 구현: 약 15줄의 Node.js 코드로 구현 가능하며, 실시간 미리보기(Real-time Preview) 경험을 제공하면서도 복잡한 WebSocket 서버 관리를 피함.

단일 리비전 카운터 기반의 동시성 제어

FableCut은 단일 정수형 리비전 카운터를 사용하여 복잡한 동시성 제어 로직 없이도 인간과 AI 에이전트 간의 타임라인 공유를 가능하게 함.

마지막 작성자 우선(Last-Writer-Wins) 전략: 모든 쓰기 작업은 리비전 카운터를 증가시켜야 하며, 서버는 디스크의 최신 리비전보다 낮은 값을 가진 요청을 거부함(409 Conflict).

운영 변환(OT) 및 CRDT 불필요: 편집 작업이 문서 전체 단위로 이루어지고 빈도가 낮다는 점을 활용하여, 복잡한 충돌 해결 알고리즘(Conflict Resolution Algorithm) 없이도 동시 편집 충돌을 효과적으로 관리함.

단순성과 효율성: UI 드래그와 AI 편집이 동시에 발생해도, AI의 오래된 쓰기 요청은 거부되고 최신 상태를 다시 읽어와 재적용하므로 안정적인 협업 환경을 제공함.

CSS 애니메이션을 활용한 프레임 단위 제어

FableCut은 CSS @keyframes 애니메이션을 사용하여 SVG 오버레이(예: 로어 서드, 색종이 조각)를 구현하고, 이를 `animation-delay` 속성으로 제어하여 프레임 단위의 정확성을 확보함.

시간 동기화: 비디오 컴포지터는 각 클립의 로컬 시간에 맞춰 `animation-delay: calc(var(--d, 0s) - t)`를 설정하여, 음수 지연 시간을 통해 애니메이션의 특정 프레임에서 시작하도록 함.

실시간 렌더링 없이 정확성 확보: 이 방식은 실시간 렌더링이 불가능한 내보내기 과정에서도 애니메이션 상태를 정확히 재현하며, 미리보기와 내보내기 결과의 일관성(Consistency)을 보장함.

SVG 작성 규칙: SVG 작성자는 `animation-delay`를 하드코딩하지 않고 `--d` 사용자 정의 속성을 사용하여 애니메이션 시작 시간을 제어해야 함.

FFmpeg 통합 및 AI 기반 편집 워크플로우

FableCut은 FFmpeg를 최종 인코딩 단계에 활용하지만, AI 에이전트와의 창의적인 편집 루프에서는 직접적인 인터페이스를 제공하지 않음.

FFmpeg의 한계: FFmpeg는 주로 트리밍, 병합, 트랜스코딩 등 명령줄 기반의 작업(Command-line Operations)에 적합하며, 편집 결과를 실시간으로 확인하고 반복 수정하는 창의적 작업에는 부적합함.

FableCut의 역할: FableCut은 AI 에이전트가 JSON 편집을 통해 빠른 피드백 루프(Fast Feedback Loop)를 경험하게 하고, 브라우저에서 미리보기 가능한 상태를 유지하도록 함. 이는 FFmpeg의 '쓰기 전용(Write-only)' 특성과 대조됨.

하이브리드 접근: FableCut은 상태 관리 및 미리보기 레이어 역할을 하며, 최종 비디오 프레임 렌더링 후 FFmpeg로 전달하여 효율적인 인코딩을 수행하는 하이브리드 아키텍처(Hybrid Architecture)를 구성함.

The project file is the interface: letting AI agents drive a video editor