배경만 바꾸려다 잘된 장면까지 사라집니다

제품 데모의 손동작과 카메라 이동은 마음에 드는데, 배경만 더 밝게 바꾸고 싶을 때가 있어요. 영상을 처음부터 생성하면 제품 위치와 속도, 로고가 등장하는 순간까지 달라질 수 있습니다. 수정본의 반응이 좋아져도 무엇이 영향을 줬는지 설명하기 어렵죠.

Ray 3.2의 video_edit는 기존 영상을 소스로 받아 자연어 지시에 맞게 클립 전체를 다시 렌더링합니다. 전통 편집기처럼 선택한 픽셀이나 한 장면만 교체하는 기능은 아니지만, 원본 움직임을 조건으로 재사용할 수 있어 검증된 동작을 기준으로 배경 하나만 바꾸는 편집 루프를 만들 수 있습니다.

목표는 한 번에 완성본을 얻는 게 아닙니다. 원하는 요소 하나만 달라졌는지 전 구간을 확인하고, 품질 검수를 통과한 수정본만 원본과 비교하는 겁니다.

5초 클립으로 첫 수정본을 실행하세요

첫 실행은 Luma Agents의 공식 Video editing 가이드를 기준으로 진행합니다. 준비물은 Luma 개발자 계정과 API 키, 사용 가능한 결제 한도, Python 3.9 이상, 외부에서 접근 가능한 MP4 URL입니다. 공식 Python SDK는 Python 3.9 이상을 요구합니다.

공개 URL이나 인라인 데이터를 소스로 쓸 때는 파일이 200MB 이하이고 영상이 18초 이하여야 합니다. URL은 외부에서 접근 가능해야 하며 video/mp4 같은 영상 MIME을 제공해야 해요. 18초는 허용 상한이므로 첫 확인은 결과를 빠르게 검수할 수 있는 5초 클립으로 시작해 보세요.

  1. Python 버전을 확인하고 SDK를 설치합니다. macOS나 Linux 터미널에서 아래의 python3 --version을 실행해 3.9 이상인지 확인한 뒤, 같은 환경에 luma-agents를 설치하세요.
  2. Luma 개발자 플랫폼에서 계정을 만들고 API 키를 생성합니다. 로그인한 뒤 개발자 대시보드에서 키를 발급하고, 같은 터미널 세션에서 LUMA_AGENTS_API_KEY 환경 변수로 설정하세요. Luma()는 초기화할 때 이 값을 읽고 값이 없으면 오류를 냅니다. 키를 Python 파일이나 공유 문서에 직접 적지는 마세요.
  3. 아래 Python 코드를 edit_video.py로 저장합니다. example.com 주소는 실제로 외부에서 접근 가능한 자신의 MP4 URL로 교체하세요. 프롬프트는 배경만 바꾸고 패키지 색상·질감·형태·로고·카메라 이동·손동작은 유지하도록 한 변수만 지정합니다.
  4. API 키를 설정한 것과 같은 터미널에서 python3 edit_video.py를 실행합니다. 스크립트는 작업을 제출하고 completed 또는 failed가 될 때까지 상태를 조회합니다. 약 10분이 지나도 끝나지 않으면 무기한 기다리지 않고 작업 ID를 남긴 채 종료합니다.
  5. 완료된 MP4를 즉시 저장하고 원본과 나란히 봅니다. 출력 URL은 1시간 후 만료될 수 있습니다. 밝은 배경만 달라지고 나머지 보존 항목이 클립 전체에서 유지돼야 첫 수정본으로 인정하세요.
# macOS 또는 Linux 터미널
python3 --version
python3 -m pip install luma-agents
export LUMA_AGENTS_API_KEY="발급받은_API_키"
# edit_video.py
import time
from luma_agents import Luma

client = Luma()
job = client.generations.create(
    model="ray-3.2",
    type="video_edit",
    prompt="배경만 밝은 스튜디오로 변경. 원본의 패키지 색상과 질감, 텀블러 형태, 흰색 로고의 위치와 크기, 카메라 이동, 뚜껑을 여는 손동작은 유지.",
    source={
        "url": "https://example.com/tumbler-demo-5s.mp4",
        "media_type": "video/mp4"
    },
    video={
        "resolution": "720p",
        "edit": {"auto_controls": True}
    }
)

deadline = time.monotonic() + 600
while job.state not in ("completed", "failed"):
    if time.monotonic() >= deadline:
        print("시간 초과. 작업 ID:", job.id)
        raise TimeoutError("영상 작업이 10분 안에 완료되지 않았습니다.")
    time.sleep(2)
    job = client.generations.get(job.id)

if job.state == "completed":
    print(job.output[0].url)
else:
    print(job.failure_reason, job.failure_code)
# 같은 터미널에서 실행
python3 edit_video.py

위 URL과 텀블러 설정, 10분 제한은 첫 실행의 입력 형식을 보여주기 위한 예시입니다. 실제 공개 MP4로 교체해야 하며, 실행에는 사용량에 따른 비용이 발생할 수 있어요. 시간 초과가 나면 출력된 작업 ID를 기록하고 나중에 상태를 다시 조회하세요. 이번 조사에서는 공식 문서와 SDK의 요청 구조까지만 확인했고 실제 생성 품질·소요시간·과금액은 측정하지 않았습니다.

파일 생성과 편집 성공은 다릅니다

첫 요청의 공식 권장값은 auto_controls=true입니다. 결과에서 제품 모양이나 움직임이 무너졌을 때만 수동 strength 또는 신호별 controls로 전환하세요. 자동 제어와 개별 제어는 함께 사용할 수 없습니다.

수정 상황다음 설정판정 기준
첫 편집auto_controls=true배경 하나만 지시하고 전체 변형 확인
원본에 더 가깝게 유지adhere_1~adhere_3제품 형태는 남지만 배경 변화가 너무 약하지 않은지 확인
보존과 변화의 중간 지점flex_1~flex_3형상·로고·접촉 장면 재검수
장면을 크게 재해석reimagine_1~reimagine_3비교 실험보다 콘셉트 탐색에 적합한지 판단

더 세밀한 조정에는 pose, depth, normals, trajectory, face 신호가 제공됩니다. 특정 프리셋이 모든 제품 데모에서 더 낫다는 비교 자료는 없어요. 먼저 자동 제어 결과에서 실제로 실패한 부분을 찾고 설정 하나씩 바꾸는 편이 낫습니다.

completed는 기술적 완료일 뿐입니다

배경은 바뀌었지만 제품 색상, 로고, 손동작까지 변했다면 편집 실험은 실패한 겁니다. API 상태와 별개로 사람이 원본과 전 구간을 비교해야 합니다.

정확성이 필요한 순간에만 키프레임을 붙이세요

제품이 처음 등장하거나 로고가 크게 보이는 순간에는 가이드 이미지를 연결할 수 있습니다. 공식 API는 최대 64개의 keyframes와 같은 길이의 keyframe_indexes를 받아 각 이미지를 소스 영상의 특정 프레임에 대응시킵니다.

키프레임은 해당 장면만 선택해 수정하는 마스크가 아닙니다. 클립 전체를 다시 렌더링할 때 특정 시점의 목표 상태를 전달하는 기준 이미지예요. 예를 들어 로고 클로즈업 프레임을 추출하고 이미지 편집기에서 배경만 정확하게 바꾼 뒤, 그 이미지를 원래 프레임 인덱스에 연결할 수 있습니다.

64개를 채우지 말고 실패 비용이 큰 순간부터 고정하세요

64개는 허용 상한이지 권장 개수가 아닙니다. 첫 시도에서는 제품 등장과 로고 클로즈업처럼 중요한 한두 지점부터 연결해야 어느 가이드가 결과에 영향을 줬는지 확인하기 쉽습니다.

keyframes와 keyframe_indexes의 개수는 같아야 합니다. 인덱스는 중복될 수 없고 소스 프레임 범위 안에 있어야 해요. 키프레임을 넣어도 작은 라벨이나 UI 문자가 정확히 보존된다는 보장은 없으므로 결과 전체를 다시 확인해야 합니다.

86%는 제품 데모의 평균 성과가 아닙니다

전환율이 86% 넘게 개선됐다는 숫자는 온라인 과외 서비스 TutorVista의 단일 랜딩 페이지 사례에서 나왔습니다. 신규 방문자를 기존 페이지와 자동 재생 영상 페이지에 50:50으로 나누고, 음소거와 재생 후 애니메이션 같은 요소를 여러 차례 최적화한 뒤 원본 대비 86% 초과의 상대 개선을 보고했습니다.

원자료는 사용된 영상을 제품 데모라고 밝히지 않습니다. 표본 수, 절대 전환율, 실험 기간, 각 변경 요소의 개별 효과도 공개하지 않았어요. 따라서 86%를 제품 데모 영상의 평균 성과나 영상 추가 하나의 효과, 다른 사이트의 목표치로 옮길 수는 없습니다.

더 넓은 관찰 자료에서도 영상의 존재만으로 전환 상승이 보장되지는 않았습니다. Unbounce는 2020년 말부터 2021년 초까지 서로 다른 세 기간에 각각 약 3만5천 개의 고객 랜딩 페이지를 분석했습니다. 10개 업종에서 영상이 있는 페이지의 성과는 대체로 비슷하거나 더 낮았습니다. 무작위 대조 실험은 아니므로 영상이 하락의 원인이라고 단정할 수 없지만, 적어도 ‘영상 추가=전환 상승’이라는 공식은 확인되지 않은 셈입니다.

품질을 통과한 수정본만 A/B 테스트하세요

수정 효과를 해석하려면 페이지 본문, CTA 문구, 유입 조건은 그대로 두고 영상만 원본 A와 수정본 B로 나누세요. 이번 질문이 배경이라면 패키지 색상과 질감, 영상 길이, 손동작은 바꾸지 않습니다. TutorVista 사례는 대조 페이지와 변형을 분리했고, Unbounce도 각 사이트에서 영상 변형을 직접 비교하라고 권합니다.

최종 지표는 가입 완료·구매·데모 예약 가운데 실제 사업 목표 하나로 정하세요. 재생 시작률, 구간별 이탈, 완료율과 CTA 클릭은 승자를 선언하기보다 다음 수정 지점을 찾는 보조 지표로 씁니다. 필요한 표본 수는 현재 전환율과 트래픽, 감지하려는 최소 차이에 따라 달라지므로 외부 사례의 숫자를 그대로 적용하면 안 됩니다.

비교 전에 탈락시킬 버전을 정하세요

제품 형태, 패키지 색상, 로고, 작은 글자, 손과 제품의 접촉, 카메라 이동 가운데 하나라도 의도치 않게 달라졌다면 전환 실험에 넣지 마세요. 여러 요소가 달라진 수정본은 이겨도 다음 제작 결정에 재사용하기 어렵습니다.

Ray 3.2가 전환율을 자동으로 높여주는 것은 아닙니다. 줄여주는 것은 잘된 촬영까지 버리고 다시 시작하는 비용이에요. 검증된 원본을 기준으로 배경 하나만 지시하고 클립 전체를 검수하면, 86%라는 외부 숫자 대신 우리 방문자에게 실제로 통했던 변화를 다음 데모에 이어갈 수 있습니다.