← 블로그

FFmpeg로 비디오 병합 및 연결하는 방법 (2026 가이드)

FFmpeg를 사용하여 여러 비디오 파일을 병합하고 연결하는 완벽한 가이드. concat demuxer, filter, protocol 방법 및 무료 원클릭 대안을 다룹니다.

5 min read

여러 비디오 클립을 하나의 파일로 합쳐야 하나요? FFmpeg는 동영상을 연결하는 여러 방법을 제공합니다. 단, 올바른 방법은 클립들이 동일한 형식, 코덱, 해상도를 공유하는지 여부에 따라 달라집니다.

이 가이드는 세 가지 방법 모두를 정확한 명령어와 함께 설명합니다. 터미널에서 코덱 불일치를 디버깅하고 싶지 않은 분들을 위해 마지막에 무료 드래그 앤 드롭 대안도 소개합니다.


사전 준비: FFmpeg 설치

FFmpeg

macOS:

brew install ffmpeg

Ubuntu/Debian:

sudo apt update && sudo apt install ffmpeg

Windows: ffmpeg.org에서 다운로드하여 압축을 풀고 bin을 PATH에 추가합니다.


방법 1: Concat 디먹서 (동일한 형식 — 가장 빠름)

이것이 가장 빠르고 간단한 방법입니다. 모든 동영상이 동일한 코덱, 해상도, 프레임 레이트를 가질 때 사용합니다.

1단계: 파일 목록 생성

files.txt라는 텍스트 파일을 만듭니다:

file 'clip1.mp4'
file 'clip2.mp4'
file 'clip3.mp4'

2단계: concat 명령어 실행

ffmpeg -f concat -safe 0 -i files.txt -c copy output.mp4
  • -f concat — concat 디먹서 사용
  • -safe 0 — 절대/상대 경로 허용
  • -c copy — 재인코딩 없음 (즉시 처리)

파일 목록 자동 생성

Linux/macOS:

for f in *.mp4; do echo "file '$f'" >> files.txt; done
ffmpeg -f concat -safe 0 -i files.txt -c copy output.mp4

Windows (PowerShell):

Get-ChildItem *.mp4 | ForEach-Object { "file '$($_.Name)'" } | Out-File -Encoding ascii files.txt
ffmpeg -f concat -safe 0 -i files.txt -c copy output.mp4

방법 2: Concat 필터 (다른 형식 — 가장 유연)

클립들의 코덱, 해상도, 프레임 레이트가 다를 때는 concat 필터가 필요합니다. 이 방법은 모든 것을 일치하도록 재인코딩합니다.

두 개의 동영상:

ffmpeg -i clip1.mp4 -i clip2.mov \
  -filter_complex "[0:v][0:a][1:v][1:a]concat=n=2:v=1:a=1[outv][outa]" \
  -map "[outv]" -map "[outa]" output.mp4

세 개의 동영상:

ffmpeg -i clip1.mp4 -i clip2.mov -i clip3.avi \
  -filter_complex "[0:v][0:a][1:v][1:a][2:v][2:a]concat=n=3:v=1:a=1[outv][outa]" \
  -map "[outv]" -map "[outa]" output.mp4
  • n=3 — 입력 세그먼트 수
  • v=1 — 하나의 비디오 스트림 출력
  • a=1 — 하나의 오디오 스트림 출력

연결 전 해상도 정규화

클립들의 해상도가 다를 경우 먼저 스케일을 조정합니다:

ffmpeg -i clip1.mp4 -i clip2.mp4 \
  -filter_complex \
    "[0:v]scale=1920:1080:force_original_aspect_ratio=decrease,pad=1920:1080:(ow-iw)/2:(oh-ih)/2[v0]; \
     [1:v]scale=1920:1080:force_original_aspect_ratio=decrease,pad=1920:1080:(ow-iw)/2:(oh-ih)/2[v1]; \
     [v0][0:a][v1][1:a]concat=n=2:v=1:a=1[outv][outa]" \
  -map "[outv]" -map "[outa]" output.mp4

방법 3: Concat 프로토콜 (MPEG-TS 전용)

MPEG 전송 스트림의 경우 concat 프로토콜을 직접 사용할 수 있습니다:

# 먼저 MPEG-TS로 변환
ffmpeg -i clip1.mp4 -c copy -bsf:v h264_mp4toannexb clip1.ts
ffmpeg -i clip2.mp4 -c copy -bsf:v h264_mp4toannexb clip2.ts

# 그런 다음 연결
ffmpeg -i "concat:clip1.ts|clip2.ts" -c copy -bsf:a aac_adtstoasc output.mp4

이 방법은 일반적으로 더 이상 권장되지 않습니다. concat 디먹서(방법 1)가 더 간단하고 안정적입니다.


특수 시나리오

비디오와 오디오 트랙 병합

비디오 파일과 별도의 오디오 파일을 결합합니다:

ffmpeg -i video.mp4 -i audio.mp3 -c:v copy -c:a aac -shortest output.mp4
  • -shortest — 더 짧은 스트림이 끝나면 중지

동영상의 오디오 교체

ffmpeg -i video.mp4 -i new_audio.mp3 -c:v copy -c:a aac -map 0:v -map 1:a output.mp4

다른 프레임 레이트의 동영상 연결

연결 전에 모든 입력을 30fps로 강제 변환합니다:

ffmpeg -i clip1.mp4 -i clip2.mp4 \
  -filter_complex \
    "[0:v]fps=30[v0];[1:v]fps=30[v1]; \
     [v0][0:a][v1][1:a]concat=n=2:v=1:a=1[outv][outa]" \
  -map "[outv]" -map "[outa]" output.mp4

오디오가 없는 동영상

일부 클립에 오디오 트랙이 없는 경우 무음 오디오를 추가합니다:

ffmpeg -i clip_no_audio.mp4 -f lavfi -i anullsrc=r=44100:cl=stereo \
  -c:v copy -c:a aac -shortest clip_with_silence.mp4

그런 다음 정상적으로 연결합니다.


일반적인 오류 및 해결 방법

“Discarding non-monotonous DTS”

클립 간 타임스탬프가 정렬되지 않았습니다. 재인코딩합니다:

ffmpeg -f concat -safe 0 -i files.txt -c:v libx264 -c:a aac output.mp4

“Stream 0 codec does not match”

클립들의 코덱이 다릅니다. concat 디먹서 대신 concat 필터 (방법 2)를 사용하세요.

“Discarding 1 additional packets” / 동기화 문제

-fflags +genpts를 추가하여 타임스탬프를 재생성합니다:

ffmpeg -fflags +genpts -f concat -safe 0 -i files.txt -c copy output.mp4

출력 클립 사이에 검은 프레임 발생

클립들의 픽셀 형식이 다를 때 발생합니다. 공통 형식을 강제 지정합니다:

ffmpeg -i clip1.mp4 -i clip2.mp4 \
  -filter_complex "[0:v]format=yuv420p[v0];[1:v]format=yuv420p[v1];[v0][0:a][v1][1:a]concat=n=2:v=1:a=1[outv][outa]" \
  -map "[outv]" -map "[outa]" output.mp4

터미널 없이: WaveSpeed Desktop 사용하기

FFmpeg로 동영상을 병합하려면 세 가지 방법 중 하나를 선택하고, 파일 목록을 만들고, 코덱 불일치를 처리하고, 타임스탬프 문제를 디버깅하고, 정규식처럼 복잡한 filter_complex 문자열을 작성해야 합니다.

WaveSpeed Desktop에는 모든 것을 단순화하는 내장 미디어 병합기가 포함되어 있습니다:

  • 비디오 클립을 드래그 앤 드롭
  • 필요에 따라 순서 변경
  • 병합 클릭 — 하나의 파일 완성

다른 형식? 다른 해상도? 앱이 자동으로 처리합니다.

WaveSpeed Desktop Media Merger

WaveSpeed Desktop 무료 다운로드: https://github.com/WaveSpeedAI/wavespeed-desktop/releases


자주 묻는 질문

어떤 concat 방법을 사용해야 하나요? 모든 클립이 동일한 코덱과 해상도를 가지고 있다면 **방법 1 (디먹서)**를 사용하세요 — 즉시 처리됩니다. 클립이 어떤 면에서든 다르다면 **방법 2 (필터)**를 사용하세요.

클립 사이에 전환 효과를 추가할 수 있나요? FFmpeg는 xfade 필터로 기본적인 크로스페이드 전환을 지원하지만 복잡합니다. 전환 효과를 위해서는 일반적으로 시각적 편집기가 더 편리합니다.

동영상을 병합하면 화질이 저하되나요? -c copy(방법 1)를 사용하면 화질 저하가 없습니다. concat 필터(방법 2)를 사용하면 재인코딩이 발생하여 약간의 화질 손실이 생길 수 있습니다. 낮은 CRF 값(18–20)을 사용하여 최소화하세요.

병합할 수 있는 동영상 수에 제한이 있나요? FFmpeg에는 엄격한 제한이 없습니다. 실질적으로는 입력 수에 따라 메모리와 처리 시간이 늘어납니다.