FFmpeg로 비디오 병합 및 연결하는 방법 (2026 가이드)
FFmpeg를 사용하여 여러 비디오 파일을 병합하고 연결하는 완벽한 가이드. concat demuxer, filter, protocol 방법 및 무료 원클릭 대안을 다룹니다.
여러 비디오 클립을 하나의 파일로 합쳐야 하나요? 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 무료 다운로드: https://github.com/WaveSpeedAI/wavespeed-desktop/releases
자주 묻는 질문
어떤 concat 방법을 사용해야 하나요? 모든 클립이 동일한 코덱과 해상도를 가지고 있다면 **방법 1 (디먹서)**를 사용하세요 — 즉시 처리됩니다. 클립이 어떤 면에서든 다르다면 **방법 2 (필터)**를 사용하세요.
클립 사이에 전환 효과를 추가할 수 있나요?
FFmpeg는 xfade 필터로 기본적인 크로스페이드 전환을 지원하지만 복잡합니다. 전환 효과를 위해서는 일반적으로 시각적 편집기가 더 편리합니다.
동영상을 병합하면 화질이 저하되나요?
-c copy(방법 1)를 사용하면 화질 저하가 없습니다. concat 필터(방법 2)를 사용하면 재인코딩이 발생하여 약간의 화질 손실이 생길 수 있습니다. 낮은 CRF 값(18–20)을 사용하여 최소화하세요.
병합할 수 있는 동영상 수에 제한이 있나요? FFmpeg에는 엄격한 제한이 없습니다. 실질적으로는 입력 수에 따라 메모리와 처리 시간이 늘어납니다.



