?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

※ 다음 게시글을 먼저 읽으면 이 글을 이해하는 데 도움이 됩니다.

 


 

이 글에서는 샤나인코더 빠른 설정(F6)영상 사이즈 변경 옵션 설정을 통해 샤나에서 어떻게 FFmpeg의 필터들을 사용자가 쉽게 사용할 수 있도록 구성해 놓았는지 살펴보기로 하겠습니다.

 

그 전에 먼저 FFmpeg에서 사용하는 비율 관련 용어를 설명합니다. 샤나의 영상 사이즈 변경비율변경에서 레터박스잘라내기를 선택하면 SAR, DAR이란 옵션이 나옵니다. 이것의 의미는 다음과 같습니다.

 

SAR = Sample Aspect Ratio = Pixel Aspect Ratio (PAR)

DAR = Display Aspect Ratio

 

즉, SAR는 영상을 구성하고 있는 픽셀의 가로-세로 비율이고, DAR은 영상의 화면 표시 비율입니다. 특별한 경우가 아니고서는 대부분의 영상이 SAR이 1이므로 보통 비율을 말할 땐 DAR, 즉 화면 비율을 의미합니다. 대개 4:3이니, 16:9니, 1.85:1이나 2.35:1은 DAR을 가리킵니다.

 

그렇지만 가로 720, 세로 480인 영상이 가로 640, 세로 480인 영상과 같은 화면비로 재생된다면 그 영상의 SAR은 1이 아니라 가로가 세로보다 짧은, 1보다 작은 값이 되겠죠. 이렇게 화면 표시 비율에 맞춰서 픽셀 비율을 변경하는 것을 아나모픽(anamorphic)이라고 합니다.

 

영상 사이즈 변경은 아래와 같은 특정 상황을 바탕으로 설명합니다.

 

상황: 가로 1920, 세로 800인 약 2.35:1의 화면비를 가진 영화 영상을 가로 1280이 되도록 화면 비율을 유지한 채 해상도 변경(축소)

 

FFmpeg에서는 화면 비율을 유지한 채 해상도 변경을 하려면 가로나 세로의 픽셀수를 정한 뒤 다른 쪽을 '-1'로 설정하면 됩니다. 물론 샤나에서도 그렇게 하면 됩니다.

 

샤나에서는 영상 사이즈 변경의 하위 옵션으로 비율변경을 두고 있는데 비율변경엔 세 가지 옵션이 있습니다. 세 가지 옵션의 설정에 따라 샤나가 어떻게 필터 설정을 하는지 보고, 이것이 최종적으로 어떤 결과를 만들어 내는지 보도록 하겠습니다.

 

■ 비율변경: 사용 안 함

 

샤나의 빠른 설정에서 위와 같이 선택하고 적용한 후 F7을 눌러 필터 설정창을 열어보면 아래와 같이 나타납니다.

 

 

우리가 선택한 사이즈 옵션 설정값들이 scale이라는 필터의 매개변수 설정값들로 들어가 있습니다. 그와 함께 리사이즈 필터로 선택한 bicubicscale 필터의 옵션 flags의 설정값으로 들어가 있습니다.

 

(scale 바로 밑의 setsar=1/1은 SAR을 1:1로 보존한다는 의미. 대부분의 경우 생략해도 무방)

 

필터들은 옵션1=설정값:옵션2=설정값:옵션3=설정값 등등과 같이 옵션과 옵션이 콜론(:)으로 구분돼 있고, "옵션=" 부분이 생략되어 설정값만 나올 경우 필터의 옵션 순서에 따라 자동으로 할당됩니다.

 

즉 위의 scale 필터 옵션 설정값들인,

1280:-1:flags=bicubic

w=1280:h=-1:flags=bicubic

과 동일한 의미입니다. (그리고 wwidth, hheight와 동일)

 

따라서 위와 같은 scale 필터 설정은 가로 세로를 가로는 1280 픽셀로, 세로는 가로 크기 1280에 맞춰 원본 픽셀 비율을 보존하는 크기로 해상도 변경하되 bicubic 알고리듬을 이용하라는 의미입니다.

 

실제 FFmpeg에 입력될 때 필터와 필터 간의 구분은 쉼표(,)로 하며 필터 사이에 공백은 없습니다. 필터 설정창의 위 구성이 실제 명령어로 어떻게 입력되는지는 매개변수 창(F8)을 열어보면 아래와 같이 확인할 수 있습니다.

 

 

이렇게 설정된 필터를 적용하여 실제 인코딩해 보면 아래와 같은 결과를 얻습니다.

 

 

■ 비율변경: 레터박스

 

위와 같이 레터박스를 선택하고 레터박스의 기준 프레임을 16:9 비율로 설정하면, 필터 설정창에는

 

 

와 같이 scale 밑에 shanapad라는 필터가 추가돼 있는 것을 볼 수 있습니다. 이 shanapad 필터는 FFmpeg의 기본 필터인 pad를 샤나인코더만의 방식으로 변형한 필터입니다. 원래의 pad가 갖고 있는 복잡한 옵션들을 간략하게 만들어 놓은 것입니다. (따라서 실제 FFmpeg에서 적용하려면 pad 필터에 맞게 변형해야 함.)

 

필터 설정은 1번의 설정의 경우에 추가해서 16:9의 비율로 검은 상자(레터박스)를 만들어 그 위에 원래 비율로 해상도를 줄인 영상을 놓으라는 의미입니다. 실제로 적용하면 아래와 같이 나옵니다.

 

 

2.35 대 1의 원본 영상이 16 대 9보다는 가로가 더 길쭉하므로 위 아래 부분에 검은색 여백(레터박스)이 생깁니다.

 

■ 비율변경: 잘라내기

가장 조심해야 할 옵션 선택입니다. 가로로 길쭉한 영화 영상을 16 대 9 화면비에 맞춰서 검은 여백 없이 좌우를 잘라내고 가로를 1280으로 맞추려고 할 때 잘못하면 아래와 같이 선택할 수도 있습니다.

 

 

실제 이렇게 설정을 하고 적용을 해보면 원하는 결과가 나오지 않아 당황스러울 수 있습니다. 그렇게 된 원인은 필터 실행의 우선순위 때문입니다.

 

FFmpeg 명령어 구조와 샤나인코더 작동 방식 이해에서 설명했듯이 FFmpeg에서 필터의 선후 위치는 매우 중요합니다. 반드시 먼저 오는 필터가 먼저 처리되는데, 샤나에서는 빠른 설정에서 위와 같이 설정하면 실제 필터를 아래와 같이 설정합니다.

 

 

화면 잘라내기를 위한 FFmpegcrop 필터를 샤나만의 방식으로 변형한 필터인 shanacropscale 필터 아래(뒷부분)에 놓게 되는데, 이렇게 되면 영상은

 

1) 해상도 변경을 먼저 하게 되고

2) 변경된 해상도의 영상(가로 1280 픽셀)이 다시 16:9의 비율에 맞춰 잘라지게

 

됩니다. 따라서 적용 결과는 다음과 같습니다.

 

 

즉, 원하는 1280의 가로 크기가 아닌 그보다 작은 크기의 영상을 얻게 됩니다.

 

이를 바로잡으려면 두 가지 방법이 있습니다.

 

  • 자르기(shanacrop)를 먼저 하고, 가로 크기에 맞게 해상도를 조정(scale)하도록 shanacropscale 필터 에 (즉, 앞에) 놓는다.
  • 샤나인코더 파일 목록에서 오른쪽 클릭 ⇒ 구간 설정/잘라내기 메뉴를 통해 화면 잘라내기를 먼저 적용하고 빠른 설정에서는 영상 사이즈 변경을 하되 비율 변경: 사용 안 함을 선택한다.

 

두 번째 방법은 샤나인코더의 프로그램 구성상 구간 설정/잘라내기가 다른 필터보다 우선 순위를 갖기에 이를 이용하는 방법입니다.

 

□ 기타 알아두어야 할 것들

실질적으로 모든 필터는 비압축/압축 해제된 비가공 데이터(raw data)를 입력값과 출력값으로 갖습니다. 따라서 필터 처리는 반드시 영상의 디코딩 과정을 거친 이후에야 진행할 수 있기 때문에 필터 작업과 스트림 복사는 양립할 수 없습니다. 따라서 '재인코딩 없이 검은 여백(레터박스)만 잘라내기(crop)'나 '재인코딩 없이 화면을 회전(rotate)하거나 뒤집기(flip)' 같은 작업은 불가능합니다. 이는 인코딩 작업의 흐름도를 생각하면 이해하실 수 있을 겁니다.

 

※ 예외적으로 mp4 같은 특별한 컨테이너 포맷은 메타정보(rotate)만으로 화면을 회전해서 보여줄 수는 있습니다만 플레이어가 해당 메타정보를 무시할 경우 제대로 작동하지 않을 수 있습니다.

 

참고로, scale에 적용되는 리사이즈 필터들은 큰 폭의 해상도 변경이 없거나 해상도를 낮출 경우 bicubic이나 bilinear, 큰 폭의 해상도 변경이 있을 경우 lanczosspline이 속도 대비 가장 효율적인 알고리듬입니다.

 
이 글을 추천한 사람
ymin 이승현 Rina
Facebook Twitter Pinterest Kakao
  • ?
    P군 2020.07.21 21:16
    검은여백 잘라내기 후 리사이즈시 버그 있다죠. 고쳐졌는지 모르겠네요
  • ?
    JKyle 2021.07.13 01:19
    5.2.2 버전에서 고쳐졌네요.
  • ?
    P군 2021.10.10 20:02
    안고쳐졌네요 5.2.2.3....
  • ?
    JKyle 2022.09.07 03:32

    직접 버그 보고를 하시지 왜...?

    어쨌든, 한동안 샤나를 안 써서 확인을 못 했는데 이제 버그 보고 했으니 아마 다음 버전에선 고쳐지겠죠.

     

List of Articles
번호 제목 글쓴이 날짜 조회 수 추천 수
» 샤나인코더 영상 사이즈 변경 옵션을 통한 FFmpeg 필터의 기초 이해 4 JKyle 2020.01.27 11836 3
Board Pagination Prev 1 Next
/ 1