Nvidia NVENC
Nvidia NVENC (förkortning av Nvidia Enc oder) är en funktion i Nvidia -grafikkort som utför videokodning och överför denna beräkningsintensiva uppgift från CPU:n till en dedikerad del av GPU :n . Den introducerades med den Kepler -baserade GeForce 600-serien i mars 2012.
Kodaren stöds i många livestreaming- och inspelningsprogram, såsom vMix , Wirecast , Open Broadcaster Software (OBS) och Bandicam , samt videoredigeringsappar, såsom Adobe Premiere Pro eller DaVinci Resolve . Det fungerar även med Share game capture, som ingår i Nvidias programvara GeForce Experience.
Konsumentriktade GeForce- grafikkort stöder officiellt inte mer än 3 samtidigt kodande videoströmmar, oavsett antalet installerade kort, men denna begränsning kan kringgås på Linux- och Windows -system genom att applicera en inofficiell patch på drivrutinerna . Genom att göra det låser man också upp NVIDIA Frame Buffer Capture (NVFBC), en snabb desktop capture API som använder funktionerna hos GPU:n och dess drivrutin för att accelerera infångningen. Professionella kort stöder mellan 3 och obegränsade samtidiga strömmar per kort, beroende på kortmodell och komprimeringskvalitet.
Nvidia-chips har också en inbyggd dekoder, NVDEC (förkortning för Nv idia Dec oder), för att ladda av videoavkodning från CPU:n till en dedikerad del av GPU:n.
Versioner
NVENC har genomgått flera hårdvaruversioner sedan introduktionen med den första Kepler GPU (GK104).
GPU hårdvara |
H.264 (AVC)
(I H.264 har NVENC alltid stöd för B Frame, max 4096x4096 upplösning och max 8-bitars djup) |
H.265 (HEVC) | AV1 | |||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
NVENC Generation | GPU-kodnamn | NVENC per chip | Chroma | Förlustfri kodning | Chroma | Förlustfri kodning | Upplösning | Färgdjup | B Ramar | AV1 | ||||||||||||
4:2:0 | 4:4:4 | 4:2:0 | 4:4:4 | |||||||||||||||||||
1:a Gen | GK110 | 1 | H.265 stöds inte | AV1 stöds inte | ||||||||||||||||||
GK107 | ||||||||||||||||||||||
GK106 | ||||||||||||||||||||||
GK104 | ||||||||||||||||||||||
2nd Gen | GM108 | 0 | Inga NVENC-kodare tillgängliga | |||||||||||||||||||
GM107 | 1 | H.265 stöds inte | AV1 stöds inte | |||||||||||||||||||
3:e Gen | GM208 | 1 | ||||||||||||||||||||
GM206 | Y? N? | Y? N? | 4096 x 4096 | 8-bitars | ||||||||||||||||||
GM204 | 2 | |||||||||||||||||||||
GM200 | ||||||||||||||||||||||
4:e Gen | GP108 | 0 | Inga NVENC-kodare tillgängliga | |||||||||||||||||||
GP107 | 1 | 8192 x 8192 | 10-bitars | AV1 stöds inte | ||||||||||||||||||
GP106 | ||||||||||||||||||||||
GP104-2xx+ | 2 | |||||||||||||||||||||
GP104-1xx | 1 | |||||||||||||||||||||
GP102 | 2 | |||||||||||||||||||||
GP100 | 3 | 4096 x 4096 | ||||||||||||||||||||
5:e Gen | GV10x | 8192 x 8192 | ||||||||||||||||||||
TU117 | 1 | |||||||||||||||||||||
6:e Gen | TU116 | |||||||||||||||||||||
TU106 | ||||||||||||||||||||||
TU104 | ||||||||||||||||||||||
TU102 | ||||||||||||||||||||||
7:e Gen | GA106 | 1 | 8192 x 8192 | 10-bitars | ||||||||||||||||||
GA104 | ||||||||||||||||||||||
GA102 | ||||||||||||||||||||||
GA100 | 0 | Inga NVENC-kodare tillgängliga | ||||||||||||||||||||
8:e Gen | AD104 | 2 | 8192 x 8192 | 10-bitars | ||||||||||||||||||
AD103 | ||||||||||||||||||||||
AD102 |
Första generationen, Kepler GK1xx
Den första generationen av NVENC, som delas av alla Kepler -baserade GPU:er, stöder H.264 högprofil (YUV420, I/P/B-ramar, CAVLC/CABAC), H.264 SVC Temporal Encode VCE och Display Encode Mode (DEM).
NVidias dokumentation anger en maximal kodargenomströmning på 8× realtid vid en upplösning på 1920×1080 (där baslinjen "1×" är lika med 30 Hz). Den faktiska genomströmningen varierar på den valda förinställningen, användarkontrollerade parametrar och inställningar samt GPU/minnets klockfrekvenser. Det publicerade betyget 8× kan uppnås med NVENC högpresterande förinställning, som offrar komprimeringseffektivitet och kvalitet för kodarens genomströmning. Den högkvalitativa förinställningen är betydligt långsammare men ger färre komprimeringsartefakter
Andra generationen, Maxwell GM107
Introducerad med första generationens Maxwell- arkitektur, andra generationens NVENC lägger till stöd för den högpresterande HP444-profilen (YUV4:4:4, prediktiv förlustfri kodning), och ökar kodarens genomströmning upp till 16× realtid, vilket motsvarar cirka 1080p @ 480 Hz med högpresterande förinställning.
Maxwell GM108 har inte stöd för NVENC-hårdvarukodare.
Tredje generationen, Maxwell GM20x
Introducerad med andra generationens Maxwell-arkitektur, implementerar tredje generationens NVENC videokomprimeringsalgoritmen High Efficiency Video Coding (alias HEVC, H.265) och ökar även H.264-kodarens genomströmning för att täcka 4K-upplösning vid 60 Hz (2160p60). Den stöder dock inte B-ramar för HEVC-kodning (bara I- och P-ramar) . Den maximala storleken på NVENC HEVC- kodningsträdenheten (CU) är 32 (HEVC-standarden tillåter maximalt 64), och dess minsta CU-storlek är 8.
HEVC- kodning saknar också Sample Adaptive Offset (SAO). Adaptiv kvantisering, framåtblickshastighetskontroll, adaptiva B-frames (endast H.264) och adaptiva GOP-funktioner lades till med lanseringen av Nvidia Video Codec SDK 7. Dessa funktioner förlitar sig på CUDA-kärnor för hårdvaruacceleration.
SDK 7 stöder två former av adaptiv kvantisering; Spatial AQ ( H.264 och HEVC) och Temporal AQ (endast H.264).
Nvidias konsumentklassade (GeForce) kort och några av dess lägre professionella Quadro- kort är begränsade till tre samtidiga kodningsjobb. Dess mer avancerade Quadro-kort har inte denna begränsning.
Fjärde generationen, Pascal GP10x
Fjärde generationens NVENC implementerar HEVC Main10 10-bitars hårdvarukodning. Den fördubblar också kodningsprestandan för 4K H.264 & HEVC jämfört med föregående generations NVENC. Den stöder HEVC 8K, 4:4:4 chroma subsampling , förlustfri kodning och sample adaptive offset (SAO).
Nvidia Video Codec SDK 8 lade till Pascals exklusiva Weighted Prediction-funktion ( CUDA -baserad). Viktad förutsägelse stöds inte om kodningssessionen är konfigurerad med B-ramar (H.264).
Det finns inget B-Frame-stöd för HEVC- kodning, och den maximala CU-storleken är 32×32.
NVIDIA GT 1030 och Mobile Quadro P500 är GP108-chips som inte stöder NVENC-kodaren.
I bärbar grafik inkluderar NVIDIA MX Graphics inte NVENC eftersom de är baserade på ett Maxwell -generation GM108 eller ett Pascal-generation GP108-chip. GeForce MX350 är ett GP107-chip vars NVENC-kodare är inaktiverad under tillverkningen.
Femte generationen, Volta GV10x/Turing TU117
Volta NVENC har liknande prestanda som Pascals NVENC. [1]
Den erbjuder inte stöd för HEVC B-ramar.
Inom mobil grafik, som med de flesta andra grafikkort i GeForce MX-serien, stöder inte GeForce MX450 NVENC eftersom det är ett TU117-chip vars hårdvarukodare är permanent inaktiverad vid tillverkningen. GeForce MX550 stöder dock NVENC eftersom dess hårdvarukodare förblir aktiverad på tillverkningsnivå.
Sjätte generationen, Turing TU10x/TU116
Sjätte generationens NVENC implementerar HEVC 8K-kodning vid 30 FPS, HEVC B-ramar och HEVC B-ramar som referens (med stöd för varje och mellanlägen) och Alpha HEVC-stöd och ger upp till 25 % bithastighetsbesparingar för HEVC och upp till 15 % bithastighetsbesparingar för H.264. Den första lanseringen av Nvidia GeForce GTX 1650 var dock undantagen från denna generation, eftersom den använde Volta NVENC istället för Turing. Nvidia uppdaterade NVENC-kodaren för GTX 1650-korten 2020 för att även använda Turing-motorn. GTX 1650 Super använder Turing NVENC-motorn eftersom den är baserad på TU116 snarare än TU117 som används i den ursprungliga GTX 1650.
Sjunde generationen, Ampere GA10x
Ampere har i princip samma NVENC-generationsmotor som Turing. Den enda väsentliga skillnaden är att NVDEC fick stöd för AV1- avkodning (med filmkorn).
Inom mobilgrafik på nybörjarnivå kommer den GA107-chipbaserade GeForce MX570 i två versioner, varav en (GeForce MX570 A) har hårdvaruavkodaren och kodaren permanent inaktiverade under tillverkningen.
Åttonde generationen, Ada Lovelace AD10x
Nvidia tillkännagav nästa generations NVENC med 8K 10-bitars 60FPS AV1 hårdvarukodare med fast funktion i Ada Lovelace GPU:er.
Stöd för operativsystem
Nvidia NVENC SIP- kärnan måste stödjas av enhetsdrivrutinen . Drivrutinen tillhandahåller ett eller flera gränssnitt (t.ex. OpenMAX IL) till NVENC. NVENC SIP-kärnan kan endast nås via det proprietära NVENC API (till skillnad från VDPAU API med öppen källkod).
Den levereras med Nvidias GeForce-drivrutin .
NVENC är tillgängligt för Windows och Linux operativsystem. Den fria och öppen källkod nouveau enhetsdrivrutinen stöder inte Nvidia NVENC.
Programvarustöd
- Adobe Premiere Pro lade till NVENC-stöd i version 14.2 i maj 2020
- AJA Bridge Live
- Avidemux har stött NVENC sedan åtminstone 2016, i H.264 eller H.265
- Bandicut
- DaVinci Resolve Studio vid export av video i H.264 eller H.265
- FFmpeg har stödt NVENC sedan 2014 och stöds i Nvidia-drivrutiner
- HandBrake har stöd för NVENC sedan version 1.2.0 (december 2018), för H.264 och H.265
- HitFilm express/pro när du förhandsgranskar video på tidslinjen eller exporterar video i H.264 eller H.265
- Jellyfin har stöd för NVENC för omkodning i realtid
- Logitech Capture
- MacroSystem BogartSE stöder NVENC-export sedan v9.4 (oktober 2017) och UHD-Disc- kodning sedan v11.3 (oktober 2019)
- MediaCoder
- Open Broadcaster Software (OBS)
- Shotcut
- StaxRip
- VideoProc
GPU genomströmning
Jämförelse av kodningsgenomströmning [ citat behövs ]
Strömmar | H.264 Encode (1080p30) |
---|---|
GM204 (Tesla M6) | 18 |
GM107 (Tesla M10) | 28 |
GM200 (Tesla M40) | 18 |
GM204 (Tesla M60) | 36 |
GP104 (Tesla P4) | 24 |
TU104(Tesla T4) | 32 |
P100 | 36 |
V100 | 36 |
Se även
- Intel Quick Sync Video , Intels motsvarande SIP-kärna
- Video Coding Engine , AMDs motsvarande SIP-kärna fram till 2017
- Video Core Next , AMD:s videokärna som kombinerar funktionaliteten hos Video Coding Engine och Unified Video Decoder
- Nvidia PureVideo , hårdvaruvideoavkodning
- Lista över alla Nvidia GPU:er
- Nvidia NVDEC