C.W.K.
Stream
Lesson 08 of 10 · published

Concat — Clip 합치기

~12 min · concat, join, merge

Level 0Viewer
0 XP0/73 lessons0/15 achievements
0/100 XP to next level100 XP to go0% complete

Concat 세 방법, 세 다른 tradeoff

FFmpeg에서 clip 합치기 세 가지 documented method. 호환 안 돼.

  1. concat demuxer (file-list) — 가장 빠름. 모든 input에 동일 codec/parameter 요구. Stream-copy 호환.
  2. concat protocol (concat:) — MPEG-TS 또는 'cat 가능' stream 에서만 동작. -f segment segment 합칠 때 써.
  3. concat filter — 가장 느림, 가장 유연. 모든 거 re-encode. Filtergraph 안에서 normalize 해서 다른 해상도/codec/frame rate 처리.

80% 케이스: concat demuxer

Clip이 같은 카메라/encoder에서 왔으면 concat demuxer가 맞아. Input list 한 텍스트 파일 만들고, FFmpeg을 거기 가리켜.

Code

concat demuxer (가장 빠름)·bash
# 1) List 파일 빌드
cat > files.txt <<'EOF'
file 'clip1.mp4'
file 'clip2.mp4'
file 'clip3.mp4'
EOF

# 2) Re-encode 없이 concat (matching codec/param 요구)
ffmpeg -f concat -safe 0 -i files.txt -c copy joined.mp4

# 흔한 함정: path가 absolute 이거나 special character 포함하면
# 'safe 0' 필수. 없으면 보안상 FFmpeg이 거부.
concat filter (다양한 input)·bash
# 다른 해상도/codec — re-encode 와 normalize 해야
ffmpeg -i clip1.mov -i clip2.webm -i clip3.mkv \
  -filter_complex "[0:v]scale=1920:1080,fps=30[v0]; \
                   [1:v]scale=1920:1080,fps=30[v1]; \
                   [2:v]scale=1920:1080,fps=30[v2]; \
                   [v0][0:a][v1][1:a][v2][2:a]concat=n=3:v=1:a=1[outv][outa]" \
  -map "[outv]" -map "[outa]" \
  -c:v libx264 -crf 20 -preset slow \
  -c:a aac -b:a 192k \
  joined.mp4

External links

Exercise

30초 clip 잡아 10초 chunk 세 개로 잘라 (Track 2 lesson 7). 그 다음 concat demuxer copy mode로 다시 합쳐. 총 duration 이 원본의 ±0.1s 이내인지 확인. 그 다음 일부러 한 chunk를 720p로 downscale 하고 concat 다시 시도 — 성공해? 무슨 일이 생겨?

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.