비디오 필터란?

비디오 필터는 영상의 품질, 색상, 해상도, 자막 삽입 등 다양한 효과를 처리하기 위해 사용된다. FFMPEG에서 비디오 필터는 -vf 옵션을 사용하여 적용하며, 여러 필터를 체인으로 연결해 사용 가능하며 각 필터는 특정한 목적에 맞는 기능을 수행한다.

기본 구조

FFMPEG에서 비디오 필터를 사용하는 명령어의 기본 구조는 다음과 같다:

ffmpeg -i 입력파일 -vf 필터명=설정값 출력파일

여기서 -vf는 비디오 필터를 지정하는 옵션이고, 필터명에는 사용할 필터를, 설정값에는 필터에 필요한 매개변수를 입력한다.

비디오 필터 체인

FFMPEG에서는 여러 필터를 동시에 적용할 수 있으며, 필터들을 ,로 구분하여 체인으로 연결할 수 있다. 필터 체인은 아래와 같은 형식으로 작성한다:

ffmpeg -i 입력파일 -vf 필터1,필터2,필터3 출력파일

예를 들어, 해상도 변경과 노이즈 제거 필터를 동시에 적용하는 명령은 다음과 같다:

ffmpeg -i input.mp4 -vf scale=1280:720,denoise=mcdenoise output.mp4

흔히 사용되는 비디오 필터

1. scale 필터

scale 필터는 비디오의 해상도를 조정하는 필터이다. 이는 주어진 해상도(너비와 높이)로 비디오를 변환하는 데 사용된다. 다음 명령은 비디오를 1920x1080 해상도로 변환한다:

ffmpeg -i input.mp4 -vf scale=1920:1080 output.mp4

또한 비율을 유지하면서 해상도를 변경할 수도 있다. 예를 들어, 너비를 1280으로 설정하고 높이를 자동으로 계산하려면 아래와 같이 작성할 수 있다:

ffmpeg -i input.mp4 -vf scale=1280:-1 output.mp4

2. crop 필터

crop 필터는 비디오의 일부분만 자를 때 사용된다. 이 필터는 주로 비디오의 특정 영역만 사용하거나 불필요한 부분을 제거할 때 유용하다. 명령어 형식은 다음과 같다:

ffmpeg -i input.mp4 -vf crop=너비:높이:x:y output.mp4

여기서 너비높이는 자를 비디오의 크기이고, xy는 시작 좌표를 나타낸다. 예를 들어, 비디오의 가운데에서 640x480의 영역을 자르려면 다음과 같이 작성할 수 있다:

ffmpeg -i input.mp4 -vf crop=640:480 output.mp4

3. rotate 필터

rotate 필터는 비디오를 회전시킬 때 사용된다. 회전 각도는 라디안 단위로 지정되며, 예를 들어 비디오를 90도(π/2 라디안) 회전시키려면 다음과 같이 명령어를 작성한다:

ffmpeg -i input.mp4 -vf rotate=PI/2 output.mp4

회전은 수식을 사용하여 표현할 수 있으며, 시간에 따라 동적으로 회전시키는 것도 가능한다. 예를 들어, 시간에 따라 비디오를 회전시키려면 다음과 같이 할 수 있다:

ffmpeg -i input.mp4 -vf "rotate=t*PI/4" output.mp4

이 명령은 비디오가 재생될 때마다 초당 π/4 라디안씩 회전하도록 설정한다.

4. fps 필터

fps 필터는 비디오의 프레임 레이트를 변경할 때 사용된다. 예를 들어, 프레임 레이트를 30fps로 설정하려면 아래와 같이 입력한다:

ffmpeg -i input.mp4 -vf fps=30 output.mp4

5. overlay 필터

overlay 필터는 두 개의 비디오를 겹쳐서 하나의 비디오로 만들 때 사용된다. 예를 들어, 배경 비디오 위에 다른 비디오를 겹치려면 다음 명령어를 사용할 수 있다:

ffmpeg -i 배경.mp4 -i 겹칠영상.mp4 -filter_complex "[1][0]overlay=10:10" output.mp4

위 명령은 두 번째 입력 파일(겹칠 영상)을 첫 번째 입력 파일(배경 비디오) 위에 (10,10) 좌표로 배치한다.

6. hue 필터

hue 필터는 비디오의 색조와 채도를 조정하는 필터이다. 비디오의 색상을 조정할 때 사용되며, 색조(h), 채도(s), 밝기(b) 등의 값을 변경할 수 있다. 예를 들어, 비디오의 색조를 90도로 변경하고, 채도를 0.5로 설정하는 명령은 다음과 같다:

ffmpeg -i input.mp4 -vf hue=h=90:s=0.5 output.mp4

이 필터는 색상 표현을 조정하여 특정 효과를 줄 수 있으며, 다양한 비디오 처리 작업에서 유용하게 사용된다.

7. fade 필터

fade 필터는 비디오의 특정 구간에서 점차적으로 화면을 밝게 하거나 어둡게 전환하는 효과를 적용할 수 있다. 이는 주로 시작 부분에서 화면을 점차 밝게 하거나, 끝부분에서 화면을 어둡게 할 때 사용된다. fade 필터의 일반적인 형식은 다음과 같다:

ffmpeg -i input.mp4 -vf "fade=t=in:st=0:d=5" output.mp4

위 명령은 비디오의 시작 부분에서 5초 동안 점차 밝아지도록 설정한다. 반대로 비디오의 끝부분에서 어두워지게 하려면 t=out 옵션을 사용한다:

ffmpeg -i input.mp4 -vf "fade=t=out:st=55:d=5" output.mp4

여기서 st=55는 55초부터 페이드 효과를 시작하고, d=5는 5초 동안 페이드 아웃이 진행됨을 나타낸다.

8. lut 필터

lut(Lookup Table) 필터는 비디오의 색상을 조정하는 고급 필터로, 각각의 픽셀 값을 다른 값으로 변환하는 테이블을 사용하여 다양한 색상 변환 효과를 제공한다. 예를 들어, 그레이스케일 변환을 적용하려면 다음과 같이 작성한다:

ffmpeg -i input.mp4 -vf "lut=y='val*0.3+u*0.59+v*0.11'" output.mp4

이 명령은 그레이스케일 변환을 위해 픽셀의 YUV 값을 변경하는 예이다. lut 필터는 색 보정 작업에서 자주 사용되며, 매우 세밀한 색상 조정이 가능한다.

9. zoompan 필터

zoompan 필터는 비디오의 줌인 및 줌아웃 효과를 적용하는 필터이다. 이 필터를 사용하여 특정 구간에서 화면을 확대하거나 축소하는 동적인 효과를 만들 수 있다. 예를 들어, 다음과 같은 명령을 통해 5초간 비디오를 확대하는 효과를 적용할 수 있다:

ffmpeg -i input.mp4 -vf "zoompan=z='min(zoom+0.0015,1.5)':d=125" output.mp4

이 명령은 줌을 1.5배까지 증가시키며, d=125는 효과의 지속 시간을 나타낸다.

10. drawtext 필터

drawtext 필터는 비디오 위에 텍스트를 삽입하는 필터로, 다양한 텍스트를 비디오 위에 표현할 수 있다. 예를 들어, 비디오의 좌측 상단에 'Hello, World!'라는 문구를 삽입하려면 다음과 같이 작성할 수 있다:

ffmpeg -i input.mp4 -vf "drawtext=text='Hello, World!':fontcolor=white:fontsize=24:x=10:y=10" output.mp4

이 명령은 비디오 좌측 상단 (10,10) 좌표에 흰색 폰트로 크기 24의 텍스트를 표시한다. drawtext 필터는 동적인 텍스트 효과를 위해 다양한 변수도 지원하며, 시간에 따라 변하는 텍스트나 다른 조건에 맞는 텍스트를 적용할 수 있다.

11. deshake 필터

deshake 필터는 비디오의 흔들림을 제거하는 데 사용된다. 흔들린 영상을 안정화하여 시청할 때 불편함을 줄일 수 있다. 특히, 손으로 촬영한 비디오나 움직임이 많은 영상에서 효과적으로 사용할 수 있다. 명령어는 다음과 같다:

ffmpeg -i input.mp4 -vf deshake output.mp4

이 필터는 기본적으로 흔들림을 제거하는 기능을 제공하지만, 필요에 따라 흔들림 제거의 강도와 방향을 설정할 수 있다. 예를 들어, 수평 방향의 흔들림만 제거하려면 아래와 같이 옵션을 사용할 수 있다:

ffmpeg -i input.mp4 -vf "deshake=x=10" output.mp4

이 명령어는 수평 축에서의 흔들림만 제거하도록 설정한 예이다.

12. split 필터

split 필터는 하나의 입력 비디오를 여러 개의 출력 스트림으로 분리할 때 사용된다. 이는 여러 필터를 동시에 적용하거나 다양한 변환을 한 번에 적용할 때 유용하다. split 필터는 단독으로 사용되기보다 다른 필터와 함께 사용되는 경우가 많다. 기본적으로 split 필터는 두 개의 출력을 생성하며, 예를 들어 하나의 비디오에 서로 다른 필터를 적용하는 경우에 사용된다:

ffmpeg -i input.mp4 -vf "split[main][copy];[main]필터명1[output1];[copy]필터명2[output2]" output.mp4

이 예제에서 split은 비디오를 두 개의 스트림으로 복사한 후, 각각 필터명1필터명2를 적용한다.

13. drawbox 필터

drawbox 필터는 비디오 위에 사각형 박스를 그리는 데 사용된다. 이 박스는 텍스트 강조나 특정 영역을 시각적으로 구분하는 데 유용하다. 명령어 형식은 다음과 같다:

ffmpeg -i input.mp4 -vf "drawbox=x=100:y=100:w=200:h=150:color=red@0.5:t=5" output.mp4

여기서 xy는 박스의 시작 좌표, wh는 박스의 너비와 높이, color는 박스의 색상(빨강), t는 박스의 두께를 의미한다. @0.5는 투명도를 설정하는 것으로, 50% 투명하게 설정된 박스를 표시한다.

14. setsar 필터

setsar 필터는 비디오의 SAR(Sample Aspect Ratio)를 설정하는 필터이다. SAR은 비디오의 각 픽셀의 비율을 정의하며, SAR을 변경하여 영상의 표시 비율을 조정할 수 있다. 예를 들어, SAR을 1:1로 설정하는 명령어는 다음과 같다:

ffmpeg -i input.mp4 -vf "setsar=1:1" output.mp4

SAR 값은 픽셀의 가로 세로 비율을 조정하는 데 사용되며, 잘못 설정된 SAR 값을 수정할 때 유용하다.

15. tblend 필터

tblend 필터는 두 개의 비디오 프레임을 시간적으로 혼합하여 시각적인 효과를 만든다. 이 필터는 비디오의 프레임 간 전환을 부드럽게 하거나, 모션 블러 효과를 적용할 때 사용된다. 예를 들어, 두 프레임을 multiply 모드로 혼합하는 명령어는 다음과 같다:

ffmpeg -i input.mp4 -vf "tblend=all_mode=multiply" output.mp4

여기서 multiply는 두 프레임의 값을 곱하여 혼합하는 방식이다. 이 외에도 tblend 필터는 다양한 혼합 모드를 지원하며, 각 모드는 다른 시각적 효과를 제공한다.

16. transpose 필터

transpose 필터는 비디오를 90도씩 회전시키는 필터이다. 이 필터는 주로 비디오의 방향을 수정하거나 특정 각도로 회전시킬 때 사용된다. 예를 들어, 비디오를 시계 방향으로 90도 회전하려면 다음 명령을 사용할 수 있다:

ffmpeg -i input.mp4 -vf "transpose=1" output.mp4

transpose=1은 시계 방향 90도 회전을 의미하며, transpose=2는 반시계 방향 90도 회전을 의미한다. 회전 후 필요한 경우 추가적인 회전 옵션을 적용할 수 있다.

17. vignette 필터

vignette 필터는 비디오의 테두리를 어둡게 하여 중간 부분을 강조하는 효과를 제공한다. 이 필터는 영상의 테두리를 점진적으로 어둡게 하여 중앙 부분에 집중할 수 있도록 만들어 준다. 기본 사용 예시는 다음과 같다:

ffmpeg -i input.mp4 -vf "vignette" output.mp4

위 명령어는 기본적인 비네팅 효과를 적용하며, 필요에 따라 강도와 중심 위치를 설정할 수 있다. 예를 들어, 중심을 (x=200, y=150)으로 설정하고 강도를 조절하려면 다음과 같은 명령어를 사용할 수 있다:

ffmpeg -i input.mp4 -vf "vignette=x0=200:y0=150:radius=2:angle=PI/4" output.mp4

여기서 x0y0는 비네팅 효과의 중심 좌표를 의미하고, radiusangle은 비네팅의 강도와 방향을 설정한다.

18. denoise 필터

denoise 필터는 비디오의 노이즈를 제거하는 필터이다. 저조도에서 촬영된 비디오나 압축 과정에서 발생한 잡음을 줄이는 데 유용하다. 다양한 노이즈 제거 필터가 있으며, 그 중 하나는 hqdn3d 필터이다. 이 필터를 사용하여 노이즈를 줄이려면 다음과 같이 할 수 있다:

ffmpeg -i input.mp4 -vf "hqdn3d=3:3:6:6" output.mp4

이 명령어에서 3:3:6:6은 공간적 및 시간적 노이즈 제거 강도를 설정하는 값이다. hqdn3d 필터는 비디오 품질을 유지하면서 잡음을 효과적으로 제거한다.

19. gradfun 필터

gradfun 필터는 비디오의 색상 밴딩 현상을 줄이는 데 사용된다. 색상 밴딩은 디지털 영상에서 색상 그라데이션이 부드럽지 않고 끊어지는 현상을 의미한다. 이 필터를 사용하면 그라데이션을 부드럽게 하여 색상이 자연스럽게 표현되도록 할 수 있다. 다음은 기본 사용 예이다:

ffmpeg -i input.mp4 -vf "gradfun" output.mp4

필터 강도를 조정할 수 있으며, 강도가 높을수록 색상 밴딩을 더 많이 줄일 수 있다:

ffmpeg -i input.mp4 -vf "gradfun=2" output.mp4

20. boxblur 필터

boxblur 필터는 비디오의 흐림 효과를 제공하는 필터로, 영상의 특정 부분을 흐리게 처리할 수 있다. 이는 프라이버시 보호나 배경 강조 등에 사용될 수 있다. 기본적으로 전체 화면을 흐리게 하려면 다음과 같이 사용할 수 있다:

ffmpeg -i input.mp4 -vf "boxblur=5:5" output.mp4

여기서 5:5는 가로와 세로 방향의 블러 강도를 나타낸다. 특정 영역만 블러를 적용하고 싶다면 crop 필터와 함께 사용할 수 있다:

ffmpeg -i input.mp4 -vf "crop=640:480:0:0,boxblur=5:5" output.mp4

이 명령은 비디오의 (0,0) 좌표에서 시작하는 640x480 크기의 영역에 블러를 적용한다.

21. eq 필터

eq 필터는 비디오의 밝기, 대비, 색상 등을 조정하는 필터이다. 기본적으로 이 필터를 사용하여 비디오의 전반적인 휘도나 채도를 변경할 수 있다. 다음 명령어는 대비를 높이고 밝기를 줄이는 예시이다:

ffmpeg -i input.mp4 -vf "eq=contrast=1.5:brightness=-0.1" output.mp4

여기서 contrast는 대비를, brightness는 밝기를 나타낸다. 필터는 색조나 채도도 변경할 수 있으며, 다양한 조정 작업에서 사용된다:

ffmpeg -i input.mp4 -vf "eq=contrast=1.2:saturation=1.5" output.mp4

이 명령어는 대비를 약간 높이고 채도를 강화하는 설정이다.

22. smartblur 필터

smartblur 필터는 영상을 흐리게 하면서도 중요한 디테일을 보존하는 필터이다. 이 필터는 일반적인 블러 필터와 달리 엣지나 주요 피사체를 유지하면서 배경을 흐리게 만드는 데 유용하다. 기본 사용법은 다음과 같다:

ffmpeg -i input.mp4 -vf "smartblur=1.0:0.5:-0.8" output.mp4

이 명령에서 각 매개변수는 블러 강도와 방향을 제어하며, 세부적인 디테일을 조정할 수 있다.