Android Story

[ Android ] FFplay 문서 번역

WhiteDuck 2016. 12. 13. 18:21

// 본 문서는 ffplay Document를 번역한 문서입니다. //

// 번역 퀄리티에 책임을 지지 않음을 알려드립니다. //


목차

 1. 개요

 2. 설명

 3. Options

  * Stream 명세

  * 일반적인 옵션

  * AV 옵션

  * 메인 옵션

  * 보충 옵션

  * 재생중 옵션




1. 개요


ffplay [options] [input_url]




2. 설명


FFPlay는 FFMpeg 라이브러리와 SDL 라이브러리를 사용한 매우 간단한 미디어 플레이어입니다. 이 플레이어는 최신 FFmpeg API의 다양한 테스트를 통과했다.




3. Options


  숫자 옵션은 'K', 'M', 'G'와 같은 단위 접두사를 포함한 경우에 Sl unit 를 따르며, 그 이외에는 그대로 사용한다.


  만약 'i' 를 붙였을 경우에는 1000 제곱 대신에 1024 제곱을 사용하는 이진 곱셉을 위한 단위 접두사로 적용된다. 'B'를 붙인 경우에는 value*8 을 진행하며 'G' 같은  단위 접두사에 붙여 사용할 수 있다.


  옵션은 부울 값을 가지지 않는데, 그래서 대부분 참 값을 가진다. 그러나 반대 값으로 설정하고 싶다면 no를 붙여 사용한다. 예를들어 -nofoo는 foo가 false값인 것이다.




 3.1 Stream 명세



 bitrate나 codec 같은 옵션은 완전한 스트림을 지원한다. 스트림 명세는 옵션에 속한 것들을 명확하게 스트림에 적용한다.

 

 스트림 명세는 옵션 이름에 붙이거나 콜론(:)으로 분리하여 사용한다. 예를 들어. -codec:a:1 ac3 은  두 번째 오디오 스트림을 지시하는 a:1 스트림 명세를 포함하고,  ac3 코덱 사용을 명시한다.


 스트림 명세는 옵션 명을 제외하고 그들끼리 명세하기도 한다. 예를 들어, -b:a 128k 는 모든 오디오 스트림에 대해서 명세가 적용된다.


 빈 스트림 명세도 있는데, 예를 들어, -codec copy는 스트림을 인코딩변환기없이 스트림을 복사하는 명세이다.


 스트림 명세는 다음과 같다 : 


stream_index 

 스트림 인덱스,-thread:1 4 는 두 번째 스트림에 대한 tread 수를 4로 설정한다는 것.


stream_type[:stream_index]

 stream_type는 다음 중 한가지를 쓸 수 있는데, 'v', 'V'는 비디오(Video), 'a'는 오디오(Audio), 's'는 자막(Subtitle), 'd'는 데이터, 't'는 첨부(Attachments)를 의미한다. 여기에서 'v' 타입은 모든 비디오 스트림이고, 'V'는 추가되는 사진이다. 비디오 썸네일, 커버아트등이 첨부되지 않은 비디오 스트림을 의미한다. stream_index를 부여했다면, 인덱스를 가지는 해당 스트림에서만 적용된다. 


p:program_id[:stream_index]

 stream_index가 주어지면 프로그램의 숫자 stream_index와 ID가 program_id 인 스트림을 일치시킨다. 그렇지 않으면 프로그램의 모든 스트림과 일치시킨다.


#stream_id or i:stream_id

 스트림이 stream_id를 가진다.


m:key[:value]

 메타데이터 태그(key)를 사용하여 지정된 값을 스트림에 일치시킨다. value 값이 없다면, 지정된 캐그를 포함한 스트림을 임의의 값에 매치한다.


 사용 가능한 구성으로 스트림을 일치 시키려면 코덱을 정의해야하며 비디오 크기 또는 오디오 샘플 속도와 같은 필수 정보가 있어야 한다. ffmpeg에서 메타데이터 매칭은 입력파일에 대해서만 제대로 작동한다는 점에 유의바란다.



 

 3.2 일반적인 옵션



 이 옵션은 ff* tool사이에서 공유되어진다.



-L
라이센스

-h, -?, -help, --help [arg]
도움말. arg를 쓰면 해당 도움말만을 보여준다. arg가 없으면 기본적인 tool option 만을 보여준다.

 arg에 올 수 있는 값은 다음과 같다.

long
보충설명을 추가하여 보여준다.

full
encoders, decoders, demuxers, muxers, filters 등의 공유 및 개인 옵션을 포함하여 모든 옵션 리스트를 보여준다.  

decoder=decoder_name
decoder_name이라는 이름의 디코더에 대한 자세한 정보를 보여준다. 모든 디코더 목록을 얻으려면 -decoders 옵션을 사용한다.

encoder=encoder_name
encoder_name이라는 이름의 인코더에 대한 자세한 정보를 보여준다. 모든 인코더 목록을 얻으려면 -encoders 옵션을 사용한다.

demuxer=demuxer_name
demuxer_name이라는 이름의 demuxer에 대한 자세한 정보를 보여준다. 모든 demuxers과 muxers 목록을 얻으려면 -formats 옵션을 사용한다.

muxer=muxer_name
muxer_name이라는 이름의 muxer에 대한 자세한 정보를 보여준다. 모든 demuxers과 muxers 목록을 얻으려면 -formats 옵션을 사용한다.

filter=filter_name
filter_name이라는 이름의 필터에 대한 자세한 정보를 보여준다. 모든 필터 목록을 얻으려면 -filters 옵션을 사용한다.

-version
버전 정보.

-formats
가용가능한 포멧 ( 장비를 포함해서 )

-devices
가용가능한 장비

-codecs
libavcodec에 대한 모든 코덱 정보

이 문서 전체에서 'codec'은 "미디어 비트 스트림 형식"의 줄임말로 작성되었다.

-decoders
가용가능한 decoders

-encoders
가용가능한 encoders

-bsfs
가용가능한 비트 스트림 필터

-protocols
가용가능한 프로토콜

-filters
가용가능한 libavfilter의 필터

-pix_fmts
가용가능한 픽셀 형식

-sample_fmts
가용가능한 샘플 형식

-layouts
채널명과 기준 채널 레이아웃

-colors
인식되는 색상명

-sources device[,opt1=val1[,opt2=val2]...]
 입력 장치의 자동 감지 소스를 표시, 일부 장치는 자동 감지 할수 없는 시스템 종속적 소스 이름을 제공할 수 있다. 반환된 목록은 항상 완전하지만은 않다.

ffmpeg -sources pulse,server=192.168.0.4


-sinks device[,opt1=val1[,opt2=val2]...]

 출력 장치의 자동 감지 싱크를 표시, 일부 장치는 자동 감지할 수 없는 시스템 종속 싱크 이름을 제공할 수 있다. 반환된목록은 항상 완전하지만은 않다.


ffmpeg -sinks pulse,server=192.168.0.4


-loglevel [repeat+]loglevel | -v [repeat+]loglevel

라이브러리가 사용하는 로깅 레벨 설정. "repeat+" 를 설정하면 반복되는 로그를 한 줄에 압축시키지 않고 여러 줄에 표시하며, "마지막 메시지가 n번 반복됩니다." 메시지는 더 이상 나오지 않는다. "repeat"는 단독으로 사용될 수 있는데, 단독으로 사용하고 loglevel이 설정되어 있지 않은 경우 기본 loglevel이 적용된다. 여러 개의 loglevel 파라미터가 주어졌다면, "repeat"를 사용하여 loglevel을 변경하지 않는다. 


 loglevel 은 다음과 같다.:


‘quiet, -8’

로그 없음.


‘panic, 0’

assertion 실패와 같이 프로세스 충돌과 같은 치명적인 에러만 표시한다. 아직 용도가 있지는 않다.


‘fatal, 8’

치명적인 에러를 표시한다.  프로세스가 절대 진행될 수 없는 에러이다. 


‘error, 16’

복구할 수 있는 오류를 포함해서 모든 에러를 표시한다.


‘warning, 24’

모든 경고와 에러를 표시한다. 잘못되거나 예상치 못한 이벤트와 관련된 메세지를 표시합니다.


‘info, 32’

프로세스가 진행되는 과정에서 나오는 정보 메세지를 표시한다. 추가적으로 경고나 에러 메시지를 포함하고 디폴트레벨로 사용된다.


‘verbose, 40’

info보다 자세한 정보가 표시된다.


‘debug, 48’

모든 메세지를 표시한다. 


‘trace, 56’

기본적으로 프로그램은 stderr에 기록합니다. 착색(글자 색상)이 터미널에 의해 지원되는 경우, 색상은 오류 및 경고를 표시하는 데 사용됩니다. 환경 변수 AV_LOG_FORCE_NOCOLOR 또는 NO_COLOR를 설정하여 로그 채색을 비활성화하거나 환경 변수 AV_LOG_FORCE_COLOR를 강제 설정할 수 있습니다. NO_COLOR 환경 변수의 사용은 향후 제공되지 않을 예정이며 향후 FFmpeg 버전에서 삭제 될 예정입니다.


-report

전체 명령 행과 콘솔 출력을 현재 디렉토리의 program-YYYYMMDD-HHMMSS.log 파일에 덤프. 이 파일은 버그 리포트에 유용하게 사용된다. -loglevel verbose의 메세지를 덤프한다.


환경 변수 FFREPORT를 임의의 값으로 설정하면 동일한 효과가 있습니다. 값이 ':'로 분리 된 key = value 시퀀스이면이 옵션이 보고서에 영향을줍니다. 옵션 값이 특수 문자 또는 옵션 구분 기호 ':'를 포함하는 경우 나오게 된다. (ffmpeg-utils 매뉴얼의 "인용 및 이스케이프"절 참조).



다음 옵션은 인식이 된다. : 


file

파일 이름을 설정; '%p'는 프로그램 이름이 붙여지고, '%t'는 타임스템프, '%%' 는 %를 붙이고 싶을 때 사용한다.


level

숫자 값을 사용하여 로그 레벨을 지정할 수 있다. ( -loglevel 참고 )


예를 들면, 파일 이름을 ffreport.log 로 하고, 로그 레벨 32(info)로 한다면 :


FFREPORT=file=ffreport.log:level=32 ffmpeg -i input output

환경 변수를 구문 분석 할 때 발생하는 오류는 치명적이지는 않으며 보고서에 나타나지 않습니다.


-hide_banner

배너 숨기기


모든 FFmpeg tool은 copyright notice, 빌드 옵션, 라이브러리 버전을 보여준다. 이 옵션은 그런 정보를 표시하지 않게 한다.


-cpuflags flags (global)

cpu flag를 clearing하고 flag를 세팅합니다. 이 옵션은 테스트용입니다. 자신이 하는 일을 모르는 경우 사용하지 마십시오.


ffmpeg -cpuflags -sse+mmx ...
ffmpeg -cpuflags mmx ...
ffmpeg -cpuflags 0 ...


가능한 플래그는 다음과 같습니다. : 


‘x86’

‘mmx’

‘mmxext’

‘sse’

‘sse2’

‘sse2slow’

‘sse3’

‘sse3slow’

‘ssse3’

‘atom’

‘sse4.1’

‘sse4.2’

‘avx’

‘avx2’

‘xop’

‘fma3’

‘fma4’

‘3dnow’

‘3dnowext’

‘bmi1’

‘bmi2’

‘cmov’


‘ARM’

‘armv5te’

‘armv6’

‘armv6t2’

‘vfp’

‘vfpv3’

‘neon’

‘setend’


‘AArch64’

‘armv8’

‘vfp’

‘neon’


‘PowerPC’

‘altivec’


‘Specific Processors’

‘pentium2’

‘pentium3’

‘pentium4’

‘k6’

‘k62’

‘athlon’

‘athlonxp’

‘k8’



-opencl_bench

 이 옵션은 사용 가능한 모든 OpenCL장치를 벤치마크하고 결과를 보여주는데 사용된다. 이 옵션은 FFmpeg의 --enable-opencl 이 컴파일 되었을 경우에만 사용이 가능합니다.


 FFmpeg이 --enable-opencl 설정이 됬으면, OpenCL 컨텍스트에 대한 옵션설정은 -opencl_options에 대하여 설정이 가능합니다.  ffmpeg-utils 메뉴얼의 "OpenCL Options"를 보면 지원되는 옵션에 관한 설명을 볼 수 있습니다. 그 중에서도,  OpenCL 코드를 실행할 특정 플랫폼과 장치를 선택할 수 있는 기능이 있습니다. 기본적으로, FFmpeg은 첫 번째 플랫폼의 첫 번째 장비에서 실행됩니다. OpenCL 컨텍스트를 위한 옵션은 사용자가 선택한 OpenCL 장치를 선택할 때 유연성을 제공하지만  대부분의 사용자는 해당 시스템에 대해 가장 빠른 OpenCL 장치를 선택하려고 합니다.


 이 옵션은 사용자 시스템에 적합한 장치를 식별하여 가장 효율적인 구성을 선택할 수 있도록 도와줍니다. 내장된 벤치마크는 모든 OpenCL 장치에서 실행되며 성능은 각 장치에 대해 측정됩니다. 결과 목록의 장치는 가장 빠른 장치를 먼저 나열한 상태에서 성능에 따라 정렬됩니다. 사용자는 OpenCL 가속 코드에 대해 최상의 성능을 얻기 위해 -opencl_options를 통해 가장 적합한 것으로 간주되는 장치를 사용하여 ffmpeg를 호출할 수 있습니다.


가장 빠른 OpenCL 장치를 사용하는 일반적인 사용법은 다음 단계를 통하여 보여집니다.


다음 명령을 실행합니다. : 


ffmpeg -opencl_bench

목록에 있는 가장 빠른 기기의 플랫폼ID(pidx)와 장치ID(didx)를 기록해두었다가 다음명령을 사용하여 플랫폼 및 장치를 선택한다.


ffmpeg -opencl_options platform_idx=pidx:device_idx=didx ...


-opencl_options options (global)

OpenCL 환경 옵션을 설정합니다. 이 옵션은 FFmpeg이 -enable-opencl을 컴파일 했을 경우에 사용이 가능합니다.


옵션은 ':'으로 구분된 (key,value)옵션 쌍의 목록이어야 합니다. ffmpeg-utils 메뉴얼의 "OpenCL Options"를 보면 지원되는 옵션에 관한 설명을 볼 수 있습니다. 




 

 3.3 AVOptions



다음 옵션은 libavfomat, libavdevice, libavcodec 라이브러리에서 직접적으로 제공합니다. 사용 가능한 AVOption 목록을 보려면 -help 옵션을 사용하세요. 두가지 범주로 구분됩니다.


generic

이 옵션은 모든 컨테이너, 코덱 또는 장치에 대해 설정할 수 있습니다. 일반 옵션은 컨테이너/장치의 AVFormatContext 옵션과 코덱의 AVCodecContext 옵션 아래에 나열됩니다. 


private

이 옵션은 지정된 컨테이너, 장치 또는 코덱에만 적용됩니다. 개인 옵션은 해당 컨테이너/장치/코덱 아래에 나열됩니다.


예를 들어 기본 ID3v2.4 대신 ID2v2.3헤더를 MP# 파일에 쓰려면 MP# 멀티플렉서의 id3v2_version private 옵션을 사용합니다.


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

모든 Codec AVOptions는 스트림 단위이므로 스트림 지정자를 첨부해야 합니다.


참고 : boolean 옵션이 가능하지 않습니다. -option 0 / -option 1 을 사용하십시오.


참고 : v / a /s 를 옵션 앞에 붙여 스트림별 AVOptions를 지정하는 방법은 이제 폐기되었스며 곧 삭제 될 예정입니다.





 

 3.4 Main Options



-x width
 강제로 표시할 너비 지정

-y height
 강제로 표시할 높이 지정.

-s size
 원본 YUV와 같은 프레임 크기가 헤더에 포함되지 않은 비디오에 필요한 프레임 크기( 너비x높이[WxH] 또는 약어 )를 지정. 이 옵션은 private option을 위해서 사라질 옵션입니다. -video_size를 사용하세요. 

-fs
 전체화면 모드 시작. 

-an
 오디오 뮤트

-vn
 비디오 뮤트

-sn
 자막 제거

-ss pos
 위치(pos) 검색. 대부분의 형식에서 정확하게 탐색 할 수는 없기 때문에 ffplay는 가장 근사점을 위치(pos)로 검색합니다.

 위치(pos)는 시간 지속 시간 지정이어야 합니다. ffmpeg-utils(1) 매뉴얼의 "Time duration" 부분을 참조하세요. 

-t duration
 오디오/비디오의 재생 지속 시간(초)

 지속시간(duration)은 시간 지속 명세이어야합니다, ffmpeg-utils(1) 매뉴얼의 "Time duration" 부분을 참조하세요. 

-bytes
 바이트 단위 검색.

-nodisp
 그래픽 표시 비활성화

-f fmt
 포멧 변환

-window_title title
 창 이름( 디폴트는 프레임명) 지정

-loop number
 루프 동영상 재생. number번 재생하며, 0은 무한대를 의미합니다.

-showmode mode
 보기 모드 지정, mode로 가능한 값은 다음과 같습니다. :

‘0, video’
비디오

‘1, waves’
오디오

‘2, rdft’
RDFR( 역 실수 이산 퓨리에 변환 [(Inverse) Real Discrete Fourier Transform] )를 사용하여 오디오 주파수 대역을 보여줍니다.

기본값은 'video'이며, 만약 비디오가 없가나 재생할 수 없는 경우 'rdft'가 자동으로 선택됩니다.

w를 눌러서 대화식으로 사용가능한 쇼 모드를 순환할 수 있습니다.

-vf filtergraph
 filtergraph로 명시된 filtergraph를 만들어서 비디오 스트림 필터에 사용합니다.

 filtergraph는 스트림에서 적용할 filtergraph의 설명이며, 단일 입력 비디오에 단일 출력 비디오을 가져야 한다. 필터 그래프에서 입력은 라벨 in에 연결되고, 출력은  라벨 out에 연결된다. 필터그래프 구문에 대한 자세한 내용은 ffmpeg-filters 매뉴얼을 참조. 

 여러번 파라미터를 명시할수 있으며 키 w를 눌러 표시 모드와 함께 지정된 필터 그래프를 순환합니다.

-af filtergraph
 filtergraph는 입력 오디오에 적용할 설명입니다. 사용가능한 모든필터(소스 및 싱크 포함)를 표시하려면 "-filters" 옵션을 사용하십시오.

-i input_url
 input_url을 수신




 

 3.5 Advanced options



-pix_fmt format

픽셀 형식을 설정. 이 옵션은 private option을 위해서 사용되지 않습니다. -pixel_format을 사용하세요.


-stats

여러 재생 통계를 표시. 특히 스트림 지속 시간, 코덱 매개 변수, 스트림의 현재 위치 및 오디오 / 비디오 동기화 드리프트를 표시. 명시적으로 비활성화하려면 -nostats를 지정.


-fast

비-규격-준수 최적화


-genpts

pts 생성


-sync type

마스터 클럭을 오디오 (type = audio), 비디오 (type = video) 또는 external (type = ext)로 설정하십시오. 기본값은 오디오입니다. 마스터 클럭은 오디오 - 비디오 동기화를 제어하는 ​​데 사용됩니다. 대부분의 미디어 플레이어는 오디오를 마스터 클럭으로 사용하지만 일부 경우 (스트리밍 또는 고품질 방송)에는이를 변경해야합니다. 이 옵션은 주로 디버깅 목적으로 사용됩니다.


-ast audio_stream_specifier

지정된 스트림 지정자를 사용하여 원하는 오디오 스트림을 선택하십시오. 스트림 지정자는 스트림 지정자 장에서 설명합니다. 이 옵션을 지정하지 않으면 "best" 오디오 스트림이 이미 선택된 비디오 스트림의 프로그램에서 선택됩니다.


-vst video_stream_specifier

지정된 스트림 지정자를 사용하여 원하는 비디오 스트림을 선택하십시오. 스트림 지정자는 스트림 지정자 장에서 설명합니다. 이 옵션을 지정하지 않으면 "best" 비디오 스트림이 선택됩니다.


-sst subtitle_stream_specifier

지정된 스트림 지정자를 사용하여 원하는 자막 스트림을 선택하십시오. 스트림 지정자는 스트림 지정자 장에서 설명합니다. 이 옵션을 지정하지 않으면 이미 선택된 비디오 또는 오디오 스트림의 프로그램에서 "best" 자막 스트림이 선택됩니다.


-autoexit

비디오 재생이 끝나면 종료.


-exitonkeydown

아무 키나 누르면 종료.


-exitonmousedown

마우스 버튼을 누르면 종료.


-codec:media_specifier codec_name

a (audio), v (video), 및 s subtitle의 값을 취할 수있는 media_specifier에 의해 식별 된 스트림에 대해 특정 디코더 구현을 강제 실행.


-acodec codec_name

특정 오디오 디코더를 강제로 대입


-vcodec codec_name

특정 비디오 디코더를 강제로 대입


-scodec codec_name

자막 디코더를 강제로 대입


-autorotate

파일 메타 데이터에 따라 비디오를 자동으로 회전합니다. 회전을 원치 않는다면 -noautorotate(default)를 사용하십시오.


-framedrop

비디오의 싱크가 맞지 않으면 비디오 프레임을 버리십시오. 마스터 시계가 비디오로 설정되지 않은 경우 기본적으로 활성화됩니다. 이 옵션을 사용하여 모든 마스터 클럭 소스에 대해 프레임 삭제를 활성화하고 -noframedrop을 사용하여 비활성화합니다.


-infbuf

입력 버퍼 크기를 제한하지 말고 가능하면 입력에서 최대한 많은 데이터를 읽으십시오. 실시간 스트림에 대해 기본적으로 활성화되며 시간에 읽지 않으면 데이터가 삭제 될 수 있습니다. 이 옵션을 사용하여 모든 입력에 대해 무한 버퍼를 활성화하고 -noinfbuf를 사용하여 비활성화합니다.








 3.6 While playing



q, ESC

종료.


f

전체 화면.


p, SPC

정지.


m

뮤트.


9, 0

볼륨 감소/증가


/, *

볼륨 감소/증가


a

현재 프로그램에서 오디오 채널 순환


v

비디오 채널 순환


t

현재 프로그램에서 자막 채널 순환


c

프로그램 순환


w

비디오 필터 순환 또는 모드 보기


s

다음 프레임 진행


스트림이 아직 일시 중지되지 않은 경우 일시 중지하고 다음 비디오 프레임으로 이동 한 다음 일시 중지합니다.


left/right

10초 간격으로 이동


down/up

1분 간격으로 이동


page down/page up

이전/다음 챕처 이동. 챕터가 없는 경우 10분 단위로 이동


right mouse click

폭의 비율에 해당하는 파일의 비율로 구함.


left mouse double-click

전체화면 전환







반응형