TEUS.me

 
 

구매한지 3개월만에 드디어 정상동작을 확인한 MainConcept HEVC 인코더를 테스트해봤다.

테스트는 이전에 했던 테스트들과 동일한 조건에서 수행하여 결과물의 품질을 비교했으며...

 

이번에도 테스트에 수고해주신 Sintel

 

이전에 데모버전의 테스트를 위해 만든 인코더의 기능을 좀 보강해서 진행했다.

MC의 인코딩을 위해선 따로 컴파일한 FFmpeg이 필요한데, 이 버전이 일부 avs는 잘 읽지 못하는 문제가 발견됐다.

이를 위해 아예 FFmpeg을 직접 컴파일할 수도 있었지만, 귀차니즘으로 그냥 FFmpeg들을 파이프로 연결하도록 보강.

 

순정(?)FFmpeg과 MC용 FFmpeg을 파이프로 연결해서 인코딩하도록 수정

 

1. color range

x264/x265는 기본적으로 full range를 사용하지 않고 limited range(16-235)로 인코딩한다.

동일선상에 놓고 비교하기 위해 limited range 옵션을 적용.
full range로 설정하면 당연히 파일 크기가 커진다.

 

 

2. AQP or CQT

MainConcept(이하 MC)의 양자화 모드는 크게 두 가지가 있다: CQT(Constant Q), AQP(Average Q).
그런데, AQP의 경우 옵션을 잘 적용해도 품질은 크게 변화도 없고, CQT에 비해 파일 크기도 크게 나왔다.

 

AQP 옵션은 내가 뭘 잘못 알고 있는 건가...

 

그리고, Main Concept HEVC 인코더는 AQP 모드에서 I, B, P 프레임의 Q 값을 다르게 지정할 수 있다.
다양하게 테스트해본 결과 B, P의 값을 I보다 각각 2, 4 높게 지정할 때가 가장 만족스러운 결과[각주:1]가 나왔다.

 

3. aq_mode(Adaptive Quntization)

테스트 결과 사용하는 쪽이 같은 크기에서 미묘하게 품질이 높게[각주:2] 나온다.

 

주황색 쪽이 AQ 적용

 

4. NVENC-driven vs NVENC-hybrid

Main Concept HEVC 인코더는 NVENC를 세 가지 방식으로 사용할 수 있다.
이 중 driven 이나 hybrid를 사용하는 것이 합리적인데, 양쪽 모두 SW로 사전 분석을 한 뒤 driven은 그냥 HW(NVENC)로 인코딩, hybrid는 SW와 HW를 병행해서 사용해서 인코딩한다.
driven 모드만 사용해도 순수 NVENC에 비해 생성되는 파일의 크기가 줄어든다.

 


hybrid가 훨씬 더 작은 파일을 생성할 것이라 기대했는데, 폭이 아주 크지는 않았다.
일단 조금이라도 줄어들기 때문에 hybrid 모드를 사용하기로 결정했다.

 

 

5. perf_level

AQP/CQT 값과는 별개로 성능(performance)를 별도로 지정할 수 있다.
기본은 15(balanced)이며, 30이 최고 품질.

 

25(회색)과 30은 결과물에 큰 차이가 없는데, 30을 적욕하면 미친듯이 느림


그런데, 30을 적용해보니 성능이 너무 떨어진다[각주:3].
약간의 성능 저하가 있어도 25에서 최고의 결과를 보여준다.


위 테스트 결과에서 최적의 조합을 적용하면 대략 아래와 같은 옵션을 적용해야 한다.

 

preset=main
perf_level=25
acc_type=nvenc
acc_mode=hybrid
[HEVC Settings]
chroma_format=1
bit_depth_chroma=8
bit_depth_luma=8
aq_mode=2
output_colorimetry.signal_range=2
[HEVC Layer 0000]
bit_rate_mode=1
qp_i=15
qp_p=17
qp_b=19
hrd_conformance=0

 

6. x264, x265, NVENC와의 비교

단연 품질 1위는 x265이다. 이건 HW 인코더가 쉽게 따라잡지 못할 하나의 벽일 것이다.
이전 Pascal 코어에 비해 상당한 향상이 있었던 Turing 코어[각주:4]에서도 x264 조차도 제대로 넘지 못했다.

 


그런데, Main Concept HEVC 인코더는 x264를 가뿐하게 뛰어넘고, x265에 꽤 근접하는 성능을 보여준다.

인코딩에 소요된 시간과 함께 보면 더 놀랍다.

 

 

순수한 NVENC에 비해선 2배 안팎의 시간밖에[각주:5] 소요되지 않고, x264의 절반 수준이다.

 

즉, 인코딩은 x264보다 훨씬 빠른데, 품질은 x265에 육박하는 수준을 달성한 것이다.

 

두줄 결론
1. MainConcept 인코더 킹왕짱
2. hybrid 모드에 perf_level=25 적용하여 CQT 적용 추천

 

 

  1. 이 값은 Main Concept사에서 제공한 예제 코드에 반영된 값이기도 함 [본문으로]
  2. 첫 테스트에선 차이가 많이 나는 것으로 봤는데, 파라미터를 잘못 지정한 결과여서 다시 테스트해서 포스팅을 수정함 [본문으로]
  3. 아예 HW 인코더가 동작하지 않는 듯 [본문으로]
  4. Ampere는 Turing과 nvenc가 동일함 [본문으로]
  5. 애초에 NVENC의 인코딩 속도가 너무 빠름 [본문으로]

공유하기

facebook twitter kakaoTalk kakaostory naver band

본문과 관련 있는 내용으로 댓글을 남겨주시면 감사하겠습니다.

비밀글모드

  1. Stella
    x265와 근접한 성능인데 속도를 보면 굉장하네요 ㄷㄷ
    다만 생각보다 가격이 비싸다는게..
    2021.05.22 15:51