1. 화면 비율 정의

비디오 화면 비율(aspect ratio)은 비디오의 가로 길이(width)와 세로 길이(height)의 비율을 나타낸다. 일반적으로 다음과 같이 정의된다.

\text{Aspect Ratio} = \frac{\text{Width}}{\text{Height}}

이때 가로와 세로의 단위는 픽셀(px)로 측정된다.

2. 일반적인 화면 비율

비디오에서 가장 많이 사용되는 화면 비율은 다음과 같다:

이 비율은 영상 콘텐츠의 표현 방식에 큰 영향을 미치며, 각 비율마다 고유한 시청 경험을 제공한다.

3. FFmpeg에서 화면 비율 조정

FFmpeg에서 비디오의 화면 비율을 조정할 수 있는 방법에는 몇 가지가 있다. -aspect 옵션을 사용하여 출력 파일의 화면 비율을 설정하거나, 비디오 필터를 사용하여 화면 비율을 변경할 수 있다.

3.1 기본 명령어 구조

기본적으로 FFmpeg에서 화면 비율을 조정하는 명령어는 다음과 같다:

ffmpeg -i input.mp4 -aspect 16:9 output.mp4

이 명령어는 입력 파일 input.mp4의 화면 비율을 16:9로 조정하여 output.mp4로 저장한다.

3.2 비디오 필터 사용

비디오 필터를 이용하여 화면 비율을 더 정밀하게 조정할 수 있다. scale 필터를 사용하면 특정 해상도를 설정하면서 화면 비율도 동시에 맞출 수 있다. 예를 들어, 다음과 같은 명령어를 사용할 수 있다:

ffmpeg -i input.mp4 -vf "scale=1280:720,setdar=16/9" output.mp4

위 명령어는 비디오의 해상도를 1280x720으로 조정하고, 화면 비율을 16:9로 설정한다.

4. 화면 비율과 해상도

화면 비율을 조정하는 데 있어 중요한 것은 해상도이다. 해상도는 비디오의 실제 픽셀 수를 나타내며, 해상도에 따라 화면 비율이 달라질 수 있다. 일반적으로, 해상도와 화면 비율은 다음과 같은 관계를 가진다:

화면 비율과 해상도는 다음과 같은 관계로 표현된다:

\mathbf{Resolution} = \begin{bmatrix} \text{Width} \\ \text{Height} \end{bmatrix}
\text{Aspect Ratio} = \frac{\mathbf{Width}}{\mathbf{Height}}

즉, 해상도를 바꾸지 않고 화면 비율만 변경하려면 비디오의 픽셀을 늘리거나 줄여야 한다.

5. 화면 비율과 패딩(padding)

화면 비율을 조정할 때 해상도를 변경하지 않고 비율만 맞추려면, 화면에 빈 공간을 추가하는 방법을 사용할 수 있다. 이를 패딩(padding)이라고 하며, 이 방법을 사용하면 화면 비율이 맞지 않는 부분에 검은색 테두리를 추가하여 영상의 왜곡을 방지할 수 있다.

5.1 패딩을 사용한 FFmpeg 명령어

FFmpeg에서 패딩을 추가하여 화면 비율을 맞추는 방법은 pad 필터를 사용하는 것이다. 예를 들어, 4:3 비율의 영상을 16:9 비율로 변환하려면 다음과 같은 명령어를 사용할 수 있다:

ffmpeg -i input.mp4 -vf "scale=ih*16/9:ih,pad=iw:(ow/16)*9" output.mp4

이 명령어는 입력 영상의 높이(ih)를 기준으로 16:9 비율로 변환하고, 나머지 공간을 패딩으로 채운다.

5.2 수식으로 표현한 패딩

패딩을 추가하여 화면 비율을 조정할 때의 계산식은 다음과 같다. 원본 영상의 해상도를 \mathbf{Resolution}_{\text{original}}이라 하고, 새로운 비율을 \mathbf{AspectRatio}_{\text{new}}로 설정했을 때, 패딩을 추가하는 식은 다음과 같다:

\mathbf{Padding} = \begin{bmatrix} \mathbf{Padding}_{\text{left/right}} \\ \mathbf{Padding}_{\text{top/bottom}} \end{bmatrix}

여기서, 새로운 비율에 맞추기 위해 추가되는 패딩의 크기는 영상의 가로 또는 세로 길이에 따라 달라진다. 패딩의 크기는 다음과 같이 구할 수 있다:

\mathbf{Padding}_{\text{left/right}} = \frac{\mathbf{Width}_{\text{new}} - \mathbf{Width}_{\text{original}}}{2}

또는

\mathbf{Padding}_{\text{top/bottom}} = \frac{\mathbf{Height}_{\text{new}} - \mathbf{Height}_{\text{original}}}{2}

이 수식에 따라 빈 공간을 채워 비율을 맞춘다.

6. FFmpeg로 자동 화면 비율 조정

FFmpeg는 원본 영상의 비율을 자동으로 인식하고, 원하는 비율로 조정하는 옵션도 제공한다. 이를 사용하면 영상의 해상도는 유지하되, 비율에 맞추어 출력할 수 있다.

6.1 자동 조정 명령어

FFmpeg에서 자동으로 화면 비율을 맞추려면 setdar 필터를 사용한다. 예를 들어, 16:9 비율로 자동 조정하려면 다음과 같은 명령어를 사용한다:

ffmpeg -i input.mp4 -vf "setdar=16/9" output.mp4

이 명령어는 비디오의 해상도에 관계없이 화면 비율을 16:9로 조정한다.

6.2 비율 자동 감지와 조정

FFmpeg는 입력 파일의 DAR(Display Aspect Ratio)SAR(Sample Aspect Ratio)를 기반으로 자동으로 비율을 계산한다. 만약 사용자가 명시적으로 -aspectsetdar 옵션을 제공하지 않는다면, FFmpeg는 영상의 해상도 정보를 사용하여 비율을 결정한다.

7. 비율 조정 시 고려해야 할 사항

비디오의 화면 비율을 조정할 때 몇 가지 주의해야 할 사항이 있다. 그중 하나는 영상의 왜곡을 방지하는 것이다. 잘못된 비율로 조정할 경우, 영상의 객체가 늘어나거나 줄어드는 왜곡이 발생할 수 있다.

\mathbf{Distortion} = \frac{\mathbf{AspectRatio}_{\text{new}}}{\mathbf{AspectRatio}_{\text{original}}}

비율을 조정할 때는 이 왜곡을 최소화하거나 아예 발생하지 않도록 해야 한다.

8. 비디오 화면 비율 조정 예시

비디오의 화면 비율을 조정하는 예시를 통해 구체적인 방법을 살펴보자. 여기서는 다양한 비율의 비디오를 16:9 비율로 변환하는 과정을 예시로 설명한다.

8.1 4:3 비율에서 16:9 비율로 변환

만약 4:3 비율의 비디오를 16:9 비율로 변환하려면, 비율 차이를 해결하기 위해 영상의 가로 길이를 늘리거나, 세로 길이를 줄여야 한다. 해상도가 1024x768인 4:3 비디오를 1280x720의 16:9 비율로 변환한다고 가정하자.

8.1.1 해상도 변환 계산

원본 해상도와 목표 해상도의 비율 차이를 계산하면 다음과 같다:

\mathbf{AspectRatio}_{\text{original}} = \frac{1024}{768} = 1.33
\mathbf{AspectRatio}_{\text{target}} = \frac{1280}{720} = 1.78

여기서 원본 비율과 목표 비율이 다르므로, 영상의 가로 또는 세로 길이를 조정해야 한다. 비율 차이를 맞추기 위해 scale 필터를 사용하여 다음과 같은 명령어를 적용할 수 있다:

ffmpeg -i input_4_3.mp4 -vf "scale=1280:720" output_16_9.mp4

이 명령어는 비디오의 가로와 세로 길이를 1280x720으로 맞추어, 비율 차이를 해결한다.

8.1.2 패딩을 이용한 비율 변환

해상도를 변경하지 않고 비율만 맞추려면 패딩을 추가하여 여백을 넣을 수 있다. 이를 위해 pad 필터를 적용한다. 예를 들어, 아래 명령어는 가로 길이를 유지하면서 상하 여백을 추가하여 16:9 비율을 맞춘다:

ffmpeg -i input_4_3.mp4 -vf "pad=1280:960:0:(ow-ih)/2" output_16_9_padded.mp4

여기서 pad 필터는 해상도 1280x960으로 가로 길이를 늘리고, 세로에 여백을 추가하여 비율을 맞춘다.

8.2 21:9 비율에서 16:9 비율로 변환

21:9 비율의 영상을 16:9 비율로 변환하는 경우, 주로 가로 길이를 줄여서 비율을 맞추게 된다. 예를 들어, 2560x1080 해상도의 21:9 비디오를 1920x1080 해상도의 16:9 비디오로 변환한다고 가정하자.

8.2.1 해상도 변환 계산

원본 비율과 목표 비율을 계산하면 다음과 같다:

\mathbf{AspectRatio}_{\text{original}} = \frac{2560}{1080} = 2.37
\mathbf{AspectRatio}_{\text{target}} = \frac{1920}{1080} = 1.78

원본 비율이 2.37인 21:9 비율을 1.78의 16:9 비율로 변환하려면, 가로 길이를 줄여야 한다. 이때 crop 필터를 사용하여 다음 명령어를 사용할 수 있다:

ffmpeg -i input_21_9.mp4 -vf "crop=1920:1080" output_16_9.mp4

이 명령어는 가로 길이를 줄여서 1920x1080 해상도로 비율을 맞춘다.

8.2.2 패딩을 이용한 비율 변환

마찬가지로, 패딩을 추가하여 비율을 맞출 수도 있다. 패딩을 추가하여 16:9 비율을 맞추는 명령어는 다음과 같다:

ffmpeg -i input_21_9.mp4 -vf "pad=1920:1080:(ow-iw)/2:0" output_16_9_padded.mp4

이 명령어는 패딩을 추가하여 가로 길이를 유지하고, 여백을 채워 16:9 비율로 조정한다.

9. 고급 필터링을 이용한 비율 조정

FFmpeg는 기본적인 비율 조정 외에도 다양한 필터를 제공하여 비율을 보다 정밀하게 조정할 수 있다. scale, crop, pad 필터 이외에도 setsar(Sample Aspect Ratio)와 setdar(Display Aspect Ratio)를 조합하여 원하는 비율을 세밀하게 제어할 수 있다.

9.1 Sample Aspect Ratio(SAR)

SAR은 샘플 비율을 나타내며, 픽셀의 비율을 조정하는 데 사용된다. 이를 통해 비디오가 화면에 표시되는 방식에 영향을 미칠 수 있다. 예를 들어, SAR을 조정하여 비디오의 픽셀을 늘리거나 줄일 수 있다.

FFmpeg에서 SAR을 설정하는 명령어는 다음과 같다:

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

이 명령어는 비디오의 샘플 비율을 1:1로 설정한다.

9.2 Display Aspect Ratio(DAR)

DAR은 비디오가 출력 장치에 표시될 때의 화면 비율을 나타낸다. DAR을 조정함으로써 비디오의 가로 세로 비율을 맞출 수 있으며, SAR과 함께 사용되어 화면 비율을 제어할 수 있다.

FFmpeg에서 DAR을 설정하는 명령어는 다음과 같다:

ffmpeg -i input.mp4 -vf "setdar=16/9" output.mp4

이 명령어는 비디오의 출력 화면 비율을 16:9로 설정한다. SAR과 DAR의 조합은 매우 유용하며, 서로 다른 해상도의 디스플레이 장치에서도 비디오의 일관된 화면 비율을 유지할 수 있게 한다.

9.3 SAR과 DAR 조합

SAR과 DAR은 각각 픽셀의 비율과 출력 장치의 화면 비율을 정의하며, 다음 수식으로 비율 간의 관계를 표현할 수 있다:

\mathbf{DAR} = \mathbf{SAR} \times \frac{\mathbf{Width}}{\mathbf{Height}}

이 수식을 이용해 SAR과 DAR을 조정하여 원하는 비율을 얻을 수 있다. 예를 들어, SAR이 1.5이고 해상도가 1280x720인 경우, DAR은 다음과 같다:

\mathbf{DAR} = 1.5 \times \frac{1280}{720} = 2.67

따라서, DAR을 원하는 16:9 비율로 맞추려면 SAR을 조정해야 한다. FFmpeg 명령어로 이를 설정할 수 있다:

ffmpeg -i input.mp4 -vf "setsar=1/1,setdar=16/9" output.mp4

이 명령어는 SAR을 1:1로 설정하고, DAR을 16:9로 설정하여 비율을 맞춘다.

10. 비디오의 화면 비율 유지

비디오 편집에서 화면 비율을 조정할 때 가장 중요한 점은 원본 비디오의 비율을 유지하면서 출력하려는 비율에 맞추는 것이다. 비율을 잘못 설정하면 영상이 왜곡되거나 의도한 결과를 얻지 못할 수 있다. 따라서 FFmpeg에서 제공하는 다양한 옵션과 필터를 활용해 최적의 비율을 유지하는 것이 중요하다.

10.1 FFmpeg 화면 비율 유지 명령어

다음은 원본 비율을 유지하면서 새로운 해상도로 비율을 맞추는 FFmpeg 명령어 예시이다:

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

이 명령어에서 -1은 FFmpeg가 자동으로 적절한 세로 해상도를 계산하여 비율을 유지하도록 한다. 가로 해상도를 1280으로 설정한 후, FFmpeg는 비율을 자동으로 조정하여 영상이 왜곡되지 않도록 한다.

11. 비율 유지와 리샘플링

비율을 유지하면서 해상도를 변경할 때는 리샘플링(resampling)을 고려해야 한다. 리샘플링은 영상의 품질에 영향을 미치는 중요한 요소로, 비율을 유지하면서 픽셀을 재배치하여 영상을 조정한다. FFmpeg는 다양한 리샘플링 방법을 제공하며, 그중 lanczos, bilinear, bicubic 등이 많이 사용된다.

11.1 리샘플링 필터 적용

FFmpeg에서 리샘플링 필터를 사용하는 명령어는 다음과 같다:

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

이 명령어는 lanczos 필터를 사용하여 비디오를 1280 픽셀의 가로 길이에 맞춰 리샘플링하고, 비율을 유지한다.

11.2 리샘플링 품질 비교

리샘플링 방법에 따라 비디오 품질이 달라지므로, 다음의 수식을 통해 각 필터의 차이를 설명할 수 있다:

\mathbf{Quality} = \sum_{i=1}^{n} \left( \frac{1}{\mathbf{Filter_{Type}}(i)} \right)

여기서, \mathbf{Filter_{Type}}은 사용된 리샘플링 필터의 유형을 나타내며, 필터에 따라 품질이 달라진다. 일반적으로 lanczos 필터는 고품질 리샘플링을 제공하며, bilinear는 속도가 빠르지만 품질이 낮을 수 있다.

12. 동적 비율 조정

동영상에서 비율을 동적으로 변경해야 하는 경우가 있다. 예를 들어, 영상의 특정 부분만 비율을 조정하거나, 시간에 따라 비율을 변화시킬 수 있다. 이때 FFmpeg는 시간 기반 필터를 사용하여 이러한 동적 비율 조정을 가능하게 한다.

12.1 시간 기반 필터 사용 예시

시간 기반 필터를 사용하여 비디오의 시작 부분에서는 4:3 비율을 유지하고, 중간부터 16:9 비율로 변경하는 명령어는 다음과 같다:

ffmpeg -i input.mp4 -vf "scale=if(lt(t,10),1024:768,1280:720)" output.mp4

이 명령어는 10초 이내에는 1024x768의 4:3 비율을 적용하고, 10초 이후에는 1280x720의 16:9 비율을 적용한다.