WaveSpeedAI

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

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

By WaveSpeedAI5 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에는 엄격한 제한이 없습니다. 실질적으로는 입력 수에 따라 메모리와 처리 시간이 늘어납니다.

공유