반응형

엔비디아의 GeForce30 시리즈에 탑재된 NVENC는 20 시리즈의 그것과 동일하다.

하지만, AMD의 Big Navi에 탑재된 VCN은 기존 버전에 비해 향상되었다고 해서 기대하고 있었다.

 

그런데, 글카의 가격을 생각했을 때 이 업글이 합리적인지 다시 한번 판단해보기로 했다.

대안으로 고민해본 대상은 MainConcept의 HEVC 인코더 FFmpeg 플러그인.

 

 

MainConcept 사는 SDK, FFmpeg 플러그인 등등 다양한 방식의 인코더를 판매한다.

가장 중요한 기능은 QSV나 NVENC를 활용한 SW+HW 하이브리드 인코딩.

이 중 나에게 딱 맞는 놈은 FFmpeg 플러그인[각주:1]이다.

 

적절한지 여부를 판단하는 방식은 언제나와 동일하다.

영상 하나를 다양하게 인코딩해본 뒤 SSIM을 계산해보는 것.

사용되는 영상은 언제나 그렇든 SINTEL이다.

 

 

코로나-19 시국에 설연휴라고 갈 데도 없어서 테스트용 비디오 인코더를 정성들여 만들어봤다.

각종 옵션을 선택할 수 있게 했으며, perf_level의 경우 배치 처리를 가능하도록 했다.

 

귀찮은 인코딩은 한방에 하도록 시키는 게 제맛

 

그런데, 다운받은 시험용 버전은 있을 기능은 다 있으며 워터마크를 찍도록 되어있다.

즉, 이 영상을 있는 그대로 화질을 비교해선 안 된다.

 

워터마크 어쩔[...]

 

그래서, 이전에 만들어뒀던 PSNR/SSIM 추출 프로그램에 영상을 crop 하는 기능을 추가했다.

 

어쩌긴... 지우고 비교하면 됨. 역시 FFmpeg 짱짱맨

 

그리곤 열심히 돌린다.

우선 x264/x265/NVENC...

 

각 옵션 적용 후 인코딩된 파일의 크기, 인코딩 시간, PSNR, SSIM 등등

 

모든 준비가 됐으니 이제 MainConcept 인코더를 마구마구 돌릴 차례...

 

 

MainConcept 인코더는 main, 4k 외에도 DASH, HLS 등의 스트리밍 전용 프리셋까지 다양한 프리셋을 지원한다.

이 값들을 테스트해본 결과 내 환경에선 main preset이 최선의 결과를 보여줬다.

main preset 외의 내용들은 여백이 부족하여 생략.

 

main preset에서 다양한 조건으로 돌린 결과는 아래 그래프와 같다.

여기서 알아두어야 할 내용은 full/driven/hybrid 모드.

S/W: CPU만을 사용하여 인코딩

full: GPU만 사용하여 인코딩

driven: SW로 분석한 뒤 GPU만으로 인코딩

hybrid: SW로 분석한 뒤 SW와 GPU를 동시에 사용하여 인코딩

 

인코딩 결과는 아래와 같다.

full 모드가 가장 파일의 크기가 크고, S/W가 (당연히) 가작 크기가 작다.

hybrid 모드의 결과가 S/W와 유사한 수준이라는 점이 눈여겨 볼 만 하다.

 

 

위의 그래프만을 보면 인코딩 모드 간 차이가 큰 것 같은데, 실은 기존의 방식들과 비교하면 미미한 수준이다.

즉, x264, x265, NVENC 등에서는 파라미터에 따라 품질/용량의 차이가 큰 편이었는데, MC는 그렇지 않다는 것.

생성되는 파일의 크기는 대동소이[각주:2]하고, 품질만 좀 달라지는 수준이다.

 

더불어, 옵션에 따라서는 x264를 능가하며, 사실상 x265에 근접한 용량 대비 품질을 보인다는 점도 눈에 띈다.

 

hybrid 모드의 성능 정도면 NVENC는 능가했다고 볼 수 있음, 단, lossless 모드는 불가능함

 

하지만, 이런 품질을 보여주더라도 인코딩에 소요되는 시간이 너무 길면 큰 효용 가치가 없다.

그래서 인코딩에 소요되는 시간을 비교해봤다.

X축은 생성된 파일의 크기인데, 그냥 그러려니 하는 수준으로 생각해도 무방함.

 

전체적으로 상식 범위 내의 수준이다. S/W는 최고화질에서 좀 많이 느림.

 

 

그리고, 이 소요시간 역시 x265와 비교하면 완전히 달라보인다.

뭘 어떻게 해도 x265가 더 느림.

즉, S/W 모드에서 최고 품질을 선택하는 것도 나름 꽤 의미가 있는 선택이라는 뜻.

물론, hybrid 모드는 인코딩 품질과 시간을 생각해보면 훌륭한 선택이다.

 

 

한줄 결론: RX6700은 잊고 MainConcept HEVC 인코더 지를 예정

 

 

  1. 온라인 방송도 관심 없고, SDK를 활용해서 뭔가를 개발할 생각도 없음 [본문으로]
  2. 이 점은 한편으론 단점으로 보이기도 함 [본문으로]
반응형

공유하기

facebook twitter kakaoTalk kakaostory naver band