실측 기반 소개

프리미어 없이 영상 편집 자동화 — Claude Code + Whisper + FFmpeg 파이프라인

무음컷·병합·자막 번인을 한 번 구축해 계속 재사용합니다. assets 폴더로 브랜드 포맷까지 템플릿화하는 방법.

프리미어 없이 영상 편집 자동화 — Claude Code + Whisper + FFmpeg 파이프라인 커버 이미지
14 MIN

10분짜리 영상 하나를 편집한다고 해봅시다. 실제로 손이 가는 작업을 나열하면 이렇습니다. 말이 끊긴 구간을 찾아 잘라내고, 나눠 찍은 클립을 순서대로 붙이고, 말한 내용을 받아쓰고, 자막 타이밍을 프레임 단위로 맞추고, 폰트와 위치와 색을 지난 영상과 똑같이 통일합니다. 이 중에 창의적 판단이 들어가는 항목은 거의 없습니다. 그런데 시간은 대부분 여기서 나갑니다. 영상이 길수록, 편수가 많을수록 이 구간만 선형으로 늘어납니다.

이 작업들이 지루한 이유가 곧 자동화의 실마리입니다. 지루하다는 건 규칙으로 적을 수 있다는 뜻이거든요. 무음은 “특정 데시벨 이하가 몇 초 이상 지속되는 구간”이고, 병합 순서는 “파일명 오름차순”이고, 자막은 “음성인식 결과를 화면 특정 위치에 얹기”입니다. 규칙으로 적을 수 있으면 스크립트가 되고, 스크립트는 한 번만 만들면 그 다음부터는 공짜입니다. 문제는 그 스크립트를 직접 짜려면 FFmpeg 필터 문법과 한참 씨름해야 한다는 점이었습니다. Claude Code가 가져가는 게 정확히 그 부분입니다.

미리 밝혀둡니다. 저희가 이 파이프라인을 처음부터 끝까지 구축해 고객 영상에 장기간 운영한 기록은 아직 없습니다. 아래 내용은 데키랩 채널의 AI 영상 편집 자동화 10분 (편집시간 90% 절감) 영상에서 제시된 절차와, 거기 쓰이는 구성 요소들의 공개 문서를 기준으로 정리한 것입니다. 저희 판단이 들어간 부분은 판단이라고 따로 표시했습니다.

파이프라인이 하는 일

전체 흐름은 폴더 세 개로 요약됩니다. input에 촬영 원본을 넣고, assets에 브랜드 요소를 넣어두면, output에 완성본이 나옵니다.

project/
├── input/     # 촬영 원본 (01.mp4, 02.mp4, 03.mp4 ...)
├── assets/    # 폰트, 시작음, 전환음, 삽입 이미지
└── output/    # 결과물

그 사이에서 도는 단계는 이렇습니다.

단계하는 일담당
1말이 없는 구간을 감지해 잘라냄FFmpeg
2파일명 순서대로 이어붙임FFmpeg
3음성을 한국어 텍스트 + 타임코드로 변환Whisper
4자막을 영상 픽셀에 직접 구움(번인)FFmpeg
5시작음·전환음 삽입, 문맥에 맞는 이미지 배치FFmpeg + Claude 판단

구성 요소를 보면 알 수 있듯 유료 편집 소프트웨어가 한 개도 없습니다. FFmpeg와 Whisper는 모두 오픈소스이고 로컬에서 돕니다. 영상 편수가 늘어도 추가로 나가는 돈이 없다는 뜻입니다. 이 점이 모션그래픽 쪽 자동화와 성격이 갈리는 지점이기도 합니다. 그쪽은 생성 크레딧이 소모되지만, 이쪽은 컷편집과 자막이라 연산만 있으면 됩니다.

왜 SRT 파일이 아니라 번인인가

구축 과정에서 갈리는 첫 번째 선택지가 자막 처리 방식입니다. SRT를 별도 파일로 뽑을 것인가, 영상에 직접 구울 것인가. 자료에서는 번인을 택했습니다.

번인이 유리한 이유는 명확합니다. 쇼츠·릴스·틱톡 같은 세로 포맷은 별도 자막 트랙을 지원하지 않고, 피드에서는 대부분 무음으로 자동재생됩니다. 자막이 영상 안에 없으면 그냥 안 보입니다. 폰트·색·위치를 브랜드에 맞춰 고정하려면 플랫폼 기본 자막 스타일에 맡길 수도 없습니다.

대신 대가가 있습니다. 번인은 되돌릴 수 없습니다. 오타 하나를 고치려면 전체를 다시 인코딩해야 하고, 나중에 영어 자막을 얹어 해외 배포를 하려 해도 화면에 한국어가 박혀 있어 방법이 없습니다. 저희 판단으로는 SRT를 중간 산출물로 남긴 뒤 번인하는 구성이 안전합니다. 어차피 5단계에서 이미지 삽입 타이밍을 잡을 때 SRT를 읽어야 하므로 파일은 어차피 생깁니다. 지우지 말고 output에 같이 보관하시길 권합니다.

구축은 한 번, 프롬프트 하나

VS Code에 Claude Code 확장을 붙이거나 데스크탑 앱을 열고, 프로젝트 폴더에서 새 세션을 시작합니다. 그리고 만들 것을 자연어로 적습니다.

input 폴더에 영상들을 넣으면
1) 무음 구간을 자동으로 잘라내고
2) 파일명 순서대로 병합한 다음
3) 말하는 내용을 한국어 자막으로 붙여서
결과를 output 폴더에 저장하는 워크플로우를 만들어 줘.

여기서 도구를 지정하지 않은 게 핵심입니다. 어떤 라이브러리를 쓸지, 어떻게 설치할지, 스크립트를 어떤 언어로 짤지는 Claude Code가 정하고 직접 테스트합니다. 자료 기준으로는 음성인식에 Whisper, 컷·병합·번인에 FFmpeg 조합으로 수렴했습니다. 사람이 하는 일은 명세를 적고 결과를 확인하는 것뿐입니다.

작업 도중 결정해야 할 것 하나가 더 나옵니다. Whisper 모델 크기입니다.

모델속도정확도자료의 평가
small빠름부정확다시 고치는 시간이 더 듦
medium중간중간권장
large느림정확대기시간이 길어짐

medium이 기본값인 이유는 한국어 특성과 맞물립니다. 한국어 자동 인식은 조사, 고유명사, 숫자 단위에서 어긋나기 쉽습니다. small을 쓰면 인식은 빨리 끝나지만 사람이 손보는 시간이 늘어서 결국 총 시간이 더 걸립니다. 반대로 large는 정확하지만 로컬 GPU가 없으면 대기가 길어져 “편집 시간 절감”이라는 목적 자체를 깎아먹습니다.

실행 시간은 하드웨어에 크게 좌우되므로 남의 수치를 그대로 믿을 수 없습니다. 자료에는 번호를 매긴 영상 4개를 넣고 약 30초 만에 결과가 나왔다고 기록돼 있지만, 이건 그 환경의 값입니다. 본인 머신에서 짧은 영상으로 한 번 재보고 모델 크기를 정하는 게 맞습니다.

자막을 실무 수준으로: 수치로 지시하기

첫 실행 결과물은 “돌아가긴 하는” 상태입니다. 자막은 시스템 기본 폰트로 나오고, 줄바꿈은 아무 데서나 되고, 위치는 어중간합니다. 여기서 “자막 좀 예쁘게 해줘”라고 하면 또 어중간한 결과가 나옵니다. 지시를 수치와 파일로 바꿔야 합니다.

자막 스타일을 다음처럼 바꿔 줘.
- 위치: 화면 세로 중앙에서 20pt 아래
- 줄바꿈: 한 줄 12자 내외로 분할
- 폰트: assets 폴더에 넣어둔 폰트 파일 사용
- 강조: 핵심 문구는 주황색

이 중에서 실무적으로 가장 값어치 있는 수치가 한 줄 12자입니다. 한글은 한 글자가 담는 정보량이 알파벳보다 큽니다. 영어 자막 감각으로 한 줄을 길게 두면 텍스트가 화면을 가로질러서, 읽는 사람의 시선이 좌우로 이동해야 합니다. 12자 내외로 끊으면 시선을 한 번 고정한 채로 읽히고, 문장이 자주 넘어가면서 속도감도 붙습니다.

다만 12자는 출발점이지 정답은 아닙니다. 가로 16:9 영상과 세로 쇼츠는 화면 폭이 다르고, 폰트 자체의 자폭도 다릅니다. 첫 결과를 실제 재생 환경(휴대폰 화면)에서 보고 한두 자 조정하는 편이 낫습니다.

폰트는 이름으로 지정하지 말고 파일로 assets에 넣으세요. 시스템 폰트 이름만 적으면 그 폰트가 없는 환경에서 조용히 다른 폰트로 대체되고, 결과물이 달라진 걸 나중에 발견하게 됩니다. 파일로 박아두면 어느 머신에서 돌려도 같은 결과가 나옵니다.

assets 폴더를 브랜드 템플릿으로

자막이 정리되면 사운드와 이미지 차례입니다. assets에 파일을 넣고 역할을 지정합니다.

- 영상 시작에 assets/intro.wav 재생
- 클립 전환마다 assets/transition.wav 재생
- SRT 내용을 보고 적절한 타이밍에 assets 폴더의 이미지를 배치

앞의 두 줄은 규칙이지만, 세 번째 줄은 성격이 다릅니다. “적절한 타이밍”은 규칙으로 못 적습니다. 자막 텍스트를 읽고 지금 무슨 이야기를 하는 중인지 파악해야 나오는 판단입니다. 이 한 줄이 기존 편집 자동화 도구와 갈리는 지점입니다. 대신 판단이라서 매번 같은 결과가 나온다는 보장은 없고, 결과를 확인하는 단계는 남습니다.

여기까지 오면 assets 폴더 자체가 브랜드 자산이 됩니다.

파일역할
brand.otf자막 전용 폰트
intro.wav오프닝 시그니처 사운드
transition.wav클립 전환 효과음
logo.png, 삽입 이미지문맥에 맞춰 배치될 소재

고객사가 여러 곳이라면 프로젝트 폴더를 통째로 복제하고 assets만 바꾸면 됩니다. 고객사별로 톤이 다른 영상 라인을 각각 유지하면서, 편집 노동은 한 번 만든 스크립트를 공유합니다. 저희가 이 방식에서 가장 크게 보는 가치는 편집 시간 절감보다 일관성입니다. 사람이 매번 손으로 맞추는 폰트 크기와 자막 위치는 반드시 조금씩 어긋나는데, 파일로 고정하면 어긋날 자리가 없습니다.

폴리싱은 반드시 한 번에 하나씩

줌인·줌아웃, 텍스트 팝 효과, 배경음악 볼륨 조정 같은 항목이 남습니다. 이걸 한 번에 요청하지 마세요. 하나 요청하고 결과를 보고, 다음 것을 요청하는 순서가 맞습니다.

이유는 FFmpeg의 구조에 있습니다. 영상 필터는 체인으로 연결되고 순서에 민감합니다. 여러 효과를 한꺼번에 얹었다가 결과가 깨지면, 어느 변경이 원인인지 특정할 수가 없어서 처음부터 다시 쌓아야 합니다. 하나씩 얹으면 문제가 생긴 지점이 곧 방금 얹은 것입니다.

안에서 실제로 도는 명령

직접 짤 일은 없지만 구조를 알면 결과가 이상할 때 어디를 볼지 알 수 있습니다. 각 단계에서 쓰이는 대표적인 형태를 정리하면 이렇습니다. 실제 스크립트는 Claude Code가 작성하므로 아래와 다를 수 있습니다.

# 1) 무음 구간 탐지 — -30dB 이하가 0.5초 이상 지속되는 구간을 로그로 출력
ffmpeg -i input/01.mp4 -af silencedetect=noise=-30dB:d=0.5 -f null -

silencedetect는 잘라주는 게 아니라 구간을 찾아 로그로 알려주는 필터입니다. 실제 컷은 그 타임코드를 받아 별도로 처리합니다. 이 파싱과 재조합이 손으로 하면 제일 번거로운 부분이고, 스크립트로 만들어두면 가장 이득이 큰 부분이기도 합니다.

# 2) 파일명 순 병합
ffmpeg -f concat -safe 0 -i list.txt -c copy merged.mp4
# 3) 자막 생성 (Whisper medium)
whisper merged.mp4 --model medium --language Korean --output_format srt
# 4) 자막 번인
ffmpeg -i merged.mp4 \
  -vf "subtitles=merged.srt:fontsdir=assets:force_style='FontName=Brand,FontSize=24'" \
  output/final.mp4

주의할 값은 1번의 -30dB0.5입니다. 이 임계값은 촬영 환경에 종속됩니다. 에어컨 소리나 컴퓨터 팬 소음이 깔린 방에서 찍었다면 무음 구간의 실제 레벨이 -30dB보다 높아서 아예 안 잘립니다. 반대로 임계값을 너무 공격적으로 잡으면 말의 첫 음절이 잘려 나갑니다. 촬영 장소가 바뀌면 이 값은 다시 잡아야 합니다.

그 다음부터는 한 문장

구축이 끝나면 사용 절차는 이걸로 끝납니다. input에 새 영상을 넣고 “영상 제작해 줘”라고 적는 것. 이 한 문장이 이 방식의 본체입니다. 앞의 모든 설정 작업은 이 문장을 성립시키기 위한 일회성 비용입니다.

반복 실행 중에 매번 명령 실행 허가를 확인하는 게 번거로워 자동 승인 모드를 쓰는 선택지도 있습니다. 자료에서도 “신뢰되는 작업에서만”이라는 단서를 달았고, 저희도 같은 의견입니다. FFmpeg는 파일을 덮어쓰는 도구입니다. 최소한 원본이 있는 input과 결과가 나가는 output을 분리하고, 촬영 원본은 별도 위치에 백업본을 두고 시작하세요.

점수: 8.2

직접 결제하거나 장기간 운영해본 파이프라인이 아닙니다. 아래 점수는 공개된 절차와 각 구성 요소의 공식 문서, 그리고 저희가 FFmpeg·Whisper를 다뤄본 경험을 기준으로 한 것입니다.

좋은 점

  • 반복 구간의 비용이 사실상 0으로 수렴합니다. FFmpeg와 Whisper 모두 오픈소스이고 로컬에서 돌기 때문에, 편집 소프트웨어 구독료 없이 영상 편수를 늘릴 수 있습니다.
  • 브랜드 일관성이 파일로 고정됩니다. assets 폴더가 곧 스타일 가이드가 되고, 사람이 매번 눈대중으로 맞추는 것보다 재현성이 높습니다.
  • 수정이 자연어로 됩니다. 필터 문법을 몰라도 “20pt 아래로”, “한 줄 12자로” 같은 지시로 조정할 수 있고, 그 결과가 스크립트 코드로 남아 버전 관리도 됩니다.
  • 규칙으로 못 적는 부분(자막 문맥에 맞춘 이미지 삽입 타이밍)까지 위임할 수 있습니다. 기존 배치 스크립트로는 안 되던 영역입니다.

아쉬운 점

  • 초기 구축이 공짜가 아닙니다. 편집할 영상이 몇 개뿐인 사람에게는 순손해입니다. 반복이 전제되어야 성립합니다.
  • 번인 자막은 되돌릴 수 없습니다. 오타 하나에 전체 재인코딩이고, 나중에 다국어 자막을 얹을 길이 막힙니다.
  • Whisper의 한국어 인식은 완벽하지 않습니다. medium을 써도 고유명사·전문용어·숫자 단위에서 틀립니다. 검수 단계를 워크플로우에 명시적으로 넣지 않으면 오탈자가 박힌 영상이 그대로 나갑니다.
  • 무음 판정 임계값이 촬영 환경에 종속됩니다. 장소나 마이크가 바뀌면 다시 잡아야 하고, 이 재조정은 자동화 밖의 일입니다.
  • 컷의 “맛”은 내지 못합니다. 호흡을 살리는 컷, 리액션 타이밍, 브롤 인서트 같은 연출 판단은 여전히 사람 몫입니다. 이건 노동을 제거하는 도구지 편집자를 대체하는 도구가 아닙니다.
  • 전부 로컬 연산이라 머신 성능에 그대로 좌우됩니다. 사양이 낮은 노트북에서는 모델 크기를 낮춰야 하고, 그러면 인식 정확도가 떨어집니다.

이럴 때 쓰세요: 형식이 고정된 영상(튜토리얼·강의·제품 설명·고객사 홍보 쇼츠)을 매주 반복해서 만들고, 편집 시간의 대부분이 무음 컷과 자막 작업에 들어가는 경우.

다른 선택지와 어떻게 나뉘나

이 파이프라인은 영상 편집 도구를 대체하는 게 아니라, 그중 판단이 필요 없는 구간만 떼어갑니다. 나머지는 여전히 다른 도구의 몫입니다.

상황적합한 쪽
무음컷·병합·자막이 반복 노동일 때이 파이프라인 (무료, 초기 구축 필요)
코드 없이 GUI로 바로 시작하고 싶을 때Vrew 같은 편집기
타이틀 리빌·모션그래픽이 필요할 때AE + Higgsfield MCP
색보정, 정교한 사운드 믹싱전문 편집 소프트웨어

영상 도구 전반의 비교는 AI 영상 툴 비교 글에 따로 정리했습니다.

시작 전에 확인할 것

  • 원본을 먼저 백업하세요. input은 읽기만 하고 결과는 output에만 쓰도록 스크립트를 짜달라고 명시하는 게 안전합니다.
  • 첫 테스트는 짧은 영상으로. 10분짜리로 시작하면 실패했다는 사실을 확인하는 데만 10분이 걸립니다. 자료에서도 짧은 영상 4개로 먼저 돌렸습니다.
  • 자막 검수 단계를 워크플로우에 넣으세요. SRT를 중간 산출물로 남기고, 번인 전에 사람이 한 번 훑는 지점을 만들어두는 편이 낫습니다.
  • 폰트 라이선스를 확인하세요. 영상에 자막을 굽는 행위는 폰트 임베딩에 해당할 수 있습니다. 상업용 영상이라면 사용 중인 폰트의 라이선스 범위를 먼저 확인해야 합니다. 자동화로 해결되지 않는, 사람이 판단할 항목입니다.

원본 영상은 데키랩 채널의 AI 영상 편집 자동화 10분이고, 도구 공식 페이지는 FFmpeg, Whisper, Claude Code입니다. 유튜브 영상에서 자막을 먼저 확보하는 방법은 yt-dlp 정리 글에 적어두었습니다.