메뉴 건너뛰기

본문시작

방문자

전체 : 32,025,418
오늘 : 8,605
어제 : 39,670
조회 수 3972 추천 수 1 댓글 4
?

단축키

Prev이전 문서

Next다음 문서

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

단축키

Prev이전 문서

Next다음 문서

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

웬 뚱딴지 같은 제목이냐 하실 분들도 계시겠지만, 일반적인 상황이 아니라 추가 그래픽 카드가 있는 상황이어서 하드웨어 가속 인코더를 사용하지만 CPU 사용 비중이 높은 소프트웨어 필터(대표적으로 샤나의 리사이즈/해상도 변경 필터인 scale)를 사용하는 경우에 한해서 드리는 말씀입니다.

 

좀 원론적인 얘기를 드리자면, 샤나에서 하드웨어 가속을 선택해서 얼마나 속도 향상을 얻을 수 있느냐 하는 문제에 대한 답을 구하기 위해서는 하드웨어 가속의 작동 메커니즘을 파악해야 합니다.

 

샤나에서 하드웨어 가속 인코딩, 그중에서도 NVENC를 이용하는 경우를 예를 들어 보겠습니다. (AMD의 AMF 계열 인코더는 샤나에서 메뉴로 제공하지 않습니다.)

 

'인코딩'이라고 통칭하는 재인코딩, 혹은 트랜스코딩 과정은 개념적으로 간략하게 다음과 같습니다. (워크플로우 자체는 샤나든 다른 프로그램이든 동일합니다.)

 


 

디코딩: 선택에 따라 소프트웨어 디코딩(CPU) vs 하드웨어 디코딩(GPU. 샤나에서는 DXVA2를 통해서만 가능했으나 4.9 버전부터는 D3D11, NVDEC 등 좀 더 다양해짐.)

 

---> 해상도 변경: 리사이징/해상도 변경 필터에 따라 CPU 또는 GPU가 담당하지만 샤나는 소프트웨어 필터인 scale(CPU)만 가능

        (+ 기타 필터 작업)

 

---> 인코딩: 소프트웨어 인코딩(예를 들면 HEVC(x265)나 H264(x264))은 CPU가, 하드웨어 인코딩(NVENC 계열)은 GPU가 담당

 


 

엔비디아 측에서는 하드웨어(GPU) 인코딩 시 해상도 변경(scaling)을 GPU 단계에서 할 수 있도록 하드웨어 필터인 NPP 필터 라이브러리를 제공하는데 이걸 FFmpeg에 포함시키기 위해서는 FFmpeg 바이너리를 컴파일하는 단계에서 해야 합니다. (--enable-libnpp) 샤나인코더는 이 기능을 제외했기 때문에 해상도 변경에 소프트웨어 필터(scale)를 사용해 CPU가 이 역할을 담당합니다.

 

따라서 Nvidia 계열 하드웨어 가속 관련해서 샤나에서는 두 가지 선택밖에 없습니다.

 

  1. [환경설정]에서 '하드웨어 가속 디코딩(DXVA2 또는 D3D11 또는 NVDEC)'을 선택
  2. NVENC 계열 코덱을 선택

 

엔비디아 그래픽 카드(NVENC가 가능한)가 따로 있다면 2번은 당연히 선택해야겠지요.

 

이 문제는 인텔 내장 그래픽 카드를 이용하려 할 때도 마찬가지입니다. 이때는 디코딩을 QSV로, 인코딩을 QSV 계열 코덱을 선택해야겠지요.

 

 

문제는 1번입니다.

 

요즘 나오는 CPU는 GPU를 내장하는 경우가 대부분이기 때문에 엔비디아 그래픽 카드가 따로 있다면 GPU가 두 개가 됩니다. CPU 내장 GPU(인텔의 경우 QSV가 가능한)를 GPU0, 그래픽 카드의 GPU를 GPU1이라고 한다면 가장 이상적인 상황은 1번을 선택할 때 GPU0이 디코딩을 담당해 GPU 간의 밸런스를 맞추는 것입니다. 그러나 문제는 샤나 내에서는 DXVA2/D3D11/NVDEC 옵션을 켜면 그걸 GPU1이 담당하게 된다는 겁니다. (그렇다고 해서 QSV를 선택하면 GPU0이 기능을 하느냐면, NVENC가 선택된 상황에서 QSV 하드웨어 가속 디코딩은 작동하지 않습니다.) 그래서 GPU1이 디코딩과 인코딩을 동시에 담당하여 작업 플로우는 GPU1 -> CPU -> GPU1으로 진행되는데, 대부분의 경우 병목 현상이 생겨 인코딩 성능이 저하되어 속도가 떨어집니다.

 

(이 현상은 다른 프로그램에서도 마찬가지로 발생합니다. FFmpeg CLI와 XMeida Recode를 통해서 확인했습니다.)

 

이때 CPU 점유율은 상당히 낮아집니다. 디코딩과 인코딩을 모두 GPU1이 담당하기 때문에 당연한 현상이겠지요.

 

결론적으로 말하자면, 하드웨어 가속 디코딩을 켜면 GPU1은 효율도 떨어지고 죽어나는데 CPU는 탱자탱자 놀게 됩니다. GPU0은 아예 모른 척하고요.

 

 

이 경우 하드웨어 가속 디코딩을 끄면 오히려 CPU가 디코딩을 담당하면서 CPU 점유율도 충분히 높아지고 더불어 GPU1의 인코딩 효율도 향상되어 속도가 올라가더군요. 물론 CPU의 성능이 충분히 괜찮고 이를 최대한 활용할 수 있어야 한다는 전제가 있긴 합니다.

 

 

----------------------------------------

 

 

속도 향상은 이렇게 해결하게 됐지만 의문은 남습니다.

 

"하드웨어 가속 디코딩을 GPU0이 담당하고 하드웨어 가속 인코딩은 GPU1이 담당하도록 할 수 없을까?"

 

이게 원래 불가능한 건지, 샤나 자체의 문제인지 제가 세팅을 못하는 건지 모르겠습니다. 저로서는 아무리 용을 써도 불가능하더군요.

혹시 이 문제에 대한 답을 알고 계시다면 댓글로 알려 주시면 감사하겠습니다. 그리고 그게 가능할 경우 속도 향상 효과가 있는지도 궁금하군요.

 

<- 이 문제에 대한 답변은 댓글로 추가했습니다.

  • ?
    핥아버지 2018.06.20 10:25
    많이 배워갑니다 인코딩옵션 많이 아시네요

    그런데 님이 주신 webm 프리셋을 사용해봤는데요

    hevc로 인코딩한거에 비해 깍두기 현상이 많이 생기던데

    님이 인코딩한 영상은 또 괜찮고.. 프리셋 그대로 사용한건데 말이에요

    그리고 비트레이트를 더 높일수 없나요? 4000이상
  • ?
    sSTSs 2018.06.20 14:43
    프리셋은 가이드라인으로만 생각하시면 됩니다. 원본의 화질과 원하는 목표 결과물의 해상도, 화질 등에 따라 당연히 옵션을 조정해서 써야 합니다.

    당연히 비트레이트도 높여서 시도해 볼 수 있죠. 단, 높아진 비트레이트에 맞춰 다른 옵션들도 조정하시는 게 좋습니다.

    예를 들어 비트레이트를 4000으로 주고 싶으시면,

    -crf 26 -b:v 4000k -minrate 2000k -maxrate 5600k

    와 같은 식으로 높아진 비트레이트에 맞춰 crf 값을 낮추고(낮출수록 고화질) minrate를 절반 정도, maxrate을 1.45배 정도 맞춰서 설정합니다.

    그리고 추가적으로 quality를 best로 하거나 speed를 4보다 낮은 정수값 (0~3)을 줘서 속도는 느린 대신 화질을 올릴 수도 있습니다. 예를 들어,

    -quality best -speed 4

    다른 옵션들은 굳이 수정할 필요가 없어 보입니다.

    옵션들의 의미와 설정값들을 알아 보시려면 Google의 권고안 문서를 참고하세요.

    https://developers.google.com/media/vp9/the-basics/

    한 가지 팁을 드리자면, 설정하신 값들이 제대로 작동하는지 미리 알아보시려면 좁은 구간(이전 인코딩에서 만족스럽지 못했던 부분)을 설정해서 테스트해 보시고 설정값을 계속 변경하면서 조정하시면 됩니다.
  • ?
    동물들의수다 2018.06.30 14:57
    NVENC 이용해 인코딩 하는데 사나인코딩이 gpu 점유율이 낮아서 속도가 생각보다 안나오더라구요 이번에 4.9버젼으로 업데이트 하고 그래픽드라이버도 업데이트 해서 좀 달라졌을려나했더니 점유율은 역시 비슷하더군요 10프로에서 30프로 왔다갔다 합니다. 요새 풀hd 고화질 고용량이 믾이 나와 기본 hd사이즈로 인코딩해서 폰에 넣어 보는데 그냥 시피유로만 인코딩하면 답이 안나오더라구요 gpu 점유율이 낮아도 확실히 그래픽카드 써서 인코딩 하는게 배 이상 빠릅니다.
  • ?
    sSTSs 2018.08.23 13:29

    좀 더 찾아본 결과, 위의 질문

     

    "하드웨어 가속 디코딩을 GPU0이 담당하고 하드웨어 가속 인코딩은 GPU1이 담당하도록 할 수 없을까?"

     

    에 대한 답은, 제가 현재까지 파악하기로는 '불가능하다'입니다.

    디코딩과 인코딩을 서로 다른 GPU가 담당하는 것은 structure가 다른 두 개의 GPU surface를 동시에 이용하는 것이므로 현재 기술로는 불가능한 것 같습니다.

     

    샤나 버전 4.9부터 하드웨어 가속 디코딩이 DXVA2 외에 D3D11(MS Direct3D 11), NVDEC(Nvidia CUDA 하드웨어 디코더), QSV(Intel Quick Sync Video) 등 다양해졌습니다만 기본적으로 중간에 필터 처리 과정에서 소프트웨어 필터(대표적으로 해상도 변경을 위한 scale 필터)를 사용하게 된다면 디코딩을 하드웨어 가속을 하더라도 병목 현상 때문에 속도 저하가 생기는 것은 마찬가지입니다. 그래서 차라리 디코딩을 소프트웨어적으로 처리하는 것(하드웨어 가속 디코딩을 꺼서)이 오히려 속도 향상에 도움이 되는 것은 동일한 것 같습니다.


List of Articles
번호 제목 글쓴이 날짜 조회 수 추천 수
공지 샤나인코더 4.9 버전부터 추가된 편의기능 >>프리셋 메뉴 및 설정 메뉴를 빠르게 열기<< file 샤나 2018.06.28 2900 0
공지 AMD 플루이드모션 60프레임 인코딩 (real 프레임레이트) 설정방법 (ffmpeg 프레임 보간기법) 17 file 능소화 2017.06.06 9760 0
공지 태-영화체(유료폰트) 와 비슷한 a시네마 무료 폰트 올려드립니다. [링크참조] 2 file 능소화 2017.04.02 9948 0
공지 [TIP] 기존의 '귀여운 소녀' 아이콘으로 돌아가기 1 file 유밍 2017.03.30 3660 0
공지 ※ 설정방법 / 프리셋파일포함 ※ 샤나인코더외부 자막 Mux 기능 추가 [v 4.5.1] 9 file 능소화 2017.03.30 7301 1
46 AV1 코덱의 현재 상황 (인코딩 테스트 - FFmpeg 와 rav1e) 2 file sSTSs 2018.10.11 613 0
45 여러가지 코덱으로 저화질 인코딩 해 보았습니다 (AV1 포함) 7 마소리스 2018.09.26 936 0
44 webm VP9 멀티스레드 활성화하는 방법, 속도 향상시키는 방법 마소리스 2018.09.25 455 0
43 "비트레이트를 원본보다 높게 주면 원본보다 퀄리티가 나아질 수 있다"는 주장에 대해 3 sSTSs 2018.09.19 1231 0
42 SSIM, PSNR로 측정한 NVENC 인코딩 4 file sSTSs 2018.09.09 438 0
41 인코딩된 파일의 PSNR, SSIM 값 계산하기 file sSTSs 2018.09.05 317 0
40 8비트 원본을 10비트로 인코딩하면 8비트로 인코딩할 때보다 화질이 더 낫다? 4 sSTSs 2018.09.04 757 0
39 샤나에서 HEVC(x265)로 2패스 인코딩하기 10 file sSTSs 2018.08.28 1083 0
38 해상도 변경 + 하드웨어 가속 인코딩 시 속도 향상 12 file sSTSs 2018.08.23 1488 0
37 부드러운 움직임의 60 프레임 인코딩 11 sSTSs 2018.07.16 2884 0
36 tonemap, zscale 필터를 이용한 HDR->SDR 변환 (FFmpeg CLI) 3 file sSTSs 2018.06.26 624 0
» 하드웨어 가속 디코딩을 꺼서 인코딩 속도를 높이기 4 sSTSs 2018.06.19 3972 1
34 소장용 고화질 1080p 영상 인코딩 팁 퍼플군단 2018.06.12 4534 0
33 샤나인코더와 자막, Q&A 1 file sSTSs 2018.05.31 1447 0
32 QuickTime/Apple TV에서 재생이 안 되는 HEVC 동영상 문제 해결 1 file sSTSs 2018.05.21 729 0
31 HD(720p) 이상 고해상도 동영상을 HD의 WebM(VP9, Opus 코덱)으로 인코딩하기 file sSTSs 2018.05.20 1390 0
30 wINDOWS10 멀티 데스크톱 정군 2018.05.07 690 0
29 HDR 영상 인코딩하기! 8 황금별똥 2018.01.23 3376 0
28 ASS 자막 파일을 aegisub으로 작업 시 libass를 사용하세요. file 샤나 2018.01.20 1261 1
Board Pagination Prev 1 2 3 Next
/ 3