FFmpeg 사용법 — 명령 구조와 변환·구간 자르기 기본

버전 9.0.1 · 확인일 2026-09-05 오픈소스(LGPL-2.1/GPL-2.0) 윈도우 11 동작

영상·음성 변환·병합·자르기를 명령줄로 처리하는 도구. 다른 프로그램의 엔진으로도 쓰입니다.

기본 정보
개발사FFmpeg team
라이선스오픈소스(LGPL-2.1/GPL-2.0) — LGPL-2.1 · GPL 빌드 별개
가격무료
현재 버전9.0.1 (원천: winget-pkgs 매니페스트)
확인일2026-09-05
지원 OS윈도우 10·11
공식 바로가기ffmpeg.org

공식 배포처 안내(다운로드 페이지) →

명령의 구조부터 이해하기

FFmpeg는 화면이 없는 명령줄 도구입니다. 그래서 사용법의 출발점은 명령의 구조를 이해하는 것입니다. 공식 매뉴얼이 제시하는 형식은 다음과 같습니다.1

ffmpeg [global_options] {[input_file_options] -i input_url} ... {[output_file_options] output_url} ...

풀어 쓰면 이렇습니다. -i 뒤에 오는 것이 입력이고, 옵션으로 해석되지 않는 마지막 것이 출력입니다. 공식 매뉴얼의 표현대로 “명령줄에서 옵션으로 해석될 수 없는 것은 출력 주소로 간주”됩니다.1

여기서 반드시 알아야 할 규칙이 세 가지 있습니다. 공식 매뉴얼이 명시적으로 강조하는 내용입니다.1

  • 순서가 중요합니다. 옵션은 원칙적으로 그다음에 지정되는 파일에 적용됩니다. 따라서 같은 옵션을 명령줄에 여러 번 쓸 수 있고, 각각은 그다음 입력 또는 출력 파일에 적용됩니다.
  • 전역 옵션은 맨 앞에. 상세 로그 수준 같은 전역 옵션은 이 규칙의 예외이며 가장 먼저 지정해야 합니다.
  • 입력과 출력을 섞지 않습니다. 공식 매뉴얼은 “입력 파일과 출력 파일을 섞지 말고, 먼저 모든 입력 파일을, 그다음 모든 출력 파일을 지정하라”고 밝힙니다. 서로 다른 파일에 속하는 옵션도 섞지 않아야 하며, 모든 옵션은 오직 그다음 입력 또는 출력 파일에만 적용되고 파일 사이에서 초기화됩니다.

FFmpeg 명령이 뜻대로 동작하지 않는 경우의 상당수가 이 순서 규칙 때문입니다. 옵션을 어디에 두느냐에 따라 의미가 달라진다는 점을 기억하면 대부분이 풀립니다.

핵심 작업 1 — 형식 바꾸기

공식 매뉴얼에 실린 가장 기본적인 예시입니다. 미디어 스트림을 다시 인코딩해 다른 형식으로 바꿉니다.1

ffmpeg -i input.avi output.mp4

확장자만 바꿔 적으면 FFmpeg가 그 형식에 맞는 기본 코덱으로 알아서 변환합니다. 이 한 줄이 FFmpeg 사용의 절반입니다.

영상 비트레이트를 지정하려면 공식 매뉴얼의 예시대로 -b:v를 씁니다. 출력 파일의 영상 비트레이트를 64 kbit/s로 지정하는 예입니다.1

ffmpeg -i input.avi -b:v 64k -bufsize 64k output.mp4

프레임 레이트를 강제하려면 -r을 씁니다. 출력 파일의 프레임 레이트를 24fps로 강제하는 공식 매뉴얼 예시입니다.1

ffmpeg -i input.avi -r 24 output.mp4

-r은 두는 위치에 따라 의미가 달라지는 대표적인 옵션입니다. 공식 매뉴얼은 입력 파일의 프레임 레이트를 1fps로, 출력 파일의 프레임 레이트를 24fps로 강제하는 예시를 이렇게 듭니다(입력 프레임 레이트 강제는 raw 형식에만 유효합니다).1

ffmpeg -r 1 -i input.m2v -r 24 output.mp4

핵심 작업 2 — 다시 인코딩하지 않고 빠르게 처리하기(스트림 복사)

담는 그릇(컨테이너)만 바꾸면 되는 경우, 영상을 다시 인코딩할 필요가 없습니다. 공식 매뉴얼은 이것을 스트림 복사(Streamcopy)라고 부르며, -c copy가 복사 인코더를 선택해 디코딩도 인코딩도 하지 않는다고 설명합니다.1

공식 매뉴얼에 실린 예시입니다. 입력 INPUT.mkv에서 인덱스 1인 스트림만 골라 그대로 OUTPUT.mp4에 담습니다.1

ffmpeg -i INPUT.mkv -map 0:1 -c copy OUTPUT.mp4

여기서 -map 0:1은 인덱스 0인 입력(즉 첫 번째 입력)에서 인덱스 1인 스트림(즉 두 번째 스트림)을 고른다는 뜻입니다. 공식 매뉴얼 설명 기준으로 입력·출력과 스트림의 인덱스는 모두 0부터 시작하며, 2:3은 세 번째 입력 또는 출력의 네 번째 스트림을 가리킵니다.1

스트림 복사는 인코딩을 하지 않으므로 매우 빠르고 화질 손실이 없습니다. 공식 매뉴얼은 스트림 복사가 스트림 개수를 바꾸거나 컨테이너를 바꿀 때 유용하다고 설명합니다. 다만 목표 형식이 그 코덱을 담을 수 없다면 쓸 수 없습니다.1

스트림별로 다르게 처리할 수도 있습니다. 공식 매뉴얼의 예시는 다음과 같으며, 두 번째 영상 스트림과 138번째 오디오를 제외한 모든 스트림을 복사합니다.1

ffmpeg -i INPUT -map 0 -c copy -c:v:1 libx264 -c:a:137 libvorbis OUTPUT

핵심 작업 3 — 구간만 잘라내기

긴 영상에서 일부만 필요할 때 씁니다. 공식 매뉴얼에 정리된 세 옵션을 조합합니다.1

옵션 공식 매뉴얼 설명
-ss position 입력 옵션으로 쓰면(-i 앞) 그 입력 파일에서 해당 위치로 탐색. 대부분의 형식에서 정확한 탐색이 불가능하므로 그 위치 직전의 가장 가까운 탐색 지점으로 이동함
-t duration 입력 옵션으로 쓰면 입력에서 읽을 데이터의 길이를 제한. 출력 옵션으로 쓰면 출력 길이가 그 값에 도달했을 때 기록을 멈춤
-to position 지정한 위치에서 출력 기록 또는 입력 읽기를 멈춤. -to-t는 함께 쓸 수 없으며 -t가 우선함

10초 지점부터 30초 분량을 잘라 내는 예입니다.

ffmpeg -ss 10 -i input.mp4 -t 30 output.mp4

스트림 복사를 함께 쓰면 훨씬 빠릅니다. 다만 공식 매뉴얼이 밝히듯 스트림 복사를 하거나 -noaccurate_seek를 쓸 때는 탐색 동작이 달라지므로, 시작 지점이 지정한 위치와 정확히 맞지 않을 수 있습니다. 정확한 시작 지점이 중요하면 다시 인코딩하는 편이 안전합니다.1

ffmpeg -ss 10 -i input.mp4 -t 30 -c copy output.mp4

핵심 작업 4 — 소리만 빼내거나 영상만 남기기

공식 매뉴얼에 -vn 옵션이 정리되어 있습니다. 출력 옵션으로 쓰면 영상 기록을 비활성화하는데, 즉 어떤 영상 스트림도 자동 선택·매핑되지 않습니다. 입력 옵션으로 쓰면 그 파일의 모든 영상 스트림이 필터링되거나 자동 선택·매핑되지 않도록 막습니다.1

영상에서 소리만 빼내는 예입니다.

ffmpeg -i input.mp4 -vn output.m4a

완전한 수동 제어가 필요하면 공식 매뉴얼이 안내하는 대로 -map 옵션을 씁니다. 어느 입력의 어느 스트림을 어느 출력에 넣을지 직접 지정하는 방식입니다.1

핵심 작업 5 — 필터 적용과 여러 파일 반복 처리

영상에 처리를 가하려면 필터를 씁니다. 공식 매뉴얼 기준으로 -vf filtergraph는 지정한 필터그래프를 만들어 스트림을 필터링하며, -filter:v의 별칭입니다. 크기 조정, 자르기, 회전 같은 처리가 여기에 해당합니다.1

영상 회전과 관련해 알아 둘 옵션이 하나 있습니다. 공식 매뉴얼 기준으로 -autorotate는 파일 메타데이터에 따라 영상을 자동으로 회전시키며 기본적으로 켜져 있습니다. 끄려면 -noautorotate를 씁니다. 휴대폰으로 찍은 세로 영상이 변환 후 방향이 달라지는 문제는 대개 이 옵션과 관련이 있습니다.1

FFmpeg의 진짜 힘은 반복 처리에서 나옵니다. 폴더 안의 모든 mkv 파일을 mp4로 바꾸는 PowerShell 예입니다.

Get-ChildItem *.mkv | ForEach-Object { ffmpeg -i $_.Name -c copy ($_.BaseName + ".mp4") }

파일 백 개를 같은 규칙으로 처리해야 할 때, 화면이 있는 프로그램에서 백 번 클릭하는 대신 이 한 줄로 끝납니다. 실행 전에 반드시 파일 한두 개로 먼저 시험하고, 원본 폴더를 복사해 두는 편이 안전합니다.


알아 두면 좋은 것

항목 내용
옵션 순서 옵션은 그다음 파일에만 적용되고 파일 사이에서 초기화됨. 입력과 출력을 섞지 않음1
전역 옵션 로그 수준 같은 전역 옵션은 맨 앞에 지정1
인덱스는 0부터 첫 번째 입력이 0, 그 안의 첫 스트림도 01
-c copy 인코딩 없이 그대로 옮김. 빠르고 화질 손실 없음1
-to-t 함께 쓸 수 없고 -t가 우선1
-noautorotate 메타데이터 기반 자동 회전을 끔1

자주 막히는 것

  • 옵션이 적용되지 않는다 — 옵션의 위치를 확인합니다. 공식 매뉴얼이 명시하듯 모든 옵션은 오직 그다음 입력 또는 출력 파일에만 적용되고 파일 사이에서 초기화됩니다. 출력에 적용할 옵션이 -i 앞에 있으면 입력 옵션으로 해석됩니다.1
  • 잘라 낸 구간의 시작이 어긋난다 — 공식 매뉴얼이 설명하듯 대부분의 형식에서 정확한 탐색은 불가능하며, FFmpeg는 지정 위치 직전의 가장 가까운 탐색 지점으로 이동합니다. 스트림 복사를 쓰면 이 차이가 더 두드러지므로, 정확한 시작이 필요하면 다시 인코딩합니다.1
  • 영상 방향이 바뀐다 — 메타데이터 기반 자동 회전이 기본으로 켜져 있습니다. 원본 방향을 그대로 두려면 -noautorotate를 씁니다.1

비슷한 도구

기능 기준으로 겹치는 부분만 적었습니다. 순위나 우열은 매기지 않습니다.

도구 겹치는 기능 다른 점
HandBrake 영상 형식 변환·인코딩 화면과 프리셋이 있어 명령을 몰라도 되지만, 세밀한 제어와 자동화는 제한적
OBS Studio 영상·소리 처리 변환이 아니라 실시간 녹화·송출. 공식 페이지 기준 리눅스 판은 FFmpeg를 필요로 함
팟플레이어 영상·소리 형식 다루기 재생이 목적

FFmpeg를 아직 받지 않았다면 윈도우용 빌드 고르기와 PATH 설정은 FFmpeg 다운로드 페이지에 정리해 두었습니다.

비슷한 도구 (기능 태그가 겹치는 순서 없는 목록)
도구겹치는 기능라이선스
7-Zip명령줄오픈소스(LGPL-2.1)
HandBrake영상 변환오픈소스(GPL-2.0)
WinMerge병합오픈소스(GPL-2.0)
텍스트 파일 합치기명령줄, 병합무료

기능: 명령줄 영상 변환 병합 오디오 추출