이번 기간에는 뮤직비디오에 움직이는 장면을 넣는 방법을 찾았다. 처음에는 Google의 AI 영상 생성 API를 붙여 보려 했다. 비용을 따져 보니 대부분의 연출은 WebGL 효과로 충분했다. 그래서 효과 라이브러리를 만들어 기존 뮤직비디오에 넣었고, 새 애니메이션 뮤직비디오 두 편도 만들었다.
AI 영상 생성 API 붙여 보기: Veo, Gemini Omni
Antigravity에 Veo로 영상을 만들 수 있는지 물었다. 내장 도구는 이미지 생성뿐이었다. 대신 GEMINI_API_KEY가 있으면 google-genai SDK 스크립트로 Veo를 호출할 수 있다는 답을 받았다. 프로젝트 .env에는 이미 키가 세팅되어 있었다.
이어서 Claude Code에 AI Studio의 Omni 소개 페이지를 분석하게 하고, 여기서 바로 쓸 수 있는 Node 스크립트를 만들게 했다. 정리된 내용은 다음과 같다.
- 모델은
gemini-omni-1.2-flash다. 1.1은 2026-12-03부터 1.2로 자동 연결된다. generateContent가 아니라 Interactions API(POST /v1beta/interactions)로 호출한다.- 글로 영상 만들기(소리 포함, 최대 15초), 그림으로 영상 만들기,
previous_interaction_id로 대화형 수정, 영상 편집, 영상 늘리기(합계 30초)를 지원한다. - 비율은 16:9와 9:16, 해상도는 360p부터 4k, 길이는 3~15초다.
테스트 영상을 하나 만들어 보려 했지만 요청이 거절됐다.
HTTP 429: Rate limit exceeded for model gemini-omni-1.2-flash (limit: 0 requests per day on Free Tier)
키가 무료 등급이었고, 무료 등급에서는 Omni를 하루 0번 쓸 수 있다. 결제 계정을 연결해 유료 등급으로 올려야 쓸 수 있다.
영상 생성 비용 비교: Omni, 클링, 힉스필드
유료로 쓰면 얼마인지도 확인했다. Omni는 영상 길이와 해상도로 요금이 정해진다. Google 가격표 기준 720p가 초당 $0.07이라 10초에 $0.70이다. 360p는 초당 $0.023이다.
클링, 힉스필드와도 비교했다. 지금 상황에서는 이미 가입한 클링이 가장 쌌다. 클링 MCP로 계정을 조회하니 Standard 등급에 크레딧이 151 남아 있었다. 클링 MCP는 API 키가 아니라 OAuth 로그인 방식이다. 그래서 개발자용 API 선불 결제가 아니라 구독 크레딧에서 바로 차감된다.
확인된 최저 조건은 kling-video-v3_0, 720p, 소리 없음, 5초에 30크레딧이다. 클링에는 360p가 없다. 비용을 아끼려면 기본값을 직접 바꿔야 한다.
- 많은 모델의 해상도 기본값이 1080p다.
720p로 지정한다. enable_audio기본값이 켜져 있다. 켜 두면 5초에 45크레딧이 든다.- 기본 모델은
kling-video-v4_0인데 3.0보다 비쌀 것으로 보인다.
굳이 구독할 필요가 있나
기존 뮤직비디오 세 편(absolute-zero-mv, phantom-pain-mv, soju-tears-mv)은 Codex CLI 이미지 생성, HyperFrames, Remotion만으로 크레딧 없이 완성했다. 이번에 원한 것은 배경에 눈과 비가 내리고 얼굴에 눈물이 흐르는 정도의 움직임이었다.
이 용도라면 구독은 필요 없다는 결론이 나왔다.
- 눈·비: 정지 그림 위에 입자 효과를 겹치면 무료로 된다. 박자에 맞춰 세기를 조절할 수 있고 길이 제한도 없다. 5~10초짜리 AI 영상을 이어 붙이는 것보다 오히려 낫다.
- 눈물: 클로즈업에서 사실감이 필요하면 AI 영상이 낫다. 장면 몇 개뿐이니 그때그때 결제하는 편이 싸다.
WebGL 비 효과 예시
three.js와 WebGL로 효과를 만들면 어떻게 나오는지 직접 확인했다. 소주 뮤직비디오 S01 그림(비 오는 밤 술집 앞)에 효과를 얹어 8초 예시 영상을 만들었다. 결과는 1920×1080, 30fps이고 렌더는 9초 걸렸다. 원본 프로젝트는 건드리지 않고 그림만 복사해서 썼다.
들어간 효과는 다음과 같다.
- 깊이가 다른 3겹 비. 바람에 따라 비 각도가 바뀌고, 등불 근처 빗줄기는 주황빛으로 물든다.
- 바닥에 떨어지는 물방울 240개의 퍼지는 고리와 젖은 바닥 반사. 인물과 의자는 흔들리지 않게 따로 뺐다.
- 물웅덩이 파문.
- 렌즈에 맺혔다가 미끄러지는 빗방울. 물방울 안에는 배경이 뒤집혀 비친다.
효과 라이브러리 12종
같은 방식으로 다른 효과도 만들었다. 눈, 눈물, 땀방울, 구름·바람, 해, 달·별 등 12종을 다시 쓸 수 있는 라이브러리로 묶었다. 기존 그림 9장에 하나씩 적용해 54초 견본 영상(장면당 6초)으로 렌더했다.
- 눈: 3겹 눈송이, 흐르는 밤구름, 촛불 일렁임.
- 눈물: 아래 눈꺼풀에 맺혀 볼을 타고 흐르다 떨어진다. 젖은 자국이 남았다가 마른다.
- 땀방울: 이마와 볼에 맺혀 반짝이고 관자놀이 쪽은 흘러내린다.
- 구름·바람: 구름 그림자, 나뭇가지 흔들림, 날리는 낙엽.
- 해: 빛무리, 도는 빛살, 렌즈 플레어.
소주 뮤직비디오에 효과 넣기
문제는 연결이었다. 기존 뮤직비디오는 Remotion에서 정지 그림을 천천히 확대하는 방식이다(Final.tsx의 <Img>). 새 효과는 HyperFrames용이라 Remotion에 바로 들어가지 않는다.
그래서 효과가 들어갈 장면만 HyperFrames로 장면 길이에 맞춰 MP4로 렌더했다. Remotion에서는 해당 장면에 영상 파일이 있으면 <Img> 대신 <OffthreadVideo>를 쓰게 바꿨다. 가사 자막과 노래, 나머지 장면은 그대로 둔다. 장면 길이가 바뀌면 그 장면의 효과 영상만 다시 렌더하면 된다.
결과는 final-fx.mp4(181.8초)이고 기존 final.mp4는 남겨 두었다. 바뀐 장면은 다음과 같다.
- S01: CSS 비를 WebGL 비로 교체.
- S04, S09: 눈물이 맺혀 흐르다 떨어진다.
- S10, S15: 눈물이 소주잔에 떨어지고 잔 안에 파문이 퍼진다.
눈물은 그림에 원래 그려진 눈물 자국을 따라 흐르도록 좌표를 맞췄다. 양쪽 눈은 시차를 두고 흐른다.
광화문 촛불 장면 (Codex)
Codex에는 WebGL, three.js로 광화문 도심을 배경으로 한 촛불 현장을 만들게 했다. 광화문을 모티브로 한 가상 풍경이다. 최대 3,600명의 촛불 군중이 나온다.
- 시점 전환, 바람과 시간대 조절, 클릭하면 퍼지는 빛의 물결을 넣었다.
- 일시정지, PNG 저장, 전체 화면을 지원한다.
- 브라우저 기능 테스트 10건을 통과했고 데스크톱과 모바일 화면을 확인했다.
애니메이션 스타일 뮤직비디오 2편
음원 파일을 주고 인물과 배경 위주의 애니메이션 뮤직비디오를 만들게 했다. 그림은 Codex로 만들어 비용은 들지 않았다. 장면마다 앞에서 만든 WebGL 효과를 넣었다.
"환상통" (198.1초)
- 갈색 웨이브 머리에 크림색 원피스를 입은 여성이 16장면 모두 같은 인물로 나온다.
- 노을 창가 제목, 치과, 은행잎 거리, 빗속 우산으로 이어진다.
- "달려" 부분부터는 밤거리와 눈 오는 밤을 달리고, 새벽 언덕에서 끝난다.
- 소리 크기는 원본과 같은 평균 −17.3dB다.
"−273.16°" (202.9초)
- 원본 영상의 두 인물과 장면(야외 술집, 술 따라주기, 어깨에 기대기)을 애니메이션풍으로 다시 그렸다.
- 가사의 온도 순서를 따라간다. 따뜻한 기억에서 이별, 추위를 지나 빛으로 사라지는 끝으로 간다.
- 소리 크기는 원음과 같은 평균 −17.2dB이고, 장면마다 가사 자막이 맞게 나온다.
남은 것
- Omni는 무료 등급 제한으로 한 번도 생성해 보지 못했다. 쓰려면 유료 등급 전환이 필요하다.
- 클링
v3_0_turbo,v4_0_flash등 다른 모델의 크레딧 차감량은 확인하지 못했다. 첫 생성 전후로 잔액을 조회해 직접 재야 한다. - 애니메이션 뮤직비디오 두 편은 영상을 직접 재생해 보지 못했다. 장면별 캡처 화면만 확인했다.
- 효과를 Remotion 안으로 옮기는 두 번째 연결 방식은 시도하지 않았다.
댓글 0개
아직 댓글이 없습니다. 첫 댓글을 남겨보세요.