
동영상 편집, 꼭 비싼 프로그램이 필요할까?
스마트폰으로 찍은 4K 영상이 5GB를 넘기거나, 유튜브에 올리려는데 포맷이 안 맞거나, 회의 녹화 파일에서 특정 구간만 잘라내고 싶을 때가 있습니다. 이럴 때 어도비 프리미어를 설치하자니 월 구독료가 부담스럽고, 무료 편집기는 기능이 아쉽습니다.
그런데 전 세계 영상 업계에서 가장 많이 쓰이면서도 완전히 무료인 도구가 있습니다. 바로 FFmpeg입니다. 유튜브, 넷플릭스, VLC 미디어 플레이어 등 우리가 매일 쓰는 서비스의 내부에서 FFmpeg가 묵묵히 동영상을 처리하고 있습니다. 명령어 한 줄이면 동영상 포맷 변환, 용량 압축, 구간 자르기, 자막 합치기, GIF 생성까지 해결됩니다.
이 글에서는 FFmpeg를 처음 접하는 분도 바로 따라 할 수 있도록, 설치부터 실무에서 가장 많이 쓰는 명령어 패턴까지 단계별로 정리합니다. 한 번 익혀두면 앞으로 동영상 관련 작업에서 유료 소프트웨어가 거의 필요 없어집니다.

FFmpeg란 무엇이고 왜 알아야 하는가
FFmpeg는 2000년에 처음 공개된 오픈소스 멀티미디어 프레임워크입니다. 거의 모든 동영상·오디오 포맷을 읽고, 변환하고, 편집할 수 있는 명령줄(CLI) 도구입니다. GUI가 없어서 처음엔 낯설 수 있지만, 오히려 그 덕분에 자동화가 쉽고 처리 속도가 빠릅니다.
FFmpeg를 알아야 하는 이유
- 완전 무료·오픈소스: 개인·상업 용도 모두 무료입니다. 워터마크나 기능 제한이 없습니다.
- 거의 모든 포맷 지원: MP4, MKV, AVI, MOV, WebM, MP3, AAC, FLAC 등 수백 가지 포맷을 하나의 도구로 처리합니다.
- 배치 자동화 가능: 폴더 안의 영상 100개를 한 번에 변환하는 스크립트를 10줄 이내로 작성할 수 있습니다.
- 업계 표준: 유튜브, 넷플릭스, 카카오, 네이버 등 대형 서비스의 영상 파이프라인에서 FFmpeg가 핵심 엔진으로 동작합니다.
- 크로스 플랫폼: Windows, macOS, Linux 모두 지원합니다.
정리하면, FFmpeg는 “동영상 세계의 스위스 아미 나이프”입니다. 개발자뿐 아니라 영상을 다루는 모든 사람에게 필수 도구라 할 수 있습니다.
운영체제별 FFmpeg 설치 방법
FFmpeg 설치는 생각보다 간단합니다. 각 운영체제별 가장 빠른 방법을 소개합니다.
Windows 설치
Windows에서는 두 가지 방법이 있습니다. 패키지 관리자를 이미 쓰고 있다면 첫 번째, 아니라면 두 번째 방법을 추천합니다.
방법 1: winget 사용 (권장)
Windows 터미널(또는 PowerShell)을 열고 아래 명령어를 입력합니다.
winget install Gyan.FFmpeg
설치가 끝나면 새 터미널 창을 열어서 ffmpeg -version을 입력해 버전이 출력되면 성공입니다.
방법 2: 수동 설치
gyan.dev 공식 빌드 페이지에서 “release full” ZIP 파일을 다운로드한 뒤, 원하는 폴더(예: C:\ffmpeg)에 압축을 풀고, 시스템 환경변수 PATH에 C:\ffmpeg\bin을 추가합니다.
macOS 설치
Homebrew가 설치되어 있다면 한 줄이면 끝납니다.
brew install ffmpeg
Linux (Ubuntu/Debian) 설치
sudo apt update && sudo apt install ffmpeg -y
설치 확인
어느 운영체제든 설치 후 아래 명령어로 정상 작동을 확인합니다.
ffmpeg -version
버전 정보와 함께 지원 코덱 목록이 출력되면 준비 완료입니다.

FFmpeg 기본 문법 이해하기
FFmpeg 명령어의 기본 구조를 먼저 이해하면, 이후 어떤 작업이든 응용이 쉬워집니다.
명령어 기본 구조
ffmpeg -i 입력파일 [옵션] 출력파일
이것이 FFmpeg의 핵심 뼈대입니다. -i는 “input”의 약자로 입력 파일을 지정합니다. 옵션으로 코덱, 해상도, 비트레이트 등을 조절하고, 마지막에 출력 파일명을 적으면 됩니다.
자주 쓰는 핵심 옵션 정리
-i: 입력 파일 경로-c:v: 비디오 코덱 지정 (예: libx264, libx265, copy)-c:a: 오디오 코덱 지정 (예: aac, libmp3lame, copy)-b:v: 비디오 비트레이트 (예: 2M = 2Mbps)-b:a: 오디오 비트레이트 (예: 128k)-r: 프레임레이트 (예: 30)-s: 해상도 (예: 1920×1080)-ss: 시작 시간 (예: 00:01:30)-t: 지속 시간 (예: 00:00:30 = 30초)-to: 종료 시간 (예: 00:02:00)-vf: 비디오 필터 (예: scale=1280:720)-af: 오디오 필터 (예: volume=1.5)-y: 출력 파일이 이미 있으면 덮어쓰기-n: 출력 파일이 이미 있으면 건너뛰기
이 옵션들의 조합만으로 아래에서 다룰 거의 모든 작업이 가능합니다. 특히 -c:v copy -c:a copy 조합은 “코덱을 변환하지 않고 그대로 복사”라는 뜻으로, 재인코딩 없이 빠르게 컨테이너만 바꿀 때 자주 씁니다.
실전 활용 1: 동영상 포맷 변환
가장 기본이면서 가장 많이 쓰는 작업입니다. 카메라마다 다른 포맷(MOV, AVI, MKV 등)으로 촬영된 영상을 범용 포맷인 MP4로 통일하는 경우가 대표적입니다.
MOV → MP4 변환
ffmpeg -i input.mov -c:v libx264 -c:a aac output.mp4
아이폰으로 촬영한 MOV 파일을 H.264 코덱의 MP4로 변환합니다. 대부분의 플랫폼과 기기에서 재생 가능한 가장 호환성 높은 조합입니다.
MKV → MP4 (코덱 유지, 컨테이너만 변경)
ffmpeg -i input.mkv -c copy output.mp4
-c copy는 비디오와 오디오 코덱을 재인코딩하지 않고 그대로 복사합니다. 화질 손실이 전혀 없고, 처리 시간도 수 초면 끝납니다. MKV와 MP4 모두 H.264를 담을 수 있기 때문에 이 방법이 가능합니다.
MP4 → WebM (웹 최적화)
ffmpeg -i input.mp4 -c:v libvpx-vp9 -b:v 1M -c:a libopus output.webm
웹사이트에 영상을 임베드할 때 WebM 포맷이 유리합니다. VP9 코덱과 Opus 오디오 조합은 같은 화질에서 MP4보다 파일 크기가 20~30% 작습니다.
동영상에서 오디오만 추출
ffmpeg -i video.mp4 -vn -c:a libmp3lame -b:a 192k audio.mp3
-vn은 비디오 스트림을 제거(no video)하라는 뜻입니다. 유튜브 강의를 다운받아 출퇴근 중 오디오로만 듣고 싶을 때, 회의 녹화에서 음성만 추출할 때 유용합니다.
실전 활용 2: 동영상 용량 압축
스마트폰 4K 영상은 1분에 300~500MB에 달합니다. SNS에 올리거나 메신저로 전송하려면 용량을 줄여야 합니다. FFmpeg는 세밀한 압축 제어가 가능합니다.

CRF 방식: 화질 기준 압축 (가장 추천)
ffmpeg -i input.mp4 -c:v libx264 -crf 23 -preset medium -c:a aac -b:a 128k output.mp4
CRF(Constant Rate Factor)는 “이 정도 화질을 유지해줘”라고 FFmpeg에 알려주는 방식입니다. 값 범위는 0~51이며, 숫자가 낮을수록 고화질(큰 파일), 높을수록 저화질(작은 파일)입니다.
- CRF 18: 거의 무손실, 원본에 가까운 화질
- CRF 23: 기본값, 화질과 용량의 균형 (대부분의 경우 충분)
- CRF 28: 눈에 띄는 화질 저하가 시작되지만 용량이 크게 줄어듦
- CRF 32 이상: SNS·메신저 전송용으로 적합한 수준
-preset은 인코딩 속도를 조절합니다. ultrafast부터 veryslow까지 있으며, 느린 프리셋일수록 같은 CRF에서 파일 크기가 더 작아집니다. 일반적으로 medium이 속도와 효율의 좋은 타협점입니다.
H.265(HEVC)로 더 강력한 압축
ffmpeg -i input.mp4 -c:v libx265 -crf 28 -preset medium -c:a aac -b:a 128k output_h265.mp4
H.265는 H.264 대비 같은 화질에서 파일 크기를 40~50% 줄일 수 있는 차세대 코덱입니다. 단, 인코딩 시간이 더 오래 걸리고 구형 기기에서 재생이 안 될 수 있으므로, 저장 보관용이나 본인만 볼 영상에 적합합니다.
해상도 낮추기로 추가 용량 절약
ffmpeg -i input_4k.mp4 -vf scale=1920:1080 -c:v libx264 -crf 23 -c:a aac output_1080p.mp4
4K(3840×2160)를 Full HD(1920×1080)로 줄이면 그것만으로 용량이 절반 이하로 떨어집니다. 모바일에서 볼 영상이라면 720p(scale=1280:720)로 더 줄여도 체감 차이가 크지 않습니다.
비트레이트 직접 지정
ffmpeg -i input.mp4 -c:v libx264 -b:v 1M -c:a aac -b:a 96k output.mp4
출력 파일의 대략적인 크기를 미리 계산하고 싶을 때 비트레이트를 직접 지정합니다. 비디오 1Mbps + 오디오 96kbps면 1분 영상이 약 8MB가 됩니다. 카카오톡이나 텔레그램 전송 제한에 맞출 때 편리합니다.
실전 활용 3: 동영상 자르기·합치기·편집
간단한 편집 작업에 굳이 프리미어나 다빈치 리졸브를 열 필요 없습니다. FFmpeg 명령어 한 줄이면 됩니다.
특정 구간 자르기 (트리밍)
ffmpeg -ss 00:01:30 -i input.mp4 -to 00:03:00 -c copy trimmed.mp4
1분 30초부터 3분 00초까지의 구간만 추출합니다. -ss를 -i 앞에 놓으면 해당 시점까지 빠르게 탐색(seek)하므로 처리가 훨씬 빠릅니다. -c copy를 사용했으므로 재인코딩 없이 즉시 완료됩니다.
주의할 점이 있습니다. -c copy로 자를 때는 키프레임 단위로만 정확한 컷이 가능합니다. 프레임 단위로 정확한 자르기가 필요하면 -c copy 대신 재인코딩 옵션을 사용해야 합니다.
ffmpeg -ss 00:01:30 -i input.mp4 -to 00:03:00 -c:v libx264 -c:a aac trimmed_exact.mp4
여러 영상 이어붙이기 (합치기)
먼저 합칠 파일 목록을 텍스트 파일로 만듭니다.
file 'part1.mp4'
file 'part2.mp4'
file 'part3.mp4'
이 파일을 filelist.txt로 저장한 뒤 아래 명령어를 실행합니다.
ffmpeg -f concat -safe 0 -i filelist.txt -c copy merged.mp4
같은 코덱·해상도·프레임레이트의 영상이라면 -c copy로 재인코딩 없이 빠르게 합쳐집니다. 사양이 다른 영상을 합칠 때는 먼저 동일 포맷으로 통일한 뒤 합치는 것이 안전합니다.
영상 속도 조절
# 2배속 (타임랩스 느낌)
ffmpeg -i input.mp4 -vf "setpts=0.5*PTS" -af "atempo=2.0" fast.mp4
# 0.5배속 (슬로모션)
ffmpeg -i input.mp4 -vf "setpts=2.0*PTS" -af "atempo=0.5" slow.mp4
setpts 필터로 비디오 속도를, atempo 필터로 오디오 속도를 조절합니다. atempo의 범위는 0.5~2.0이므로, 4배속이 필요하면 atempo=2.0,atempo=2.0처럼 체이닝합니다.
영상 회전
# 시계 방향 90도 회전
ffmpeg -i input.mp4 -vf "transpose=1" rotated.mp4
# 180도 회전
ffmpeg -i input.mp4 -vf "transpose=1,transpose=1" rotated180.mp4
transpose 필터 값은 0(반시계 90°+상하반전), 1(시계 90°), 2(반시계 90°), 3(시계 90°+상하반전)입니다. 스마트폰을 세로로 찍은 영상을 가로로 바꿀 때 유용합니다.
실전 활용 4: GIF 생성과 썸네일 추출
블로그나 SNS에 올릴 짧은 GIF를 만들거나, 영상에서 대표 이미지를 추출하는 작업도 FFmpeg의 영역입니다.

동영상을 고화질 GIF로 변환
# 1단계: 팔레트 생성 (색상 최적화)
ffmpeg -i input.mp4 -vf "fps=15,scale=480:-1:flags=lanczos,palettegen" palette.png
# 2단계: 팔레트를 적용한 GIF 생성
ffmpeg -i input.mp4 -i palette.png -lavfi "fps=15,scale=480:-1:flags=lanczos[x];[x][1:v]paletteuse" output.gif
GIF는 최대 256색만 표현 가능하기 때문에, 팔레트를 먼저 추출하고 이를 적용하면 단순 변환보다 훨씬 깨끗한 결과물을 얻습니다. fps=15는 초당 15프레임, scale=480:-1은 가로 480px에 세로는 비율 자동 계산이라는 뜻입니다.
특정 시점의 썸네일 추출
# 10초 지점에서 한 장 추출
ffmpeg -ss 00:00:10 -i input.mp4 -frames:v 1 thumbnail.jpg
# 매 분마다 한 장씩 추출
ffmpeg -i input.mp4 -vf "fps=1/60" thumb_%03d.jpg
블로그 포스팅이나 유튜브 썸네일 후보를 고를 때, 특정 장면의 스크린샷이 필요할 때 쓰면 됩니다. fps=1/60은 60초에 1프레임이라는 뜻이므로, 1분마다 한 장씩 이미지가 생성됩니다.
동영상을 연속 이미지 시퀀스로 분해
ffmpeg -i input.mp4 -r 1 frames/frame_%04d.png
-r 1은 초당 1프레임 추출입니다. 10분짜리 영상이면 600장의 PNG가 생깁니다. AI 학습용 데이터셋을 만들거나, 스톱모션 느낌의 편집을 할 때 활용합니다.
실전 활용 5: 자막·워터마크·오버레이
영상 위에 자막을 입히거나 로고를 넣는 것도 FFmpeg로 해결됩니다.
SRT 자막 파일 삽입 (소프트 자막)
ffmpeg -i input.mp4 -i subtitle.srt -c copy -c:s mov_text output.mp4
소프트 자막은 플레이어에서 켜고 끌 수 있는 자막입니다. 재인코딩이 필요 없으므로 빠릅니다.
자막을 영상에 직접 굽기 (하드 자막)
ffmpeg -i input.mp4 -vf "subtitles=subtitle.srt:force_style='FontSize=24,PrimaryColour=&H00FFFFFF&'" -c:v libx264 -crf 23 -c:a copy output.mp4
하드 자막은 영상 자체에 텍스트가 렌더링됩니다. 인스타그램 릴스처럼 자막 토글이 안 되는 플랫폼에서 필수입니다. force_style로 폰트 크기와 색상을 조절할 수 있습니다.
이미지 워터마크(로고) 삽입
ffmpeg -i input.mp4 -i logo.png -filter_complex "overlay=W-w-10:H-h-10" -c:v libx264 -crf 23 -c:a copy output.mp4
overlay=W-w-10:H-h-10은 영상 우하단에서 10px 안쪽에 로고를 배치하라는 뜻입니다. W와 H는 영상의 너비·높이, w와 h는 로고의 너비·높이입니다. 좌상단에 넣으려면 overlay=10:10으로 변경합니다.
실전 활용 6: 배치 처리와 자동화 스크립트
FFmpeg의 진정한 힘은 자동화에 있습니다. 폴더 안의 영상 수십 개를 한 번에 처리하는 스크립트를 만들어봅시다.
폴더 내 모든 MKV를 MP4로 일괄 변환 (bash)
for f in *.mkv; do
ffmpeg -i "$f" -c:v libx264 -crf 23 -c:a aac "${f%.mkv}.mp4"
done
폴더 내 모든 영상을 720p로 일괄 압축 (bash)
mkdir -p compressed
for f in *.mp4; do
ffmpeg -i "$f" -vf scale=1280:720 -c:v libx264 -crf 26 -c:a aac -b:a 96k "compressed/$f"
done
Windows PowerShell에서 일괄 처리
Get-ChildItem *.mkv | ForEach-Object {
ffmpeg -i $_.FullName -c:v libx264 -crf 23 -c:a aac ($_.BaseName + ".mp4")
}
이런 스크립트를 .sh 또는 .ps1 파일로 저장해두면, 드론 촬영 영상 정리, 강의 녹화 일괄 압축, 감시카메라 영상 아카이빙 등 반복 작업을 완전 자동화할 수 있습니다.
자주 만나는 문제와 해결법
FFmpeg를 쓰다 보면 반복적으로 만나는 에러와 상황이 있습니다. 미리 알아두면 당황하지 않습니다.
“Avi duration is too long” 또는 “moov atom not found”
영상 파일이 불완전하게 저장되었을 때 나타납니다. 녹화 중 프로그램이 비정상 종료된 경우가 대부분입니다.
ffmpeg -i broken.mp4 -c copy -movflags faststart fixed.mp4
-movflags faststart는 moov atom을 파일 앞쪽으로 이동시켜 웹 스트리밍에도 유리하게 만듭니다.
“Avi codec not currently supported” 또는 코덱 관련 에러
FFmpeg 빌드에 해당 코덱이 포함되지 않은 경우입니다. ffmpeg -codecs로 지원 코덱을 확인하고, 필요하면 풀 빌드 버전을 설치합니다.
출력 영상이 초록색으로 깨지는 현상
하드웨어 가속 인코딩 시 GPU 드라이버 호환성 문제로 발생합니다. -hwaccel 옵션을 제거하고 소프트웨어 인코딩으로 전환하면 해결됩니다.
영상과 소리가 싱크가 안 맞을 때
ffmpeg -i input.mp4 -itsoffset 0.5 -i input.mp4 -map 1:v -map 0:a -c copy synced.mp4
-itsoffset으로 비디오 또는 오디오의 시작 시점을 미세 조정합니다. 양수면 해당 스트림이 늦게, 음수면 빨리 시작됩니다.
인코딩 속도가 너무 느릴 때: 하드웨어 가속 활용
CPU 인코딩이 느리다면 GPU를 활용할 수 있습니다.
# NVIDIA GPU (NVENC)
ffmpeg -i input.mp4 -c:v h264_nvenc -preset p4 -crf 23 -c:a aac output.mp4
# Intel Quick Sync
ffmpeg -i input.mp4 -c:v h264_qsv -global_quality 23 -c:a aac output.mp4
# AMD AMF
ffmpeg -i input.mp4 -c:v h264_amf -quality balanced -c:a aac output.mp4
하드웨어 가속은 인코딩 속도를 3~10배 높여줍니다. 다만 같은 비트레이트에서 소프트웨어 인코딩(libx264)보다 화질이 약간 떨어질 수 있으므로, 속도와 화질 중 상황에 맞게 선택합니다.
알아두면 유용한 고급 팁
영상 정보 상세 확인
ffprobe -v quiet -print_format json -show_format -show_streams input.mp4
FFmpeg와 함께 설치되는 ffprobe는 영상 파일의 메타데이터를 상세하게 보여줍니다. 코덱, 해상도, 비트레이트, 프레임레이트, 오디오 샘플레이트 등을 한눈에 확인할 수 있어 변환 전 원본 사양을 파악하는 데 필수입니다.
웹 스트리밍 최적화 (faststart)
ffmpeg -i input.mp4 -c:v libx264 -crf 23 -movflags +faststart -c:a aac output.mp4
-movflags +faststart는 MP4 파일의 메타데이터(moov atom)를 파일 앞쪽에 배치합니다. 웹에서 영상이 다운로드 완료 전에 바로 재생을 시작할 수 있게 해줍니다. 블로그나 웹사이트에 영상을 올릴 때 반드시 넣어야 할 옵션입니다.
무음 구간 자동 감지
ffmpeg -i input.mp4 -af silencedetect=noise=-30dB:d=2 -f null -
2초 이상 지속되는 -30dB 이하의 무음 구간을 자동으로 찾아줍니다. 팟캐스트 편집이나 강의 영상에서 불필요한 침묵 구간을 파악할 때 유용합니다.
화면 녹화 (데스크톱 캡처)
# Windows (GDI 캡처)
ffmpeg -f gdigrab -framerate 30 -i desktop -c:v libx264 -crf 20 screen.mp4
# macOS
ffmpeg -f avfoundation -framerate 30 -i "1:" -c:v libx264 -crf 20 screen.mp4
별도의 화면 녹화 프로그램 없이도 FFmpeg만으로 데스크톱을 녹화할 수 있습니다. 간단한 튜토리얼 영상이나 버그 재현 영상을 찍을 때 가볍게 활용할 수 있습니다.
마무리: FFmpeg, 한 번 배우면 평생 쓰는 도구
FFmpeg는 처음 접할 때 명령어가 길고 복잡해 보이지만, 기본 구조(ffmpeg -i 입력 [옵션] 출력)만 기억하면 나머지는 옵션을 조합하는 것뿐입니다. 이 글에서 다룬 명령어만 즐겨찾기 해두어도 일상에서 만나는 동영상 작업의 90%는 해결됩니다.
특히 자동화 스크립트와 결합하면 진가가 드러납니다. 매주 쌓이는 드론 영상을 자동으로 압축하거나, 강의 녹화를 자동으로 포맷 변환하거나, 블로그용 GIF를 한 번에 생성하는 파이프라인을 만들 수 있습니다. 처음에는 이 글의 예제를 그대로 복사해서 써보고, 점차 자신만의 프리셋 명령어를 메모장에 쌓아가는 것을 추천합니다.
유료 소프트웨어 구독료를 아끼면서 더 빠르고 정확한 결과를 얻을 수 있는 FFmpeg, 오늘부터 터미널을 열고 한 줄씩 시작해보세요.
이미지는 Leonardo AI 로 생성되었습니다.
이미지는 Claude AI 로 생성되었습니다.