FFmpeg

wwiki
이동: 둘러보기, 검색

FFmpeg 명령어 사용법

개요[편집 | 원본 편집]

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

설명[편집 | 원본 편집]

ffmpeg는 매우 빠른 비디오와 오디오 변환기이다. 게다가 라이브 오디오/비디오 소스로부터 잡을 수도 있다. 임의의 샘플 레이트 사이에서도 변환할 수도 있고, 고품질 다중 필터로 즉각적으로 비디오를 리사이즈 할 수 있다.

ffmpeg는 -i옵션으로 지정한 입력파일들로부터(파일, pipes, 네트워크 스트림, 장치 등)임의의 숫자를 읽는다. 그리고 출력 경로(URL)로 지정된 파일들에 임의의 숫자를 쓴다. 옵션으로 해석 할 수 없는 명령 줄에서 발견 된 모든 것은 출력 경로로 간주됩니다.

원칙적으로 입출력 경로는 다른 형태들(비디오, 오디오, 자막, 첨부, 데이터)의 스트림 숫자를 포함한다. 스트림 타입들의 허용된 숫자는 컨테이너 포맷에 의해 제한될 것이다. 입력으로부터 스트림에서 출력으로 가는 것을 선택하는 것은 자동으로 되거나 -map옵션으로 지정할 수 있다.(스트림 섹션을 봐라.)

옵션에서 입력 파일들을 참조하려면 해당 인덱스(0 based)를 사용해야 한다. 예를 들어 첫번째 입력파일은 0, 두번째 입력파일은 1순이다. 비슷하게 파일 스트림들은 해당 인덱스에 의해 참조된다. 가령, 2:3은 세번째 입력파일에서 4번째 스트림을 참조한다. 스트림 지정자(specifiers) 챕터를 봐라.

일반적으로, 옵션들은 다음에 지정된 파일에 적용된다. 그러므로 순서는 중요하다. 그리고 명령줄 라인에서 같은 옵션을 여러 번 지정할 수 있다. 각 옵션은 다음의 입력이나 출력파일에 적용된다. 이 룰에서 예외는 처음에 지정된 전역 옵션들이다.(로그레벨처럼)

입력 파일과 출력 파일을 섞지마라. 모든 입력 파일들을 먼저 지정하고, 모든 출력 파일들을 지정해라. 또한 다른 파일들에 속하는 옵션을 혼용하지 마라. 모든 옵션은 오직 다음에 지정된 입력 혹은 출력파일에 적용된다. 그리고 파일들 사이에서 리셋된다.

  • 출력 파일에 비디오 비트레이트를 64kbit/s를 설정하려면
$ ffmpeg -i input.avi -b:v 64k -bufsize 64k output.avi
  • 출력 파일에 프레임레이트를 24fps로 설정하려면
$ ffmpeg -i input.avi -r 24 output.avi
  • 입력 파일(raw format들만 유효하다.)의 프레임레이트를 1fps로 설정하고 출력파일에 24fps을 설정하려며
ffmpeg -r 1 -i input.m2v -r 24 output.avi

포맷 옵션은 raw 입력 파일들을 위해서 필요하다.

상세설명[편집 | 원본 편집]

ffmpeg에서 각 출력을 위한 트랜스코딩 절차는 다음 다이어그램으로 설명할 수 있다.

Ffmpeg 트랜스코딩 절차.png

스트림 지정자(Stream specifiers)[편집 | 원본 편집]

일부 옵션들은 스트림별로 적용된다. 가령, 비트레이트나 코덱처럼. 스트림 지정자는 주어진 옵션이 속한 스트림을 정확하게 지정하는데 사용된다.

예를 들어 "-codec:a:1 ac3"는 두번째 오디오 스트림과 매칭되는 "a:1"스트림 지정자를 포함한다.

하나의 스트림 지정자는 여러개의 스트림들을 매칭해서, 모든 스트림에 옵션을 적용할 수 있다. 가령 "-b:a 128k"에서 스트림 지정자는 모든 오디오 스트림에 매칭한다.

비어 있는 스트림 지정자는 모든 스트림에 매칭한다. 예를 들면, "-codec copy"나 "-codec: copy"는 모든 스트림들에서 재인코딩 없이 복사한다.

stream_index

stream_type[:추가_스트림_지정자]

'v', 'V'는 비디오, 'a'는 오디오, 's'는 자막, 'd'는 데이터, 't'는 첨부이다. 'v'는 오직 비디오 스트림들이다. 첨부된 사진들, 비디오 썸네일들이나 커버 사진들이 아니다.

옵션들[편집 | 원본 편집]

스트림 사양[편집 | 원본 편집]

일반옵션들[편집 | 원본 편집]

이 옵션들은 ff*툴들간에 공유된다.

-h, -?, -help, --help [arg]

arg에 가능한 값들은

long

full

decoder=decoder_name

encoder=encoder_name

demuxer=demuxer_name

muxer=muxer_name

filter=filter_name

bsf=bitstream_filter_name

protocol=protocol_name

-codecs

libavcodec에 알려진 모든 코덱들을 표시한다.

-decoders

사용가능한 디코더들을 표시한다.

-encoders

인코더를 표시한다.

AVOptions[편집 | 원본 편집]

이 옵션들은 libavformat, libavdevice 및 libavcodec 라이브러리에서 직접 제공된다. 사용가능한 옵션의 리스트를 보기 위해서는 -help 옵션을 사용해라.

예를 들어, MP3파일에 기본값 ID3v2.4 대신에 ID3v2.3를 쓰려면, MP3 먹서의 옵션인 id3v2_version를 사용해라.

$ ffmpeg -i input.flac -id3v2_version 3 out.mp3

메인 옵션들[편집 | 원본 편집]

-itoffset offset (input)[편집 | 원본 편집]

input time offset을 설정한다.

비디오 옵션들[편집 | 원본 편집]

고급 비디오 옵션들[편집 | 원본 편집]

오디오 옵션들[편집 | 원본 편집]

-ac[:stream_specifier] channels (input/output,per-stream)[편집 | 원본 편집]

Set the number of audio channels.

고급 오디오 옵션들[편집 | 원본 편집]

자막 옵션들[편집 | 원본 편집]

고급 자막 옵션들[편집 | 원본 편집]

고급 옵션들[편집 | 원본 편집]

-shortest (output)[편집 | 원본 편집]

Finish encoding when the shortest input stream ends.

프리셋 파일들[편집 | 원본 편집]

예제[편집 | 원본 편집]

비디오와 오디오 grabbing[편집 | 원본 편집]

X11 grabbing[편집 | 원본 편집]

$ ffmpeg -f x11grab -video_size cif -framerate 25 -i :0.0 /tmp/out.mpg

0.0은 X11서버의 디스플레이.스크린 번호이다. DISPLAY 환경변수와 같다.

$ ffmpeg -f x11grab -video_size cif -framerate 25 -i :0.0+10,20 /tmp/out.mpg

vaapi를 사용한 하드웨어 가속을 사용한 화면 녹화

$ ffmpeg -y -loglevel quiet -vaapi_device /dev/dri/renderD128 \
-f x11grab  -draw_mouse 0 -s 1360x568 -r 30 -itsoffset 1.5 -t 2:00 -i :0.0+0,200 \
-f alsa -ac 2 -t 2:00 -i pulse \
-vf 'format=nv12,hwupload' -c:v h264_vaapi -c:a aac -timelimit 240 output.mp4

코덱들[편집 | 원본 편집]

h264_amf[편집 | 원본 편집]

AMD AMF H.264 Encoder

다음 명령으로 AVOptions을 볼 수 있다.

$ ffmpeg.exe --help encoder=h264_amf

외부링크[편집 | 원본 편집]

원문: https://ffmpeg.org/ffmpeg.html