• 기본 문법에 의하면 옵션들은 다음에 지정되는 파일에 적용
  • 순서는 중요하고 같은 옵션을 여러 명령줄에 사용 가능
  • 각 옵션들은 입력 혹은 출력 파일에 적용
 

 

1. FFMPEG 명령어 형식

ffmpeg [input options] -i [input filename] -codec:v [video options] -codec:a [audio options] [output file options] [output filename]

 

 

2. FFMPEG 주요 옵션

옵션 설명
-L - 라이센스 보여줌
-h - 도움말 출력
-version - 버전 정보
-format - 용가능한 포멧, 코덱, 프로토콜을 보여줌
-f <string> - 파일 포멧을 지정. (나중에 포멧 목록 참조)
-i <string> - 입력되는 파일 이름
-y - 출력 파일 덮어쓰기
-t <timecode> - 기록할 시간을 초 단위 또는 hh:mm:ss[.xxx] 형태로 설정
-fs <정수값> - 최대 파일 크기를 설정(바이트 단위)
-ss <timecode> - 작업할 시작시간 오프셋(시작위치)을 초 단위 또는 hh:mm:ss[.xxx] 형태로 설정
-itsoffset <time_off> - 설정 ts 오프셋(set the input ts offset)
-itsscale <stream:scale> - 입력 ts 스케일 설정(set the input ts scale)
-album <앨범명> - 앨범을 설정
-author <저자명> - 저자를 설정
-comment <주석> - 주석을 설정
-copyright <저작권> - 저작권에 대한 설정
-title <타이틀이름> - 타이틀을 설정
-timestamp <시간> - 타임스탬프 설정
-genre <장르명> - 장르를 설정
-dframes 숫자 - 기록할 데이터 프레임 개수 설정
-v <숫자> - 로깅 레벨 설정
-target <타입> - 목표 파일 타입 지정 ("vcd", "svcd", "dvd", "dv", "dv50", "pal-vcd", "ntsc-svcd", ...)
-xerror - 에러시 종료

 

 

3. FFMPEG 추가 옵션

옵션 설명
-map <file:stream>[:syncfile:syncstream] - 입력 스트림 매핑 설정
  -map에 대한 옵션 설명은 비디오 소스+오디오 소스 맵핑하여 합치는 명령어
  ffmpeg -i 비디오소스경로 -i 오디오소스경로 -c copy -map 0:v -map 1:a -y 저장할경로
  -map : 소스 매핑
  -map 0:v는 첫번째 Input의 video source를 사용하겠다는 것. 스트림 별로 선택도 가능
-map_meta_data outfile:infile - 입력파일에서 출력파일로 저장(?)될 메타 데이터 정보 설정
-benchmark - 벤치마킹할 타이밍 추가
-dump - 각 입력 패킷을 덤프함
-hex - 패킷을 덤프할때 페이로드도 같이 덤프함
-re - 기본 프레임 속도로 입력 읽기(read input at native frame rate)
-loop_input - 루프 (현재 이미지하고만 작동이 됨)
-loop_output - 루핑을 지원하는 포멧에서 출력을 루프할 횟수 지정(0은 계속 루프함)
-threads 개수 - 쓰레드 개수
-vsync - 비디오 싱크 방법
-async - 오디오 싱크 방법
-adrift_threshold 임계값 - 오디오 드리프트 임계값(audio drift threshold)
-vglobal - 비디오 글로벌 해더 저장 형식
-copyts - 타임스탬프 복사
-shortest - 최단 입력 시간 내에 인코딩 완료
-dts_delta_threshold 임계값 - 타임스탬프 불연속성 델타(delta) 임계값
-programid - 원하는 프로그램 개수(?)
-muxdelay seconds - 최대 디먹스-디코드 지연값 설정(?)
-muxpreload seconds - 초기 디먹스-디코드 지연값 설정(?)

 

 

4. FFMPEG 비디오 옵션

옵션 설명
-aspect <string or float> - 비율을 설정 ( 4:3, 16:9, 1.3333, 1.7777 )
- set aspect ratio (4:3, 16:9 or 1.3333, 1.7777)(비율조정 4:3, 16:9)
-b <int> - 비디오 비트레이트를 bit/s단위로 설정 (기본=200k)
- set bitrate (in bits/s) (비트레이트 조정)
-vb bitrate - 비디오 비트레이트 설정 (in bits/s)
- set bitrate (in bits/s) (가변비트레이트 조정)
-vframes number - 기록할 비디오 프레임 수 지정
- set the number of video frames to record
-s size - 화면 크기 지정 (WxH 또는 비율)
-croptop size - 상단 잘라내는 밴드 크기 지정 (픽셀단위)
- set top crop band size (in pixels)(상단 잘라낼 사이즈 설정 - 단위 픽셀)
-cropbottom size - 하단 잘라내는 밴드 크기 지정 (픽셀단위)
- set bottom crop band size (in pixels)(하단 잘라낼 사이즈 설정- 단위 필셀)
-cropleft size - 왼쪽 잘라내는 밴드 크기 지정 (픽셀단위)
- set left crop band size (in pixels)(왼쪽 잘라낼 사이즈 설정 - 단위 픽셀)
-cropright size - 오른쪽 잘라내는 밴드 크기 지정 (픽셀단위)
- set right crop band size (in pixels)(오른쪽 잘라낼 사이즈 설정 - 단위 필셀)
-padtop size - 위쪽 패드 밴드 크기 지정 (픽셀단위)
- set top pad band size (in pixels)
-padbottom size - 하단 패드 밴드 크기 지정 (픽셀단위)
- set bottom pad band size (in pixels)
-padleft size - 왼쪽 패드 밴드 크기 지정 (픽셀단위)
- set left pad band size (in pixels)
-padright size - 오른쪽 패드 밴드 크기 지정 (픽셀단위)
- set right pad band size (in pixels)
-padcolor color - 패드 밴드 색상 지정 (16진수 000000 ~ FFFFFF)
- set color of pad bands (Hex 000000 thru FFFFFF)
-vn - 비디오를 비활성화(disable video)
-vcodec codec - 비디오 코텍를 강제로 지정 ('copy' 은 스트림을 복제)
-sameq - 소스와 같은 비디오 퀄리티를 사용 (implies VBR)
-pass n - 패스 번호를 선택 (1 또는 2)
-passlogfile prefix - 패스 로그 파일 이름앞에 붙일 접두사 선택
-newvideo - 새로운 비디오 스트림을 현재 출력 스트림으로 추가

 

 

5. 추가 비디오 옵션

옵션 설명
-pix_fmt format - 픽셀 포맷 설정. 'list'는 지원되는 모든 픽셀 포맷 보여줌
-intra - 인트라 프래임만 사용
-vdt n - 쓰레드홀드 취소
-qscale q - 고정된 비디오 양자화범위를 사용 (VBR)
-rc_override override - 특정 간격에 대한 속도 제어 재정의
-me_threshold threshold - 모션 추정 임계값(motion estimaton threshold)
-deinterlace - 사진 인터레이스 해제(deinterlace pictures)
-psnr - 압축 프레임의 PSNR 계산
-vstats - 비디오 코딩 통계를 파일로 덤프
-vstats_file file - 비디오 코딩 통계를 파일로 덤프
-intra_matrix matrix - 인트라 매트릭스 계수 지정(specify intra matrix coeffs)
-inter_matrix matrix - 행렬 간 계수 지정(specify inter matrix coeffs)
-top - 상단=1/하단=0/자동=-1 필드 첫 번째(top=1/bottom=0/auto=-1 field first)
-dc precision - intra_dc_precision
-vtag fourcc/tag - 강제 비디오 태그/FOURCC
-qphist - QP 히스토그램 표시(show QP histogram)
-force_fps - 선택한 프레임 속도를 강제로 적용하고, 지원되는 최고 프레임 속도 선택을 비활성화
-vpre preset - 비디오 옵션을 표시된 사전 설정으로 설정

 

 

6. 오디오 옵션

옵션 설명
-ab <int> - 오디오 비트레이드를 bit/s 단위로 설정
- 값은 정수(기본 = 64k)
- set bitrate (in bits/s)(초당 비트레이트를 설정 ex)128, 192, 320 etc)
-aframes number - 녹음할 오디오 프레임 수 설정
-aq quality - 오디오 품질 설정(코덱별)
-ar rate - 오디오 샘플링 속도 설정(Hz 단위)
- set audio sampling rate (in Hz)(오디오 샘플림을 설정함 32000,44000)
-ac channels - 오디오 채널 수 설정
- set number of audio channels(오디오 채널을 설정함 1-mono 2-stereo)
-an - 오디오 비활성화
-acodec codec - 오디오 코덱 강제 적용('copy'로 스트림 복사)
-vol volume - 오디오 볼륨 변경(256=일반)
- 볼륨을 설정함
-newaudio - 현재 출력 스트림에 새 오디오 스트림을 추가
-alang code - 현재 오디오 스트림의 ISO 639 언어 코드(3글자)를 설정
-acodec <string> - 사용할 오디오 코덱을 지정
  1. ac3 : AC3 ( Dolby Digital ) 
  2. copy : 원본 데이터를 그대로 복사. 
  3. libfaac : AAC-LC 
  4. mp2 : MPEG Audio Layer II 
  5. mp3 : MPEG Audio Layer III 
  6. pcm_s16le : 비압축 16-bit PCM Audio
-an - 오디오를 사용하지 않음
-ar <int> - 오디오 샘플링율을 Hz단위로 설정 (기본 = 44100 Hz).
-async <int> - 오디오 동기화 방법
- 오디오를 타임스템프에 맞춰서 늘리거나 줄일 수 있음
- 매개변수는 오디오 변화에 의한 초당 최대 샘플 개수를 의미
  -async 1은 특별한 경우로 지연 수정 없이 오디오 스트림 시작 위치가 정확한 경우에만 사용가능.

 

 

7. 추가 오디오 옵션

옵션 설명
-atag fourcc/tag - 강제 오디오 태그/포괄호(force audio tag/fourcc)
-sample_fmt format - 샘플 형식 설정
- 인자로 'list(목록)'을 지정하면 지원되는 모든 샘플 형식이 표시
-apre preset - 오디오 옵션을 표시된 사전 설정으로 설정

 

 

8. 자막 옵션

옵션 설명
-sn - 자막 비활성화
-scodec codec - 자막 코덱 강제 적용('copy' to copy stream)
-newsubtitle - 현재 출력 스트림에 새 자막 스트림을 추가
-slang code - 현재 자막 스트림의 ISO 639 언어 코드(3글자)를 설정
-spre preset - 자막 옵션을 표시된 사전 설정으로 설정

 

 

9. 오디오/비디오 획득 옵션(Audio/Video grab options)

옵션 설명
-vc channel - 비디오 그랩 채널 설정(DV1394만 해당)
-tvstd standard - 텔레비전 표준 설정(NTSC, PAL(SECAM))
-isync - 입력 시 읽기 동기화(sync read on input)
-bufsize <int> - 제어버퍼 크기를 설정 (비트단위)
-cmp <string or int> - pel 모션 평가 비교 함수 사용 - Full pel motion estimation compare function
  1. sad ( 0 ) : 절대 차이 값의 합, 고속 (기본) 
  2. sse ( 1 ) : Squared errors 합. 
  3. satd ( 2 ) : Absolute Hadamard transformed differences 합. 
  4. dct ( 3 ) : Absolute DCT transformed differences 합. 
  5. psnr ( 4 ) : Squared quantization errors 합( 비추, 저품질). 
  6. bit ( 5 ) : 블럭에 필요한 비트 수 
  7. rd ( 6 ) : Rate distortion optimal, 느림.
  8. zero ( 7 ) : 0. 
  9. vsad ( 8 ) : Absolute vertical differences 합. 
  10. vsse ( 9 ) : Squared vertical differences 합. 
  11. nsse ( 10 ) : Noise preserving sum of squared differences. 
  12. w53 ( 11 ) : 5/3 wavelet ( Snow에서만 사용됨). 
  13. w97 ( 12 ) : 9/7 wavelet ( Snow에서만 사용됨). 
  14. dctmax ( 13 ) 
  15. chroma ( 14 ) 
-coder <string or int> - coder 설정
  1. vlc ( 0 ) : 가변 길이 코더 / 허프만 코더. 
  2. ac ( 1 ) : 산술연산 코더(Arithmetic coder). 
  3. raw ( 2 ) : 원본 ( 인코딩 없음). 
  4. rle ( 3 ) : Run-length coder. 
  5. deflate ( 4 ) : Deflate-based coder. 
-cropbottom <int> - 하단 잘려지는 화면 크기 설정(비트 단위)
-cropleft <int> - 왼쪽 잘려지는 화면 크기 설정(비트 단위)
-cropright <int> - 오른쪽 잘려지는 화면 크기 설정(비트 단위)
-croptop <int> - 오른쪽 잘려지는 화면 크기 설정(비트 단위)
-deinterlace - 픽처를 디인터페이스 시킴(Deinterlace pictures)
-dc <int> - Intra DC precision.
-flags <string> - 사용 가능 값
  1. aic : H.263 고급 인트라 코딩 / MPEG-4 ac 예측 (H.263 advanced intra coding / MPEG-4 ac prediction)
  2. aiv : H.263 alternative inter VLC (VLC 간 H.263 대체)
  3. alt : Enable alternate scantable( MPEG-2/MPEG-4) (대체 스캔 가능(MPEG-2/MPEG-4) 활성화)
  4. bitexact : Use only bitexact stuff ( except (i)dct ) (바이텍스트만 사용하세요((I)DCT 제외))
  5. cbp : Use rate distortion optimization for cbp (CBP에 속도 왜곡 최적화를 사용)
  6. cgop : Closed GOP (폐쇄된 GOP)
  7. gmc : Use global motion compensation (글로벌 모션 보정 사용)
  8. gray : Only decode/encode grayscale (회색조만 디코딩/인코딩 가능)
  9. ildct : Use interlaced DCT (인터레이스드 DCT 사용)
  10. ilme : Interlaced motion estimation (인터레이스 모션 추정)
  11. loop : Use loop filter (루프 필터 사용)
  12. low_delay : Force low delay (강제 낮은 지연)
  13. mv0 : Always try a mb with mv=<0,0> (항상 mv=<0,0>으로 엠비를 사용)
  14. mv4 : Use four motion vector by macroblock ( MPEG-4)
  15. naq : Normalize adaptive quantization (적응형 양자화 정규화)
  16. obmc : Use overlapped block motion compensation ( H.263+ ). 
  17. part : Use data partitioning (데이터 파티셔닝을 사용)
  18. psnr : Error variables will be set during encoding (인코딩 중에 오류 변수가 설정)
  19. qpel : Use 1/4 pel motion compensation (1/4 펠 모션 보정 사용)
  20. qprd : Use rate distortion optimization for qp selection (QP 선택에 속도 왜곡 최적화 사용)
  21. scan_offset : Will reserve space for svcd scan offset user data
  22. slice 
  23. trell : Use trellis quantization (격자 정량화 사용)
  24. umv : Use unlimited motion vectors (무제한 모션 벡터 사용)
-flags2 <string> - 사용 가능 값
  1. aud : Access unit delimiters ( H.264 )
  2. bpyramid : Allows B-frames to be used as references for predicting. 
  3. brdo : B-frame rate-distortion optimization. 
  4. dct8x8 : High profile 8x8 transform ( H.264 ). 
  5. drop_frame_timecode 
  6. fast : Allow non spec compliant speedup tricks. 
  7. fastpskip : Fast pskip ( H.264 ). 
  8. ivlc : Intra VLC table.
  9. local_header : Place global headers at every keyframe instead of in extradata. 
  10. mixed_refs : One reference per partition, as opposed to one reference per macroblock. 
  11. non_linear_q : Use non linear quantizer. 
  12. noout : Skip bitstream encoding. 
  13. sgop : Strictly enforce GOP size. 
  14. skiprd : RD optimal macroblock level residual skipping. 
  15. wpred : Weighted biprediction for B-frames ( H.264 ). 
-formats - 가능한 포멧, 코덱, 프로토콜 등을 보여줌
-g <int> - Group of pictures ( GOP ) 크기 설정
-genpts <boolean> - PTS 생성( 0 = off / 1 = on )
-intra - Intra frames ( I-frames )만 사용
-loop_input - 반복 ( 정지 이미지에서만 사용 )
-maxrate <int> - 최대 비디오 비트레이트 허용치 설정( bit/s 단위)
-me <string or int> - 모션 추출 방법 설정
  1. dia ( 1 ) : Diamond 검색, 반경 1 ( 고속). 
  2. hex ( 2 ) : Hexagonal 검색, 반경 2 ( 기본). 
  3. umh ( 3 ) : Uneven multi-hexagon 검색. 
  4. esa ( 4 ) : Exhaustive 검색 ( 저속). 
-mbd <string> - Macroblock decision 알고리즘 ( 고품질 모드)
  1. simple : mbcmp 사용( 기본 )
  2. bits : fewest bits 사용
  3. rd : best rate distortion 사용 
-minrate <int> - 최소 비디오 비트레이트 허용치 설정 ( bit/s 단위 )
-newaudio - 새로운 오디오 스트립을 현재 출력 스트림에 추가
-padbottom <int> - 하단 패드 밴드 크기설정 ( 픽셀 단위 )
- 하단 여백 크기을 말함
-padcolor <int> - 패드 밴드의 색상을 설정 ( 16진수 000000 ~ FFFFFF )
- 여백 색상을 말함
-padleft <int> - 왼쪽 패드 밴드 크기를 설정 ( 픽셀 단위 )
- 왼쪽 여백 크기를 말함
-padright <int> - 오른쪽 패드 밴드 크기를 설정 ( 픽셀 단위 )
- 오른쪽 여백 크기를 말함
-padtop <int> - 위쪽 패드 밴드 크기를 설정 ( 픽셀 단위 )
- 위쪽 여백 크기를 말함
-pass <int> - 패스 수 선택 ( 1 or 2 )
- 비디오 통계치는 첫번째 패스에서 기록이되고 두번째 패스에서 비디오가 정확히 원하는 비트레이트로 생성
-pix_fmt <string> - 픽셀 포맷 설정
  1. yuv420p 
  2. yuv422p 
  3. yuv444p 
  4. yuv422 
  5. yuv410p 
  6. yuv411p 
  7. yuvj420p 
  8. yuvj422p 
  9. yuvj444p 
  10. rgb24 
  11. bgr24 
  12. rgba32 
  13. rgb565 
  14. rgb555 
  15. gray 
  16. monow 
  17. monob 
  18. pal8 
-ps <int> - 패킷 크기를 비트 단위로 설정
-qmax <int> - 최대 비디오 양자화(quantizer) 값 ( VBR )
- 가변 비트레이트에서 최대치
-qmin <int> - 최소 비디오 양자화(quantizer) 값 ( VBR )
- 가변 비트레이트에서 최소치
-qscale <int> - 고정 비디오 양자화(quantizer) 값 ( VBR )
- 고정 비트레이스 값
-r <int or string>
(-r rate)
- 프레임 율 설정 ( Hz 값, 비율 혹은 약호사용 )
- 예시 : 25, 30000/1001, etc
- set frame rate (Hz value, fraction or abbreviation)(프레임 레이트 조정)
-rc_init_occupancy <int> - 디코딩 시작 전에 rate control 버퍼에 로드되는 비트 개수
-s <string>
(-s size)
- 프레임 크기 설정 ( 폭x높이 또는 약호)
- set frame size (WxH or abbreviation)(프레임 사이즈 조정)
-subcmp <string or int> - 서브 펠(pel) 모션 추정 비교 기능. 
  1. sad ( 0 ) : Sum of absolute differences, fast ( default ). 
  2. sse ( 1 ) : Sum of squared errors. 
  3. satd ( 2 ) : Sum of absolute Hadamard transformed differences. 
  4. dct ( 3 ) : Sum of absolute DCT transformed differences. 
  5. psnr ( 4 ) : Sum of squared quantization errors ( avoid, low quality ). 
  6. bit ( 5 ) : Number of bits needed for the block. 
  7. rd ( 6 ) : Rate distortion optimal, slow. 
  8. zero ( 7 ) : 0. 
  9. vsad ( 8 ) : Sum of absolute vertical differences. 
  10. vsse ( 9 ) : Sum of squared vertical differences. 
  11. nsse ( 10 ) : Noise preserving sum of squared differences. 
  12. w53 ( 11 ) : 5/3 wavelet ( only used in Snow ). 
  13. w97 ( 12 ) : 9/7 wavelet ( only used in Snow ). 
  14. dctmax ( 13 ) 
  15. chroma ( 14 ) 
-ss <timecode> - 작업할 시작시간 오프셋(시작위치)을 초 단위 또는 hh:mm:ss[.xxx] 형태로 설정
-t <timecode> - 기록할 시간을 초 단위 또는 hh:mm:ss[.xxx] 형태로 설정.
-timecode_frame_start <int> - GOP 시작 타임코드 값을 프레임 개수로 설정( 예: 14:15:09:23 대신에 1282748사용 )
- 프레임 드롭 모드에서는 지원하지 않음
-top <int> - Field dominance(필드 지배력)
- top = 1 / bottom = 0 / auto = -1
-trellis <int> - 속도 왜곡 최적 양자화(Rate-distortion optimal quantization)
-vbsf <string> - 비트스트림 필터
  1. dump_extra 
  2. imxdump 
  3. noise 
  4. remove_extra 
-vcodec <string> - 비디오 코덱 지정
  1. copy : 원본 데이터 그대로 복사. 
  2. dvvideo : DV Video 
  3. ffv1 : FFV1 lossless video codec 
  4. libx264 : H.264 
  5. mpeg2video : MPEG-2 Video 
  6. rawvideo : RAW Video 
  7. xvid : XviD ( MPEG-4 Part 2 ) (역주: 최근 버전에서는 libxvid로 사용)
-vframes <int> - 기록할 비디오 프레임 개수 설정
-vn - 비디오 사용하지 않음
-vol <int> - 오디오 볼륨 수정 ( 256=보통)
-vsync <int> - 비디오 동기화 방법 → 비디오를 타임스템프에 맞춰서 줄이거나 늘릴 수 있음
- 프레임을 복제하거나 버리는 방법을 사용
  -map 옵션을 사용해서 타임스탬프로 사용할 스트림을 선택할 수 있음
- 비디오나 오디오를 변경없이 내버려둘 수 있고 변경되지 않은 것에 동기화 시킬수 있음
-vtag <string> - 비디오 FourCC/Tag 지정

 

참고 자료

 

 

'Media(미디어) > FFmpeg' 카테고리의 다른 글

CentOS 7에서 FFmpeg 설치 및 간단 테스트  (0) 2023.09.25
FFmpeg(fast forward mpeg)란  (0) 2023.09.24

+ Recent posts