반응형

구매한지 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