NVENC

**NVENC**(Nvidia Encoder의 약자)language=en-us는 엔비디아 그래픽 카드에 있는 기능으로, 비디오 인코딩을 수행하여 CPU에서 이 컴퓨팅 집약적인 작업을 GPU의 전용 부분으로 오프로드한다. 이 기능은 2012년 3월 케플러 기반 지포스 600 시리즈 (GT 610, GT620 및 GT630은 페르미 아키텍처)와 함께 도입되었다.access-date=2017-11-12date=2014-02-18 이 인코더는 VMix, 와이어캐스트, OBS, 반디캠과 같은 많은 라이브 스트리밍 및 녹화 프로그램과 어도비 프리미어 프로 또는 다빈치 리졸브와 같은 비디오 편집 앱에서 지원된다. 또한 엔비디아의 지포스 익스피리언스 소프트웨어에 포함된 쉐어 게임 캡처와도 함께 작동한다.access-date=2016-08-17access-date=2017-12-19url-status=dead 2023년 3월까지 소비자용 지포스 그래픽 카드는 설치된 카드 수에 관계없이 최대 3개의 동시 인코딩 비디오 스트림만 공식적으로 지원하지만, 이 제한은 리눅스 및 윈도우 시스템에서 드라이버에 비공식 패치를 적용하여 우회할 수 있다. 이렇게 하면 GPU 및 드라이버의 기능을 사용하여 캡처 속도를 높이는 빠른 데스크톱 캡처 API인 NVIDIA Frame Buffer Capture (NVFBC)도 잠금 해제된다.publisher=GitHub 전문가용 카드는 카드 모델 및 압축 품질에 따라 카드당 3개에서 무제한의 동시 스트림을 지원하며, 2023년에는 이 제한이 완화되어 최대 5개의 동시 인코딩 비디오 스트림을 허용한다.access-date=26 March 2023 2024년 1월부터는 8개의 동시 인코딩 비디오 스트림이 기준이 되었다.title=Video Encode and Decode GPU Support Matrix 엔비디아 칩에는 또한 CPU에서 GPU의 전용 부분으로 비디오 디코딩을 오프로드하는 온보드 디코더인 NVDEC (**Nv**idia **Dec**oder의 약자)가 있다.
# 버전
NVENC는 첫 번째 케플러 GPU (GK104)와 함께 도입된 이후 여러 하드웨어 개정을 거쳤다.publisher=Nvidia {| class="wikitable" |+NVENC 요약access-date=2020-08-22access-date=2020-08-22 ! colspan="3" |GPU 하드웨어 ! colspan="5" |H.264 (AVC) (H.264에서 NVENC는 항상 B 프레임 지원, 최대 4096×4096 해상도를 제공한다) ! colspan="7" |H.265 (HEVC) ! colspan="1" |AV1 |- ! rowspan="2" |NVENC 세대 ! rowspan="2" |GPU 코드명 ! rowspan="2" |칩당 NVENC ! colspan="3" |크로마 ! rowspan="2" |무손실 코딩 ! rowspan="2" |색상 깊이 ! colspan="3" |크로마 ! rowspan="2" |무손실 코딩 ! rowspan="2" |해상도 ! rowspan="2" |색상 깊이 ! rowspan="2" |B 프레임 ! rowspan="2" |AV1 |- ! 4:2:0 ! 4:2:2 ! 4:4:4 ! 4:2:0 ! 4:2:2 ! 4:4:4 |- | rowspan="4" |1세대 | GK110 | rowspan="4" text=1 | rowspan="4" Ya | rowspan="4" Na | rowspan="4" Na | rowspan="4" Na | rowspan="4" 8비트 | colspan="7" rowspan="4" H.265 미지원 | rowspan="4" AV1 미지원 |- | GK107 |- | GK106 |- | GK104 |- | rowspan="1" |2세대 | GM107 | text=1 | rowspan="1" Ya | rowspan="1" Na | Ya | Ya | rowspan="1" 8비트 | colspan="7" rowspan="1" H.265 미지원 | rowspan="4" AV1 미지원 |- | rowspan="3" |3세대 | GM206 | rowspan="1" text=1 | rowspan="3" Ya | rowspan="3" Na | rowspan="3" Ya | rowspan="3" Ya | rowspan="3" 8비트 | rowspan="3" Ya | rowspan="3" Na | Y? N? | rowspan="3" Na | rowspan="3" 4096 x 4096 | rowspan="3" 8비트 | rowspan="3" Na |- | GM204 | rowspan="2" text=2 | rowspan="2" Na |- | GM200 |- | rowspan="7" |4세대 | GP108 | 0 | colspan="13" NVENC 인코더 없음 |- | GP107 | rowspan="2" text=1 | rowspan="12" Ya | rowspan="12" Na | rowspan="12" Ya | rowspan="12" Ya | rowspan="12" 8비트 | rowspan="12" Ya | rowspan="12" Na | rowspan="12" Ya | rowspan="12" Ya | rowspan="5" text=8192 x 8192 | rowspan="12" text=10비트 | rowspan="8" Na | colspan="11" rowspan="12" AV1 미지원 |- | GP106 |- | GP104-2xx+ | rowspan="1" text=2 |- | GP104-1xx | text=1 |- | GP102 | text=2 |- | GP100 | rowspan="2" text=3 | 4096 x 4096 |- | rowspan="2" |5세대 | GV10x | rowspan="6" text=8192 x 8192 |- | TU117 | rowspan="5" text=1 |- | rowspan="4" |6세대 | TU116 | rowspan="4" Ya |- | TU106 |- | TU104 |- | TU102 |- | rowspan="5" |7세대 | GA107 | rowspan="4" text=1 | rowspan="4" Ya | rowspan="4" Na | rowspan="4" Ya | rowspan="4" Ya | rowspan="4" 8비트 | rowspan="4" Ya | rowspan="4" Na | rowspan="4" Ya | rowspan="4" Ya | rowspan="4" text=8192 x 8192 | rowspan="4" text=10비트 | rowspan="4" Ya | rowspan="4" 디코딩만 |- | GA106 |- | GA104 |- | GA102 |- | GA100language=en-US | 0 | colspan="13" NVENC 인코더 없음 |- | rowspan="6" |8세대 | AD107 | rowspan="3" text=1 | rowspan="6" Ya | rowspan="6" Na | rowspan="6" Ya | rowspan="6" Ya | rowspan="6" 8비트 | rowspan="6" Ya | rowspan="6" Na | rowspan="6" Ya | rowspan="6" Ya | rowspan="6" text=8192 x 8192 | rowspan="6" text=10비트 | rowspan="6" Ya | rowspan="6" Ya |- | AD106 |- | AD104-250 |- | AD104-400 | rowspan="3" text=2 |- | AD103 |- | AD102 |- | rowspan="5" |9세대 | GB207 | rowspan="3" text=1 | rowspan="5" Ya | rowspan="5" Ya | rowspan="5" Ya | rowspan="5" Ya | rowspan="5" text=10비트 | rowspan="5" Ya | rowspan="5" Ya | rowspan="5" Ya | rowspan="5" Ya | rowspan="5" text=8192 x 8192 | rowspan="5" text=10비트 | rowspan="5" Ya | rowspan="5" Ya |- | GB206 |- | GB205 |- | GB203 | text=2 |- | GB202 | text=3 |- ! rowspan="2" |NVENC 세대 ! rowspan="2" |GPU 코드명 ! rowspan="2" |칩당 NVENC ! colspan="3" |크로마 ! rowspan="2" |무손실 코딩 ! rowspan="2" |색상 깊이 ! colspan="3" |크로마 ! rowspan="2" |무손실 코딩 ! rowspan="2" |해상도 ! rowspan="2" |색상 깊이 ! rowspan="2" |B 프레임 ! rowspan="2" |AV1 |- ! 4:2:0 ! 4:2:2 ! 4:4:4 ! 4:2:0 ! 4:2:2 ! 4:4:4 |}
## 1세대, 케플러 GK1xx
모든 케플러 기반 GPU가 공유하는 1세대 NVENC는 H.264 하이 프로파일(YUV420, I/P/B 프레임, CAVLC/CABAC), H.264 SVC Temporal Encode VCE 및 디스플레이 인코드 모드 (DEM)를 지원한다. 엔비디아 문서에 따르면 1920×1080 해상도에서 최대 인코더 처리량은 실시간의 8배이다 (여기서 기준 "1배"는 30Hz에 해당한다). 실제 처리량은 선택한 사전 설정, 사용자 제어 매개변수 및 설정, GPU/메모리 클럭 주파수에 따라 달라진다. 게시된 8배 등급은 NVENC 고성능 사전 설정을 사용하여 달성할 수 있으며, 이는 압축 효율성과 품질을 희생하고 인코더 처리량을 높인다. 고품질 사전 설정은 훨씬 느리지만 압축 아티팩트가 적게 발생한다.
## 2세대, 맥스웰 GM107
1세대 맥스웰 아키텍처와 함께 도입된 2세대 NVENC는 고성능 HP444 프로파일(YUV4:4:4, 예측 무손실 인코딩) 지원을 추가하고 인코더 처리량을 실시간의 16배까지 증가시켰는데, 이는 고성능 사전 설정으로 1080p @ 480Hz에 해당한다. 맥스웰 GM108은 NVENC 하드웨어 인코더를 지원하지 않는다.
## 3세대, 맥스웰 GM20x
2세대 맥스웰 아키텍처와 함께 도입된 3세대 NVENC는 고효율 비디오 코딩(HEVC, H.265라고도 함) 비디오 압축 알고리즘을 구현하고, H.264 인코더의 처리량을 4K 해상도 60Hz(2160p60)까지 커버할 수 있도록 향상시켰다. 그러나 HEVC 인코딩 시 B 프레임을 지원하지 않는다(I 프레임과 P 프레임만 지원한다). NVENC HEVC 코딩 트리 유닛(CU)의 최대 크기는 32(HEVC 표준은 최대 64 허용)이고, 최소 CU 크기는 8이다. HEVC 인코딩은 Sample Adaptive Offset (SAO)도 지원하지 않는다. 적응형 양자화, 예측 속도 제어, 적응형 B 프레임 (H.264만 해당) 및 적응형 GOP 기능은 Nvidia Video Codec SDK 7 출시와 함께 추가되었다.website=on-demand.gputechconf.com 이러한 기능은 하드웨어 가속을 위해 CUDA 코어를 사용한다. SDK 7은 두 가지 형태의 적응형 양자화를 지원한다. 공간 AQ (H.264 및 HEVC)와 시간 AQ (H.264만 해당)이다. 엔비디아의 소비자 등급 (지포스) 카드와 일부 로우엔드 전문가용 쿼드로 카드는 세 개의 동시 인코딩 작업으로 제한된다. 하이엔드 쿼드로 카드는 이러한 제한이 없다.
## 4세대, 파스칼 GP10x
4세대 NVENC는 HEVC Main10 10비트 하드웨어 인코딩을 구현한다. 또한 이전 세대 NVENC에 비해 4K H.264 및 HEVC 인코딩 성능을 두 배로 향상시켰다. HEVC 8K, 4:4:4 크로마 서브샘플링, 무손실 인코딩 및 샘플 적응형 오프셋(SAO)을 지원한다. Nvidia Video Codec SDK 8은 파스칼 전용 가중 예측 기능을 추가했다 (CUDA 기반). 가중 예측은 인코딩 세션이 B 프레임 (H.264)으로 구성된 경우에는 지원되지 않는다. HEVC 인코딩에는 B 프레임 지원이 없으며, 최대 CU 크기는 32×32이다. NVIDIA GT 1030과 모바일 쿼드로 P500은 NVENC 인코더를 지원하지 않는 GP108 칩이다. 노트북 그래픽에서 엔비디아 MX 그래픽은 맥스웰 세대 GM108 또는 파스칼 세대 GP108 칩을 기반으로 하므로 NVENC를 포함하지 않는다.language=pl 지포스 MX350은 제조 과정에서 NVENC 인코더가 비활성화된 GP107 칩이다.
## 5세대, 볼타 GV10x/튜링 TU117
볼타 NVENC는 파스칼의 NVENC와 유사한 성능을 가진다. HEVC B-프레임은 지원하지 않는다. 모바일 그래픽에서는 다른 대부분의 지포스 MX 시리즈 그래픽과 마찬가지로, 지포스 MX450은 TU117 칩으로 하드웨어 인코더가 제조 과정에서 영구적으로 비활성화되어 NVENC를 지원하지 않는다. 그러나 지포스 MX550은 하드웨어 인코더가 제조 단계에서 활성화되어 NVENC를 지원한다.
## 6세대, 튜링 TU10x/TU116
6세대 NVENC는 HEVC 8K 인코딩을 30 FPS로 구현하고, HEVC B-프레임 및 HEVC B-프레임을 참조로 사용하며 (각 및 중간 모드 지원language=en) 알파 HEVCaccess-date=2021-03-24를 지원하며 HEVC는 최대 25%, H.264는 최대 15%의 비트레이트 절감 효과를 제공한다. 엔비디아 지포스 GTX 1650의 초기 출시는 튜링 NVENC 대신 볼타 NVENC를 사용했기 때문에 이 세대에서 제외되었다. 엔비디아는 2020년에 GTX 1650 카드의 NVENC 인코더를 튜링 엔진을 사용하도록 업데이트했다.language=en-us GTX 1650 Super는 원래 GTX 1650에 사용된 TU117 대신 TU116을 기반으로 하므로 튜링 NVENC 엔진을 사용한다.access-date=2021-03-24
## 7세대, 암페어 GA10x
암페어는 본질적으로 튜링과 동일한 NVENC 세대 엔진을 가지고 있다.access-date=September 21, 2022 유일한 실질적인 차이점은 NVDEC가 AV1 디코딩(필름 그레인 포함)을 지원하게 되었다는 것이다. 엔트리 레벨 모바일 그래픽에서는 GA107 칩 기반 지포스 MX570이 두 가지 버전으로 출시되는데, 그 중 하나 (지포스 MX570 A)는 제조 과정에서 하드웨어 디코더와 인코더가 영구적으로 비활성화된다.
## 8세대, 에이다 러브레이스 AD10x
엔비디아는 에이다 러브레이스 GPU에서 8K 10비트 60FPS AV1 고정 기능 하드웨어 인코더를 갖춘 차세대 NVENC를 발표했다.access-date=September 21, 2022access-date=September 21, 2022
## 9세대, 블랙웰 GB20X
4:2:2 크로마 서브샘플링과 AV1 초고품질 모드 지원이 도입되었다. 또한 이전 세대보다 5% 더 효율적이라고 한다.
# 운영 체제 지원
엔비디아 NVENC SIP 코어는 장치 드라이버에서 지원되어야 한다. 드라이버는 NVENC에 대해 하나 이상의 인터페이스(예: OpenMAX IL)를 제공한다. NVENC SIP 코어는 사유 NVENC API뿐만 아니라 DXVA 및 VDPAUlanguage=en API를 통해 액세스할 수 있다. 엔비디아의 지포스 드라이버와 함께 번들로 제공된다. NVENC는 윈도우 및 리눅스 운영 체제에서 사용할 수 있다. 자유-오픈 소스 Nouveau 장치 드라이버는 엔비디아 NVENC를 지원하지 않는다.publisher=Freedesktop.org
# 응용 소프트웨어 지원
* 어도비 프리미어 프로는 2020년 5월 버전 14.2에서 NVENC를 지원하기 시작했다language=en-US * AJA Bridge Liveurl=https://www.aja.com/products/bridge-live * Avidemux는 2016년부터 H.264 또는 H.265로 NVENC를 지원해 왔다[https://www.videohelp.com/software/AviDemux/version-history#changelog AVIDemux 변경 로그 * 반디컷 * CyberLink PowerDirector는 2016년 버전 16 GM7 3424 베타 패치 이후 NVENC를 지원한다사이버링크 포럼 공식 게시물 * 다빈치 리졸브 스튜디오는 H.264 또는 H.265로 비디오를 내보낼 때 NVENC를 지원한다website=forum.blackmagicdesign.com * FFmpeg는 2014년부터 NVENC를 지원해왔으며,title=nvenc.c H.264 hardware encoding using nvidia nvenc 엔비디아 드라이버에서 지원된다title=QUADRO DESKTOP/QUADRO NOTEBOOK DRIVER RELEASE 375 * GStreamer는 nvcodec 플러그인을 통해 지원된다title=Nvcodec * 핸드브레이크는 버전 1.2.0 (2018년 12월)부터 H.264 및 H.265용 NVENC를 지원했다핸드브레이크 1.2.0 출시 * HitFilm express/pro는 타임라인에서 비디오를 미리 보거나 H.264 또는 H.265로 비디오를 내보낼 때 NVENC를 지원한다직원이 소프트웨어가 인코더와 상호 작용하는 방식에 문제가 있지만 존재한다고 말하는 포럼 게시물 * Jellyfin은 실시간 트랜스코딩을 위한 NVENC를 지원한다Jellyfin * Logitech Capture * MacroSystem BogartSE는 v9.4 (2017년 10월)부터 NVENC 내보내기를 지원하고 UHD-디스크 인코딩은 v11.3 (2019년 10월)부터 지원한다Casablanca Expert의 MacroSystem Arabesk 8 정보 * 미디어코더 * Open Broadcaster Software (OBS) * 샷컷 * StaxRip * Turbo Play * VidCoder * VideoProc * VMix는 2016년부터 NVENC를 지원해왔으며, 버전 27 (2024년 1월)부터 H.265 및 AV1 지원이 시작되었다vMix 27 출시!
# GPU 처리량
인코딩 처리량 비교access-date=2021-03-24 {| class="wikitable" |- | 스트림 ! H.264 인코딩 (1080p30) |- ! GM204(테슬라 M6) | 18 |- ! GM107(테슬라 M10) | 28 |- ! GM200(테슬라 M40) | 18 |- ! GM204(테슬라 M60) | 36 |- ! GP104(테슬라 P4) | 24 |- ! TU104(테슬라 T4) | 32 |- ! P100 | 36 |- ! V100 | 36 |}