알쓸전컴(알아두면 쓸모있는 전자 컴퓨터)

[ffmpeg] 툴 분석 (3) 본문

멀티미디어/ffmpeg 분석

[ffmpeg] 툴 분석 (3)

백곳 2017. 10. 10. 20:10

[ffmpeg] 툴 분석 (3)



Filtering


영상을 인코딩 하기 전에 오디오나 비디오 영상을 libavfilter 라이브러리를 통해서 필터 효과 를 줄수 있습니다. 

필터그래프는 여러개픨터가 연결되어 있는 형태를 필터 그래프라고 합니다. 

ffmpeg 는 simple 와 complex 을 구분합니다. 



Simple filtergraphs


Simple filtergraphs 는 정확히 input 과 output 이 1개만 존재합니다. 


 _________                        ______________
|         |                      |              |
| decoded |                      | encoded data |
| frames  |\                   _ | packets      |
|_________| \                  /||______________|
             \   __________   /
  simple     _\||          | /  encoder
  filtergraph   | filtered |/
                | frames   |
                |__________|


Simple filtergraphs 의 사용 방법은 옵션으로 -filter 옵션을 주고 같이 쓰이는 옵션은  -vf 는 비디오 -af 는 오디오 필터를 의미합니다. 


 _______        _____________        _______        ________
|       |      |             |      |       |      |        |
| input | ---> | deinterlace | ---> | scale | ---> | output |
|_______|      |_____________|      |_______|      |________|

여기서 deinterlace 에 대해서 알아 보겠습니다. 

영상을 보여 줄때 홀수열 짝수열 순서 대로 보여 줍니다.  

deinterlace 는 처음부터 홀수 짝수 가 아니라 위에서 1번 부터 순서대로 쭉~ 보여 주는 방식입니다. 




출처 http://www.videoconverterfactory.com/tips/interlaced-video.html


몇몇 필터는 프레임 속성(fps,size)등만 조정하고 비디오 내용은 수정 하지 않는것들도 있습니다. 


예를 들면 setpts 필터는 영상의 속도를 조정합니다. 


ffmpeg -i input.mkv -filter:v "setpts=0.5*PTS" output.mkv


출처 : https://trac.ffmpeg.org/wiki/How%20to%20speed%20up%20/%20slow%20down%20a%20video


Complex filtergraphs


복잡한 필터링은 단순한 필터1개만 가지고 표현히 불가능합니다 그래서 여러개의 필터를 같이 사용할수 있는 옵션입니다. 

 _________
|         |
| input 0 |\                    __________
|_________| \                  |          |
             \   _________    /| output 0 |
              \ |         |  / |__________|
 _________     \| complex | /
|         |     |         |/
| input 1 |---->| filter  |\
|_________|     |         | \   __________
               /| graph   |  \ |          |
              / |         |   \| output 1 |
 _________   /  |_________|    |__________|
|         | /
| input 2 |/
|_________|

Complex filtergraphs 는 -filter_complex option을 사용합니다.  -lavfi 옵션은 -filter_complex 와 같은 의미 힙니다. 


예를 들면 Complex filtergraphs  는 overlay 필터(2개의 비디오 input -> 1개의 output 비디오)  오디오 경우 amix 필터 가 있습니다. 


overlayer 예제 


  • Insert a transparent PNG logo in the bottom left corner of the input, using the ffmpeg tool with the -filter_complex option:
    ffmpeg -i input -i logo -filter_complex 'overlay=10:main_h-overlay_h-10' output
    
  • Insert 2 different transparent PNG logos (second logo on bottom right corner) using the ffmpeg tool:
    ffmpeg -i input -i logo1 -i logo2 -filter_complex 'overlay=x=10:y=H-h-10,overlay=x=W-w-10:y=H-h-10' output


참조 : https://ffmpeg.org/ffmpeg-filters.html#overlay-1


amix 예제 


ffmpeg -i INPUT1 -i INPUT2 -i INPUT3 -filter_complex amix=inputs=3:duration=first:dropout_transition=3 OUTPUT

참조 : https://ffmpeg.org/ffmpeg-filters.html#amix





Stream copy


영상의 압축 형식을 바꿀때 사용할수 있습니다. 


옵션으로는 -codec 을 사용합니다. 


 _______              ______________            ________
|       |            |              |          |        |
| input |  demuxer   | encoded data |  muxer   | output |
| file  | ---------> | packets      | -------> | file   |
|_______|            |______________|          |________|



'멀티미디어 > ffmpeg 분석' 카테고리의 다른 글

[ffmpeg] 툴 분석 (4)  (0) 2017.10.12
[ffmpeg] 툴 분석 (2)  (0) 2017.10.02
[ffmpeg] 툴 분석 (1)  (0) 2017.10.01
Comments