<p style="margin-bottom: 15px; color: #666666; font-family: arial, helvetica, sans-serif; background-color: #ffffff;">FFmpeg은 디지털 음성 스트림과 영상 스트림에 대해서 다양한 종류의 형태로 기록하고 변환하는 컴퓨터 프로그램입니다.</p>
<p style="margin-bottom: 15px; color: #666666; font-family: arial, helvetica, sans-serif; background-color: #ffffff;">동영상 변환, 분할, 합치기, 썸네일 생성 등에 대해 살펴보겠습니다.</p>
<p style="margin-bottom: 15px; color: #666666; font-family: arial, helvetica, sans-serif; background-color: #ffffff;">&nbsp;</p>
<p style="margin-bottom: 15px; color: #666666; font-family: arial, helvetica, sans-serif; background-color: #ffffff;"><strong><span style="font-size: 24px;">1. 동영상 인코딩</span></strong></p>
<p style="margin-bottom: 15px; color: #666666; font-family: arial, helvetica, sans-serif; background-color: #ffffff;">FFMPEG 을 이용하여 동영상을 변환할 수 있다.</p>
<p style="margin-bottom: 15px; color: #666666; font-family: arial, helvetica, sans-serif; background-color: #ffffff;">&nbsp;</p>
<table width="621" style="margin-bottom: 15px; max-width: 100%; overflow: hidden; color: #666666; font-family: arial, helvetica, sans-serif; height: 88px; border-color: #000000; background-color: #ffe3e3;">
   <tbody>
      <tr style="background: rgb(245, 245, 245);">
         <td style="border-style: solid; border-color: #ffffff; padding: 10px;"><span style="font-size: 16px;">ffmpeg -y ⓐ -i ⓑ -acodec ⓒ -ab ⓓ -ar ⓔ -ac ⓕ -b:a ⓖ -vcodec ⓗ -level ⓘ -b:v ⓙ</span><br /><span style="font-size: 16px;">-r ⓚ -s ⓛ -threads ⓜ -strict experimental ⓝ ⓞ</span></td>
         </tr>
      </tbody>
   </table>
<p style="margin-bottom: 15px; color: #666666; font-family: arial, helvetica, sans-serif; background-color: #ffffff;">ⓐ -y : 출력파일을 쓸 때 같은 이름의 파일이 있어도 확인없이 덮어쓰기를 하겠다는 의미.<br />ⓑ -i &lt;입력파일이름&gt; : 변환할 원본 동영상 파일 이름을 지정합니다.</p>
<p style="margin-bottom: 15px; color: #666666; font-family: arial, helvetica, sans-serif; background-color: #ffffff;">ⓒ -acodec &lt;오디오코덱&gt; : 오디오 코덱을 지정한다. 여기서는 aac 로 함.<br />ⓓ -ab &lt;숫자&gt; : 오디오 비트레이트를 지정한다.<br />ⓔ -ar &lt;숫자&gt; : 오디오 샘플링 레이트를 지정한다.<br />ⓕ -ac &lt;숫자&gt; : 오디오 채널을 지정한다.<br />ⓖ -b:a &lt;숫자&gt; : 오디오 비트레이트를 지정한다.<br />ⓗ -vcodec &lt;비디오코덱&gt; : 비디오 코덱을 지정한다. 여기서는 libx264 로 함. (H.264 코덱)<br />ⓘ -level &lt;숫자&gt; : Baseline 값. 30이면, Baseline 3.0<br />ⓙ -b:v &lt;숫자&gt; : 비디오 비트레이트를 지정한다.<br />ⓚ -r &lt;숫자&gt; : 출력 동영상 프레임 레이트를 지정한다.<br />ⓛ -s &lt;숫자&gt; : 화면 크기, 해상도를 지정한다. 원본 해상도보다 크게 할 경우 확대되서 나온다.<br />프리셋처럼 미리 지정된 문자가 있어서 직접 해상도를 지정하지 않아도 된다.<br />ex) vga – 640 x 480, sxga 1280 x 1024, wvga 852 x 480, hd720 – 1280 x 720 등<br />ⓜ -threads &lt;숫자&gt; : 쓰레드수를 지정한다. 속도 향상을 위해 멀티쓰레드를 지정해줄 수 있다.<br />반드시 CPU 코어 갯수와 일치시킬 필요는 없지만, 보통은 코어 갯수에<br />맞춘다.<br />ⓝ -strict experimental : 옵션의 엄격함을 느슨하게 풀어주는 옵션<br />ⓞ &lt;출력파일이름&gt; : 변환하여 저장할 동영상 파일 이름을 지정한다.</p>
<p style="margin-bottom: 15px; color: #666666; font-family: arial, helvetica, sans-serif; background-color: #ffffff;">동영상 변환 옵션 예)</p>
<table width="621" style="margin-bottom: 15px; max-width: 100%; overflow: hidden; color: #666666; font-family: arial, helvetica, sans-serif; height: 88px; border-color: #000000; background-color: #ffe3e3;">
   <tbody>
      <tr style="background: rgb(245, 245, 245);">
         <td style="border-style: solid; border-color: #ffffff; padding: 10px;"><span style="font-size: 16px;"><br />ffmpeg -y -i 변환전동영상파일명.avi -acodec aac -ab 192k -ar&nbsp;48000&nbsp;-ac 2 -b:a 300k&nbsp;&nbsp;-vcodec libx264 -level 30 -b:v 3000k&nbsp;-r 29.97&nbsp;-s 1280:720&nbsp;-threads 4&nbsp;-strict -2 변환후동영상파일명.mp4<br /></span></td>
         </tr>
      </tbody>
   </table>
<p style="margin-bottom: 15px; color: #666666; font-family: arial, helvetica, sans-serif; background-color: #ffffff;">&nbsp;</p>
<p style="margin-bottom: 15px; color: #666666; font-family: arial, helvetica, sans-serif; background-color: #ffffff;"><strong><span style="font-size: 24px;"><br />2. 동영상 분할</span></strong></p>
<p style="margin-bottom: 15px; color: #666666; font-family: arial, helvetica, sans-serif; background-color: #ffffff;">동영상은 FFMpeg 을 이용하여 분할할 수 있다.</p>
<p style="margin-bottom: 15px; color: #666666; font-family: arial, helvetica, sans-serif; background-color: #ffffff;">– 지정된 시간 사이의 동영상 분할 명령 및 설명</p>
<table width="621" style="margin-bottom: 15px; max-width: 100%; overflow: hidden; color: #666666; font-family: arial, helvetica, sans-serif; height: 88px; border-color: #000000; background-color: #ffe3e3;">
   <tbody>
      <tr style="background: rgb(245, 245, 245);">
         <td style="border-style: solid; border-color: #ffffff; padding: 10px;"><span style="font-size: 16px;">ffmpeg -i ⓐ -ss ⓑ -t ⓒ -vcodec copy ⓓ -acodec copy ⓔ ⓕ</span></td>
         </tr>
      </tbody>
   </table>
<p style="margin-bottom: 15px; color: #666666; font-family: arial, helvetica, sans-serif; background-color: #ffffff;">ⓐ -i &lt;분할파일이름&gt; : 분할할 동영상 파일 이름을 지정합니다.<br />ⓑ -ss &lt;숫자&gt; : 분할 시작할 시간 값. 초 단위로 적어주거나, HH:MM:SS 로 지정할 수 있다.<br />ⓒ -t &lt;숫자&gt; : 분할 완료할 시간 값. 초 단위로 적어주거나, HH:MM:SS 로 지정할 수 있다.<br />ex) 30으로 적어주면 분할을 시작한 시간으로 부터 30초간만 분할된다.<br />ⓓ -vcodec copy : 비디오 코덱은 원본 동영상과 같게 한다.<br />ⓔ -acodec copy : 오디오 코덱은 원본 동영상과 같게 한다.<br />ⓕ &lt;출력파일이름&gt; : 분할하여 저장할 동영상 파일 이름을 지정한다.<br />– 지정시간부터 동영상 분할 명령 및 설명<br />ffmpeg -i ⓐ -ss ⓑ -vcodec copy ⓒ -acodec copy ⓓ ⓔ<br />ⓐ -i &lt;분할파일이름&gt; : 분할할 동영상 파일 이름을 지정합니다.<br />ⓑ -ss &lt;숫자&gt; : 분할 시작할 시간 값. 초 단위로 적어주거나, HH:MM:SS 로 지정할 수 있다.<br />-t 옵션값이 없으므로 시작으로부터 끝까지 분할한다.<br />ⓒ -vcodec copy : 비디오 코덱은 원본 동영상과 같게 한다.<br />ⓓ -acodec copy : 오디오 코덱은 원본 동영상과 같게 한다.<br />ⓔ &lt;출력파일이름&gt; : 분할하여 저장할 동영상 파일 이름을 지정한다.</p>
<p style="margin-bottom: 15px; color: #666666; font-family: arial, helvetica, sans-serif; background-color: #ffffff;">– 지정된 시간 사이의 동영상 분할 명령 및 설명</p>
<table width="621" style="margin-bottom: 15px; max-width: 100%; overflow: hidden; color: #666666; font-family: arial, helvetica, sans-serif; height: 88px; border-color: #000000; background-color: #ffe3e3;">
   <tbody>
      <tr style="background: rgb(245, 245, 245);">
         <td style="border-style: solid; border-color: #ffffff; padding: 10px;"><span style="font-size: 16px;">ffmpeg -i ⓐ -t ⓑ -vcodec copy ⓒ -acodec copy ⓓ ⓔ</span></td>
         </tr>
      </tbody>
   </table>
<p style="margin-bottom: 15px; color: #666666; font-family: arial, helvetica, sans-serif; background-color: #ffffff;">ⓐ -i &lt;분할파일이름&gt; : 분할할 동영상 파일 이름을 지정합니다.<br />ⓑ -t &lt;숫자&gt; : 분할 마칠 시간 값. 초 단위로 적어주거나, HH:MM:SS 로 지정할 수 있다.<br />-ss 옵션값이 없으므로 시작으로부터 지정한 시간까지 분할한다.<br />ⓒ -vcodec copy : 비디오 코덱은 원본 동영상과 같게 한다.<br />ⓓ -acodec copy : 오디오 코덱은 원본 동영상과 같게 한다.<br />ⓔ &lt;출력파일이름&gt; : 분할하여 저장할 동영상 파일 이름을 지정한다.</p>
<p style="margin-bottom: 15px; color: #666666; font-family: arial, helvetica, sans-serif; background-color: #ffffff;">&nbsp;</p>
<p style="margin-bottom: 15px; color: #666666; font-family: arial, helvetica, sans-serif; background-color: #ffffff;"><span style="font-size: 24px;"><strong><br />3. 동영상 합치기</strong></span></p>
<p style="margin-bottom: 15px; color: #666666; font-family: arial, helvetica, sans-serif; background-color: #ffffff;">분할된 동영상을 합칠때 사용한다.</p>
<table width="621" style="margin-bottom: 15px; max-width: 100%; overflow: hidden; color: #666666; font-family: arial, helvetica, sans-serif; height: 88px; border-color: #000000; background-color: #ffe3e3;">
   <tbody>
      <tr style="background: rgb(245, 245, 245);">
         <td style="border-style: solid; border-color: #ffffff; padding: 10px;"><span style="font-size: 16px;"><br />file ‘abcdefg.mp4’<br />file ‘smile.mp4’<br /></span></td>
         </tr>
      </tbody>
   </table>
<p style="margin-bottom: 15px; color: #666666; font-family: arial, helvetica, sans-serif; background-color: #ffffff;">먼저 합칠 동영상 파일을 텍스트 파일로 열거해준다.</p>
<p style="margin-bottom: 15px; color: #666666; font-family: arial, helvetica, sans-serif; background-color: #ffffff;">file ‘동영상파일명1’<br />file ‘동영상파일명2’</p>
<p style="margin-bottom: 15px; color: #666666; font-family: arial, helvetica, sans-serif; background-color: #ffffff;">&nbsp;</p>
<table width="621" style="margin-bottom: 15px; max-width: 100%; overflow: hidden; color: #666666; font-family: arial, helvetica, sans-serif; height: 88px; border-color: #000000; background-color: #ffe3e3;">
   <tbody>
      <tr style="background: rgb(245, 245, 245);">
         <td style="border-style: solid; border-color: #ffffff; padding: 10px;"><span style="font-size: 16px;">ffmpeg -f concat -i “ⓐ” -c copy ⓑ&nbsp;</span></td>
         </tr>
      </tbody>
   </table>
<p style="margin-bottom: 15px; color: #666666; font-family: arial, helvetica, sans-serif; background-color: #ffffff;">ⓐ -i &lt;텍스트파일명&gt; : 합칠 동영상 목록이 적혀 있는 텍스트 파일명<br />ⓑ &nbsp;&lt;출력파일이름&gt; : 합쳐서 저장할 동영상 파일 이름을 지정한다.</p>
<p style="margin-bottom: 15px; color: #666666; font-family: arial, helvetica, sans-serif; background-color: #ffffff;">&nbsp;</p>
<p style="margin-bottom: 15px; color: #666666; font-family: arial, helvetica, sans-serif; background-color: #ffffff;">&nbsp;</p>
<p style="margin-bottom: 15px; color: #666666; font-family: arial, helvetica, sans-serif; background-color: #ffffff;"><strong><span style="font-size: 24px;">4. 썸네일 이미지 추출</span></strong></p>
<p style="margin-bottom: 15px; color: #666666; font-family: arial, helvetica, sans-serif; background-color: #ffffff;">동영상 썸네일 이미지는 FFMpeg 을 이용하여 만들 수 있다.</p>
<table width="621" style="margin-bottom: 15px; max-width: 100%; overflow: hidden; color: #666666; font-family: arial, helvetica, sans-serif; height: 88px; border-color: #000000; background-color: #ffe3e3;">
   <tbody>
      <tr style="background: rgb(245, 245, 245);">
         <td style="border-style: solid; border-color: #ffffff; padding: 10px;"><span style="font-size: 16px;">ffmpeg -vsync ⓐ -ss ⓑ -i ⓒ -an ⓓ -r ⓔ -vf thumbnail=ⓕ -q ⓖ ⓗ</span></td>
         </tr>
      </tbody>
   </table>
<p style="margin-bottom: 15px; color: #666666; font-family: arial, helvetica, sans-serif; background-color: #ffffff;">ⓐ -vsync &lt;숫자&gt; : 비디오 동기화 방법<br />이 옵션을 쓰지 않을 경우 -vframes 와 -r 을 이용한 방법에서 처음 2장의 썸네일<br />이미지가 시간차 없이 생성된다. vsync 2 값으로 설정하면 비교적 정상적으로 생성된다.<br />ⓑ -ss &lt;숫자&gt; : 썸네일 이미지 생성을 시작할 시간을 설정한다.<br />※ -ss 옵션이 -i 옵션 보다 반드시 먼저 나와야 한다.<br />ⓒ -i &lt;동영상파일명&gt; : 썸네일 이미지 생성할 원본 동영상 파일을 지정한다.<br />ⓓ -an &lt;&gt; : 썸네일 이미지만 생성할 것이므로 속도 향상을 위해 오디오 OFF 옵션을 쓰나 생략해도 된다.</p>
<p style="margin-bottom: 15px; color: #666666; font-family: arial, helvetica, sans-serif; background-color: #ffffff;">ⓔ -r &lt;숫자&gt; : 동영상 프레임 레이트 값을 넣어준다.<br />ⓕ -vf thumbnail=&lt;숫자&gt; : 썸네일 프레임 값<br />비디오 필터 중 하나, 연속된 프레임 중에서 가장 대표적인 프레임을 선택해준다.<br />기본값이 100 이므로 25프레임 영상에서는 4초당 1장의 썸네일 이미지가 출력된다.<br />※ 너무 큰 값은 과도한 메모리 자원을 요구하기 때문에 권장하지 않는다.<br />ⓖ -q &lt;숫자&gt; : 생성할 썸네일 이미지의 품질을 설정합니다.<br />0 ~ 31이내의 값을 지정할 수 있고, 숫자가 낮을수록 품질이 좋다.<br />가장 좋은 품질의 이미지라도 jpg 포멧이므로 1장당 용량이 수십kbyte~수백kbyte 용량이 된다.<br />ⓗ %03&lt;썸네일이미지파일명&gt;.jpg : 출력시킬 썸네일 이미지 파일 이름을 지정한다.<br />앞에 %03을 붙여주면 파일명 앞에 001 값부터 숫자가 누적되어 붙는다. ex) 001sample.jpg</p>