참고 영상 |
1 = kb + kr + kg kr = 0.299 kg = 0.587 kb = 0.114 Y = krR + (1 - kb - kr)G + kbB Cb = 0.5(B - Y)/(1 - kb) Cr = 0.5(R - Y)/(1 - kr) R = Y + (1 - kr)Cr/0.5 G = Y - 2kb(1 - kb)Cb/(1 - kb - kr) - 2kr(1 - kr)Cr/(1 - kb - kr) B = Y + (1 - kb)Cb/0.5 => YCbCr <-> RGB 간의 kb,kr,kg 비율상수 적용후 정리된 공식 (여기서 비율 상수가 디스플레이의 특성에 따라서 조정될 수 있습니다.) Y = 0.299R + 0.587G + 0.114B Cb = 0.564(B - Y) Cr = 0.713(R - Y) R = Y + 1.402Cr G = Y - 0.344Cb - 0.714Cr B = Y + 1.772Cb
$ sudo apt-get install ffmpeg
$ ffmpeg --help => 좀더 자세한 기본 옵션을 보려면 $ ffmpeg --help full
$ ffmpeg -version
$ ffmpeg -buildconf
$ ffmpeg [<기타옵션>] [<입력 옵션>] [<코덱 옵션>] [<출력 옵션>]
$ ffmpeg [<기타옵션>] [[<입력 옵션>] -i <입력소스 또는 입력파일>]... {[<출력 파일> <출력 관련 옵션들>] <출력 파일>}...
$ ffprobe <미디어 파일명>
$ ffplay <미디어 파일명>
$ ffmpeg -formats
$ ffmpeg -muxers
$ ffmpeg -h muxer=<muxer> 예) ffmpeg -h muxer=mp4
$ ffmpeg -demuxers
$ ffmpeg -h demuxer=<demuxer> 예) ffmpeg -h demuxer=mp4
$ ffmpeg -devices
$ ffmpeg -codecs
$ ffmpeg -decoders
$ ffmpeg -h decoder=<decoder> 예) ffmpeg -h decoder=h264
$ ffmpeg -encoders
$ ffmpeg -h encoder=<encoder> 예) ffmpeg -h encoder=h264 예) ffmpeg -h encoder=libx264 예) ffmpeg -h encoder=h264_nvenc 예) ffmpeg -h encoder=h264_omx 예) ffmpeg -h encoder=h264_v4l2m2m
$ ffmpeg -bsfs
$ ffmpeg -h bsf=<bit stream filter> 예) ffmpeg -h bsf=h264_metadata
$ ffmpeg -protocols
$ ffmpeg -h protocol=<protocol> 예) ffmpeg -h protocol=bluray
$ ffmpeg -filters
$ ffmpeg -h filter=<filter> 예) ffmpeg -h filter=chromakey
$ ffmpeg -pix_fmts
$ ffmpeg -layouts
$ ffmpeg -sample_fmts
$ ffmpeg -colors
$ ffmpeg -sources <device>
$ ffmpeg -sinks <device>
$ ffmpeg -hwaccels
=> NVENC, nVidia의 H/W Encoder 가속을 사용하여 변환 (제품에 따라서 주어질 수 있는 지원 옵션들이 다를 수 있음) $ ffmpeg -stats -hwaccel auto -i "<변환하고자 하는 입력 파일>" -threads "0" -vsync "vfr" -c:v "h264_nvenc" -preset p7 -tune hq -rc:v vbr -rc-lookahead 8 -cq:v 26 -b:v 0 -bufsize:v 240M -maxrate:v 128M -profile:v high -level:v auto -pix_fmt yuv420p -c:a "aac" -ab "192k" -ac "2" -c:s "mov_text" -f "mp4" -max_muxing_queue_size 1024 "<변환하여 저장할 파일명>.mp4" => libx264 S/W Encoder 를 사용하여 변환 (고화질 변환, 참고로 영상 퀄리티는 꽤 유지하지만 굉장히 느림) $ ffmpeg -stats -hwaccel auto -i "<변환하고자 하는 입력 파일>" -threads "0" -vsync "vfr" -c:v "libx264" -preset veryslow -rc-lookahead 8 -crf:v 26 -b:v 0 -bufsize:v 240M -maxrate:v 128M -profile:v high -pix_fmt yuv420p -c:a "aac" -ab "192k" -ac "2" -c:s "copy" -f "mp4" -max_muxing_queue_size 1024 -map 0 "<변환하여 저장할 파일명>.mp4" => h264 S/W Encoder 를 사용하여 변환 $ ffmpeg -stats -hwaccel auto -i "<변환하고자 하는 입력 파일>" -threads "0" -vsync "vfr" -c:v "h264" -preset veryslow -b:v 0 -profile:v high -pix_fmt yuv420p -c:a "aac" -ab "192k" -ac "2" -c:s "copy" -f "mp4" -max_muxing_queue_size 1024 -map 0 "<변환하여 저장할 파일명>.mp4"
$ ffmpeg -stats -hwaccel auto -i "<변환하고자 하는 입력 파일>" -threads "0" -vsync "vfr" -c:v "copy" -c:a "copy" -c:s "mov_text" -f "mp4" -max_muxing_queue_size 1024 -map 0 "<변환하여 저장할 파일명>.mp4"
$ ffmpeg -hide_banner -stats -hwaccel auto -i "<입력 동영상 파일>" -i "<입력 자막 파일(srt 형식)>" -threads "0" -c:v "copy" -c:a "copy" -map_metadata -1 -map 0:v:0 -map 0:a:1 -map 1 -c:s:0 mov_text -metadata:s:s:0 "title=자막이름" -metadata:s:s:0 "language=kor" -f "mp4" -max_muxing_queue_size 1024 "<변환하여 저장할 파일명>.mp4"