-
Seedance 2.0 fast 영상의 첫 0.5초가 사진처럼 정지된 이유 — photo prefix 자동 제거IT 2026. 5. 23. 23:00
🔧 이 글은 BytePlus Seedance 2.0 fast로 만든 영상을 자동 파이프라인에서 후처리하는 사용자를 위한 글입니다. photo prefix 현상은 ModelArk 콘솔에서 만든 결과물에도 그대로 나타나지만, 후처리 자동 trim 코드는 여러 클립을 일괄 처리하는 API 자동화 환경에서 가장 가치가 있습니다. 단발 영상이라면 콘솔의 트림 UI를 쓰는 게 편할 수 있어요.
"왜 첫 0.5초는 멈춰 있는 것 같지?"
BytePlus Seedance 2.0 fast로 만든 클립을 한 편 한 편 다듬다가, 시청자 입장에서 자꾸 같은 위화감이 느껴졌습니다. 영상이 시작하자마자 인물이 자연스럽게 움직이는 게 아니라, 첫 반 초쯤은 사진처럼 정지되어 있다가 그 뒤에 motion이 시작됩니다. 한 클립만 그러면 우연이라 칠 수 있는데, 거의 모든 클립이 같은 패턴이었습니다.
처음에는 prompt를 잘못 적었나 의심했고("0초부터 움직이라고 안 적어서?"), reference 사진의 표정 때문인가도 의심했습니다. 그런데 17개 succeeded mp4를 일괄 분석해 보니 패턴이 명확하게 보였습니다.
prefix 길이 케이스 수 0.4s 미만 1 0.4 ~ 0.7s 4 0.7 ~ 1.0s 1 1.0 ~ 2.0s 2 2.0s 이상 1 (없음) 8 17개 중 9개(53%)에 photo prefix가 있었고, 길이는 0.375초에서 2.417초까지 분포했습니다. 0.5초를 넘으면 사용자도 거의 다 "사진이 잠깐 보였다"고 인지합니다. 1초가 넘는 케이스는 더 명확하죠.
원인은 i2v(image-to-video) 모드의 동작 자체에 있었습니다. 모델이 입력 reference 사진을 첫 프레임으로 정적으로 보여준 뒤, 일정 시간이 지난 다음에야 AI motion으로 transition합니다. 이는 모델 입장에선 자연스러운 동작 시퀀스이지만, 사용자 입장에선 "왜 영상 시작이 멈춰 있지?"라는 visual glitch입니다.
해결 — scene change 검출 후 자동 trim
이 prefix는 prompt나 reference 조정으로는 못 막습니다. 모델 architecture의 일부이기 때문이죠. 대신 후처리 단계에서 자동으로 제거하는 게 정답입니다. 영상 후처리 파이프라인에 trim_intro 단계 하나를 default로 추가하면, 모든 클립이 깨끗한 시작을 갖게 됩니다.
핵심은 두 가지 결정입니다.
- scene change를 어떻게 검출하나? pixel-level diff(YDIF)는 작은 노이즈에도 민감하게 반응해서 false positive가 잦습니다. 대신 ffmpeg의 PSNR 기반 scene detection을 쓰면 사용자 인지에 더 가까운 결과를 줍니다.
- trim 시점을 어디로 잡나? scene change가 두 번 검출되면, 첫 번째는 frame 1의 자연스러운 시작 변화이고, 두 번째 scene change가 사진→motion transition 시점입니다. 그 시점까지를 잘라냅니다.
다이어그램이 짚어주는 핵심은 두 줄짜리 결정입니다. (1) scene change는 두 번 검출되는데, 두 번째가 prefix→motion transition이다. (2) sanity bound(0.05~2.5초) 안에서만 trim한다 — 너무 짧으면 이미 깨끗한 영상이고, 너무 길면 scene change 검출이 실제 본문 안의 큰 변화를 잘못 잡은 것일 가능성이 높습니다.
코드로 보면 — 후처리 한 단계
영상 생성 후 mux 단계까지 끝낸 다음, 그 mp4를 한 번 더 검사하는 후처리 단계를 추가합니다.
def auto_trim_intro(mp4_path: Path, lip_sync: bool = False) -> None: """photo prefix를 자동 검출해 잘라낸다. in-place 수정.""" if lip_sync: # 모델이 이미 audio·video sync를 맞춰 출력했으므로 trim하면 깨짐 return # ffmpeg PSNR scene detection — 두 번째 scene change가 transition scene_changes = _detect_scene_changes(mp4_path, threshold=0.3) if len(scene_changes) < 2: return # transition이 검출되지 않음 = prefix 없음 prefix_end = scene_changes[1] # sanity bound if prefix_end < 0.05: return # 이미 깨끗 if prefix_end > 2.5: return # false positive 의심 — 본문을 자르지 않음 # 정확한 sub-second trim은 재인코딩이 필요 (별도 글) _trim_inplace(mp4_path, start=prefix_end, codec="libx264", crf=18)함수 내부는 거의 다 안전장치입니다. 본문 로직은 "두 번째 scene change까지를 잘라낸다" 한 줄뿐이고, 나머지는 다음 항목들을 보호합니다.
lip_sync모드 클립은 건너뜁니다. 모델이 audio·video sync를 이미 맞춘 mp4의 첫 부분을 trim하면, audio 시작점도 같이 밀려 입 모양과 안 맞게 됩니다. capability flag를 후처리에 전달해 분기하는 게 핵심.- 너무 짧거나 긴 검출은 무시합니다. 0.05초 미만은 이미 깨끗한 영상이라 건드릴 이유가 없고, 2.5초 초과는 sane prefix 분포를 벗어나는 값이라 본문을 자를 위험이 있습니다.
- 재인코딩으로 정확한 sub-second trim을 보장합니다.
-c copy로 trim하면 keyframe까지만 점프해서 sub-second 정확도를 못 맞춥니다. 이건 별도로 더 깊은 주제라 다른 글에서 다룹니다.
perceptual metric을 신뢰하는 이유
이 코드에서 한 가지 더 짚어둘 부분은 PSNR 기반 scene detection을 쓴다는 결정입니다. 가장 직관적인 방법은 frame별 픽셀 평균 차(YDIF)를 보는 거지만, 실제로 해 보면 YDIF는 photo prefix 안의 작은 압축 노이즈에도 반응합니다. 사용자 인지 측면에선 "사진이 멈춰 있다"고 인지하지만, YDIF는 매 프레임 미세한 픽셀 차이를 잡아서 "이미 motion 중"이라고 잘못 판단하죠.
PSNR은 perceptual signal에 더 가깝습니다. 사람의 시각 시스템이 인지하는 변화량과 비례하는 경향이 있어, 사진→motion transition 같은 큰 perceptual 변화는 잘 잡고 압축 노이즈 같은 작은 변화는 잘 무시합니다. 영상·미디어 처리 전반에서 metric을 고를 때 "pixel-level이 아닌 perceptual-level" 을 선택하는 습관이 도움이 됩니다.
결과 — 클립 53%의 첫 인상이 달라졌다
이 후처리 한 단계를 파이프라인 default로 추가한 뒤, 전체 클립의 53%(prefix 있던 클립)가 깨끗한 시작을 가지게 됐습니다. 합본 영상의 흐름도 좋아졌습니다 — 클립이 바뀔 때마다 0.5초씩 정지 사진이 보였다가 motion으로 transition하는 시각적 깜빡임이 사라졌으니까요.
이 작업이 남긴 일반 lesson은 두 가지입니다.
- AI 모델 결과는 모델 quirk를 다듬는 후처리 layer가 필요하다. photo prefix 같은 model-side artifact는 prompt로 못 막습니다. 후처리 단계를 ETL 파이프라인 식으로 명시적으로 두면, 모델이 만든 결과를 사람 입장에서 쓸 수 있는 결과로 변환하는 위치가 명확해집니다.
- 후처리 step은 capability flag별로 분기해야 한다. lip_sync 모드처럼 모델이 더 많은 결정을 자체 처리하는 capability가 도입되면, 후처리가 그 결정을 덮어쓰지 않도록 skip 조건을 명시해야 합니다. 후처리 layer에 새 capability flag가 추가될 때마다 "이 step이 새 flag와 호환되는가" 매트릭스로 체크하는 습관이 사고를 미리 막습니다.
영상 production은 결국 두 layer로 이루어져 있습니다 — compute(영상 생성) 와 compose(후처리·합성). 두 layer를 명확히 분리하면 각 layer가 자기 도구를 갖게 되고, 그 도구들 끼리 위에서 본 것 같은 작은 자동화가 가능해집니다.
이 글은 생성형 AI의 도움을 받아 작성되었습니다. 원본 자료를 기반으로 AI가 초안을 생성하고, 작성자가 검토·편집하였습니다.
'IT' 카테고리의 다른 글