액션캠을 구입하고 동영상 촬영하여 출력 결과물을 보니 .MOV 확장자 파일이였습니다.
프리미어에서 mov 파일 지원을 안해줘서 이것 저것 코덱도 깔고 QuickTime Player도 설치를 해서 import 는 가능해졌지만. 그래도 원활하게 편집 하기가 쉽지 않았습니다. 편집시 버벅 거리는 현상이 발생ㅎㅎ . 구입한 액션캠으로 영상 작업을 많이 하려고 하는데 좌절입니다. ㅜㅜ
그래서 이것저것 인코딩 프로그램을 찾아 보았습니다. “다음 인코더”로 인코딩 후 프리미어에 올려서 테스트를 해 봐도 그렇게 원활하게 편집이 안되고, “곰인코더”는 워터마크가 찍히는 단점 때문에 설치도 안하고 패스 ~~. 여러 자료들은 많은데 확실하고 심플한 것이 없을까 고민 중 선택한 것입니다.
어떤 프로그램을 사용하여 인코딩 하는것이 적합할까요 ?
이번에 소개하는 방법은 커맨드 창에서 작업하는것입니다. 아주 유명한 FFMPEG을 사용 해서 인코딩 할 것입니다.
설치형, 서비스형, 유료, 무료 등등 인코딩 할수 있는 방법이 많습니다. 그리고 무수히 많은 동영상 속성들이 초심자들을 힘들게 합니다.
많은 코덱 프로그램과 파일 형식 등등 설정을 간결하게 인코딩 할 수 있는 아주 가볍고 심플한 방법이 아닌가 합니다. – 어느 순간 마우스 위주의 UI보다 검은창에서 작업하는 것이 더 편할 때가 있습니다.
ffmpeg는 유명한 오픈 프로그램으로 다양한 기능들이 있습니다. 많은 옵션들을 사용해서 영상 및 오디어 인코딩, 사전 보기 및 모아보기 이미지 추출 등 다양한 기능은 모두 차후 포스팅 하는것으로 하겠습니다.
누구나 이번 글을 보고 무작정 따라하기 만으로 인코딩에 성공하는 것이 목적입니다. — 개선 사항이나 의문이 있으면 덧글 남겨주세요 .
아래 링크로 접속하셔서 윈도우 OS 이미지를 클릭을 합니다 . 그러면 다운로드 받을 수 있는 페이지로 이동 합니다.
http://ffmpeg.org/download.html#build-windows
OS 버전은 선택을 하고 OS 비트까지 선택을 하고 “Download Build”라고 하는 버튼을 클릭하여 다운 받습니다.
다운로드한 파일 압축 풀면 bin, doc, presets 등의 폴더와 기타 라이센스 하고 설명서가 있는 파일이 있습니다
폴더를 FFMPEG으로 변환 하고 난 다음에 C폴더에 복사를 합니다. – 선택사항 (사용자 식별 가능한 특정 폴더로 이동 )
실행창에서 sysdm.cpl 엔터를 치면 시스템 속성 설정 창이 나오고 설정창 탭에서 고급 탭을 클릭 하고 밑에 있는 환경변수를 클릭합니다.
“시스템 환경변수” 에서 “PATH”를 더블클릭 합니다.
“환경변수 편집”에서 1.”새로 만들기’ 버튼을 클릭 2. FFMEG폴더 디렉토리 입력 3. “확인” 버튼을 클릭 합니다
cmd 창에서 ffmpeg -version 을 타이핑하고 엔터하면 다음과 같이 버전 정보를 볼수 있으면 정상 설치 된것입니다.
C:\Users\dev>ffmpeg -version
1 2 3 4 5 6 7 8 9 10 11 12 |
C:\Users\dev>ffmpeg -version ffmpeg version git-2020-03-27-e34157f Copyright (c) 2000-2020 the FFmpeg developers built with gcc 9.2.1 (GCC) 20200122 configuration: --enable-gpl --enable-version3 --enable-sdl2 --enable-fontconfig --enable-gnutls --enable-iconv --enable-libass --enable-libdav1d --enable-libbluray --enable-libfreetype --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libsrt --enable-libtheora --enable-libtwolame --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libzimg --enable-lzma --enable-zlib --enable-gmp --enable-libvidstab --enable-libvorbis --enable-libvo-amrwbenc --enable-libmysofa --enable-libspeex --enable-libxvid --enable-libaom --enable-libmfx --enable-ffnvcodec --enable-cuda-llvm --enable-cuvid --enable-d3d11va --enable-nvenc --enable-nvdec --enable-dxva2 --enable-avisynth --enable-libopenmpt --enable-amf libavutil 56. 42.101 / 56. 42.101 libavcodec 58. 76.100 / 58. 76.100 libavformat 58. 42.100 / 58. 42.100 libavdevice 58. 9.103 / 58. 9.103 libavfilter 7. 77.100 / 7. 77.100 libswscale 5. 6.101 / 5. 6.101 libswresample 3. 6.100 / 3. 6.100 libpostproc 55. 6.100 / 55. 6.100 |
간편 인코딩 예
인코딩 예를 보여 드리도록 하겠습니다. 본 라이브러리는 상당히 많은 옵션이 있습니다만 전부 다 생략합니다. 저의 목적은 프리미어에서 편집 원활한 파일로 인코딩 하는 것이기 때문에 기타 설정 없이 ” -i” 옵션만 사용해서 인코딩을 합니다.
>ffmpeg -i FILE0001.MOV encodingTestFILE0001.mp4
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 |
ffmpeg version git-2020-03-27-e34157f Copyright (c) 2000-2020 the FFmpeg developers built with gcc 9.2.1 (GCC) 20200122 configuration: --enable-gpl --enable-version3 --enable-sdl2 --enable-fontconfig --enable-gnutls --enable-iconv --enable-libass --enable-libdav1d --enable-libbluray --enable-libfreetype --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libsrt --enable-libtheora --enable-libtwolame --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libzimg --enable-lzma --enable-zlib --enable-gmp --enable-libvidstab --enable-libvorbis --enable-libvo-amrwbenc --enable-libmysofa --enable-libspeex --enable-libxvid --enable-libaom --enable-libmfx --enable-ffnvcodec --enable-cuda-llvm --enable-cuvid --enable-d3d11va --enable-nvenc --enable-nvdec --enable-dxva2 --enable-avisynth --enable-libopenmpt --enable-amf libavutil 56. 42.101 / 56. 42.101 libavcodec 58. 76.100 / 58. 76.100 libavformat 58. 42.100 / 58. 42.100 libavdevice 58. 9.103 / 58. 9.103 libavfilter 7. 77.100 / 7. 77.100 libswscale 5. 6.101 / 5. 6.101 libswresample 3. 6.100 / 3. 6.100 libpostproc 55. 6.100 / 55. 6.100 Guessed Channel Layout for Input Stream #0.1 : stereo Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'FILE0001.MOV': Metadata: major_brand : qt minor_version : 512 compatible_brands: qt creation_time : 2003-07-11T14:08:33.000000Z Duration: 00:05:00.10, start: 0.000000, bitrate: 8123 kb/s Stream #0:0(eng): Video: h264 (Constrained Baseline) (avc1 / 0x31637661), yuv420p(tv), 1920x1080, 7991 kb/s, 29.97 fps, 29.97 tbr, 29970 tbn, 60 tbc (default) Metadata: creation_time : 2003-07-11T14:08:33.000000Z Stream #0:1(eng): Audio: adpcm_ima_wav (ms[0][17] / 0x1100736D), 16000 Hz, stereo, s16p, 128 kb/s (default) Metadata: creation_time : 2003-07-11T14:08:33.000000Z handler_name : Sound Media Handler Stream mapping: Stream #0:0 -> #0:0 (h264 (native) -> h264 (libx264)) Stream #0:1 -> #0:1 (adpcm_ima_wav (native) -> aac (native)) Press [q] to stop, [?] for help [libx264 @ 0000018fd80109c0] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX FMA3 BMI2 AVX2 [libx264 @ 0000018fd80109c0] profile High, level 4.0, 4:2:0, 8-bit [libx264 @ 0000018fd80109c0] 264 - core 159 - H.264/MPEG-4 AVC codec - Copyleft 2003-2019 - http://www.videolan.org/x264.html - options: cabac=1 ref=3 deblock=1:0:0 analyse=0x3:0x113 me=hex subme=7 psy=1 psy_rd=1.00:0.00 mixed_ref=1 me_range=16 chroma_me=1 trellis=1 8x8dct=1 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=-2 threads=18 lookahead_threads=3 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=3 b_pyramid=2 b_adapt=1 b_bias=0 direct=1 weightb=1 open_gop=0 weightp=2 keyint=250 keyint_min=25 scenecut=40 intra_refresh=0 rc_lookahead=40 rc=crf mbtree=1 crf=23.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=1:1.00 Output #0, mp4, to 'encodingTestFILE0001.mp4': Metadata: major_brand : qt minor_version : 512 compatible_brands: qt encoder : Lavf58.42.100 Stream #0:0(eng): Video: h264 (libx264) (avc1 / 0x31637661), yuv420p, 1920x1080, q=-1--1, 29.97 fps, 11988 tbn, 29.97 tbc (default) Metadata: creation_time : 2003-07-11T14:08:33.000000Z encoder : Lavc58.76.100 libx264 Side data: cpb: bitrate max/min/avg: 0/0/0 buffer size: 0 vbv_delay: N/A Stream #0:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 16000 Hz, stereo, fltp, 128 kb/s (default) Metadata: creation_time : 2003-07-11T14:08:33.000000Z handler_name : Sound Media Handler encoder : Lavc58.76.100 aac frame= 8994 fps= 40 q=-1.0 Lsize= 280022kB time=00:05:00.09 bitrate=7644.0kbits/s speed=1.34x video:276776kB audio:3102kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.051461% [libx264 @ 0000018fd80109c0] frame I:53 Avg QP:21.47 size: 94702 [libx264 @ 0000018fd80109c0] frame P:5291 Avg QP:25.16 size: 38895 [libx264 @ 0000018fd80109c0] frame B:3650 Avg QP:27.60 size: 19891 [libx264 @ 0000018fd80109c0] consecutive B-frames: 42.8% 5.1% 12.9% 39.3% [libx264 @ 0000018fd80109c0] mb I I16..4: 12.5% 64.1% 23.4% [libx264 @ 0000018fd80109c0] mb P I16..4: 2.9% 10.4% 3.7% P16..4: 52.2% 7.4% 2.8% 0.0% 0.0% skip:20.6% [libx264 @ 0000018fd80109c0] mb B I16..4: 0.9% 2.0% 1.4% B16..8: 49.8% 5.0% 0.7% direct: 2.9% skip:37.4% L0:60.7% L1:35.0% BI: 4.3% [libx264 @ 0000018fd80109c0] 8x8 transform intra:59.2% inter:62.9% [libx264 @ 0000018fd80109c0] coded y,uvDC,uvAC intra: 53.0% 55.2% 14.6% inter: 16.9% 19.9% 0.6% [libx264 @ 0000018fd80109c0] i16 v,h,dc,p: 30% 30% 8% 31% [libx264 @ 0000018fd80109c0] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 29% 24% 19% 3% 4% 5% 6% 4% 6% [libx264 @ 0000018fd80109c0] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 28% 22% 14% 4% 7% 8% 7% 5% 5% [libx264 @ 0000018fd80109c0] i8c dc,h,v,p: 50% 25% 20% 5% [libx264 @ 0000018fd80109c0] Weighted P-Frames: Y:1.2% UV:0.5% [libx264 @ 0000018fd80109c0] ref P L0: 80.2% 10.9% 6.5% 2.3% 0.0% [libx264 @ 0000018fd80109c0] ref B L0: 95.0% 4.0% 1.0% [libx264 @ 0000018fd80109c0] ref B L1: 98.3% 1.7% [libx264 @ 0000018fd80109c0] kb/s:7555.28 [aac @ 0000018fd7dfe980] Qavg: 65474.613 |
시간이 흐른 후에 디렉토리를 보면 인코딩된 파일이 생성이 되는 것을 확인할 수 있습니다
인코딩 확인
구체적으로 두 파일 속성을 비교한 화면입니다.
<인코딩 전 속성 > |
<인코딩 후 속성> |
참고 옵션들 …
라이브러리를 사용하여 원하는 파일로 상세하게 인코딩 속성을 조절 하기 위해서는 각각의 라이브러리에서 제공하는 옵션 값을 변경 하면 됩니다.
미디어 서버 솔루션으로 패키지화 하는 계획도 있습니다. 인코딩 프로그램을 ffmpeg 로 만들고 스트리밍 서버와 연동을 합니다. 그리고 사용자 및 관리자 서비스 페이지를 만들고 배포 패키치를 만들던 서비스 계정 할당하던 다양하게 구축할 수 있게 만드는 것을 구상하고 있습니다.
참고로 라이브러리에서 제공하는 많은 옵션들은 아래와 같습니다. 차후 사용법은 포스팅할 예정 입니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 |
C:\Users\dev>ffmpeg -help ffmpeg version git-2020-03-27-e34157f Copyright (c) 2000-2020 the FFmpeg developers built with gcc 9.2.1 (GCC) 20200122 configuration: --enable-gpl --enable-version3 --enable-sdl2 --enable-fontconfig --enable-gnutls --enable-iconv --enable-libass --enable-libdav1d --enable-libbluray --enable-libfreetype --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libsrt --enable-libtheora --enable-libtwolame --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libzimg --enable-lzma --enable-zlib --enable-gmp --enable-libvidstab --enable-libvorbis --enable-libvo-amrwbenc --enable-libmysofa --enable-libspeex --enable-libxvid --enable-libaom --enable-libmfx --enable-ffnvcodec --enable-cuda-llvm --enable-cuvid --enable-d3d11va --enable-nvenc --enable-nvdec --enable-dxva2 --enable-avisynth --enable-libopenmpt --enable-amf libavutil 56. 42.101 / 56. 42.101 libavcodec 58. 76.100 / 58. 76.100 libavformat 58. 42.100 / 58. 42.100 libavdevice 58. 9.103 / 58. 9.103 libavfilter 7. 77.100 / 7. 77.100 libswscale 5. 6.101 / 5. 6.101 libswresample 3. 6.100 / 3. 6.100 libpostproc 55. 6.100 / 55. 6.100 Hyper fast Audio and Video encoder usage: ffmpeg [options] [[infile options] -i infile]... {[outfile options] outfile}... Getting help: -h -- print basic options -h long -- print more options -h full -- print all options (including all format and codec specific options, very long) -h type=name -- print all options for the named decoder/encoder/demuxer/muxer/filter/bsf/protocol See man ffmpeg for detailed description of the options. Print help / information / capabilities: -L show license -h topic show help -? topic show help -help topic show help --help topic show help -version show version -buildconf show build configuration -formats show available formats -muxers show available muxers -demuxers show available demuxers -devices show available devices -codecs show available codecs -decoders show available decoders -encoders show available encoders -bsfs show available bit stream filters -protocols show available protocols -filters show available filters -pix_fmts show available pixel formats -layouts show standard channel layouts -sample_fmts show available audio sample formats -colors show available color names -sources device list sources of the input device -sinks device list sinks of the output device -hwaccels show available HW acceleration methods Global options (affect whole program instead of just one file): -loglevel loglevel set logging level -v loglevel set logging level -report generate a report -max_alloc bytes set maximum size of a single allocated block -y overwrite output files -n never overwrite output files -ignore_unknown Ignore unknown stream types -filter_threads number of non-complex filter threads -filter_complex_threads number of threads for -filter_complex -stats print progress report during encoding -max_error_rate maximum error rate ratio of errors (0.0: no errors, 1.0: 100% errors) above which ffmpeg returns an error instead of success. -bits_per_raw_sample number set the number of bits per raw sample -vol volume change audio volume (256=normal) Per-file main options: -f fmt force format -c codec codec name -codec codec codec name -pre preset preset name -map_metadata outfile[,metadata]:infile[,metadata] set metadata information of outfile from infile -t duration record or transcode "duration" seconds of audio/video -to time_stop record or transcode stop time -fs limit_size set the limit file size in bytes -ss time_off set the start time offset -sseof time_off set the start time offset relative to EOF -seek_timestamp enable/disable seeking by timestamp with -ss -timestamp time set the recording timestamp ('now' to set the current time) -metadata string=string add metadata -program title=string:st=number... add program with specified streams -target type specify target file type ("vcd", "svcd", "dvd", "dv" or "dv50" with optional prefixes "pal-", "ntsc-" or "film-") -apad audio pad -frames number set the number of frames to output -filter filter_graph set stream filtergraph -filter_script filename read stream filtergraph description from a file -reinit_filter reinit filtergraph on input parameter changes -discard discard -disposition disposition Video options: -vframes number set the number of video frames to output -r rate set frame rate (Hz value, fraction or abbreviation) -s size set frame size (WxH or abbreviation) -aspect aspect set aspect ratio (4:3, 16:9 or 1.3333, 1.7777) -bits_per_raw_sample number set the number of bits per raw sample -vn disable video -vcodec codec force video codec ('copy' to copy stream) -timecode hh:mm:ss[:;.]ff set initial TimeCode value. -pass n select the pass number (1 to 3) -vf filter_graph set video filters -ab bitrate audio bitrate (please use -b:a) -b bitrate video bitrate (please use -b:v) -dn disable data Audio options: -aframes number set the number of audio frames to output |
찾고 있던 정보인데 감사합니다~~