Kodning af videofiler kan være en komplet træk. Selv med de hurtigste CPU'er ude på markedet, kan processen tage op til omkring så længe videoen selv (f.eks. 30 minutter kodning for en tredive minutters video). Uanset hvad kodningsprogrammer tilbyder dig, er de altid begrænset af kraften i dine chips.

For at løse dette problem har NVIDIA-kort et nifty little trick, som de har brugt siden udgivelsen af ​​GeForce 600-serien grafikkort tilbage i 2012 kaldet NVENC. Dette giver dig mulighed for at bruge GPU'en til at kode video streams. Ved hjælp af NVENC kan du ikke kun konvertere videoer hurtigere end med en konventionel CPU, men du kan også streame video via software som Open Broadcaster Software (OBS), mens du reducerer eller eliminerer stotter og lag. Da Linux ikke har NVENC som standard, skal du få det til at fungere manuelt. Jeg forklarer her, hvordan du kan gøre dette i distributioner, der er baseret på Ubuntu.

Første ting først

For at få NVIDIAs NVENC til at arbejde på Ubuntu, skal du først downloade NVIDIA Video Codec softwareudviklingskit (SDK) fra dette websted. Du skal lave en konto, men processen er ret ligetil. Du behøver ikke alle filerne i ZIP, så vi skal nu navigere til "Samples / common / inc." Kopier alt du ser der til din "/ usr / local / include" -mappe. Du skal kopiere disse filer, så "ffmpeg" (en encoder ofte fundet med linux distros) vil genkende NVENC og inkorporere den.

Konfiguration af kildekodeopsamlinger

Det næste trin involverer genkompilering af din nuværende version af ffmpeg. Det betyder, at du skal bruge byggeafhængighederne til softwaren, og for det skal du konfigurere Linux for at tillade overførsel fra kildekodebeholdninger i dine softwarekilder.

I Ubuntu kan du navigere til "Systemindstillinger -> Software & Updates", og klik derefter på "Source code" under "Ubuntu Software." I Linux Mint (den distribution jeg bruger, fordi jeg er doven), kan dette gøres ved at få adgang til opdateringsadministratoren, klikke på "Rediger", klikke på "Softwarekilder" og derefter tjekke den lille boks med "Aktiver kildekodebeholdninger." Denne metode kan variere afhængigt af skrivebordsmiljøet og distributionen af ​​Linux, så du skal muligvis gøre en lille sjæl søger for at få det gjort.

Nu for tand-slibning del af processen!

Genopbygning af ffmpeg

Da ffmpeg ikke bygger med mange af dets muligheder automatisk aktiveret (hvilket betyder at de er næsten alle opt-in snarere end opt-out), skal du finde ud af, hvordan det blev bygget i dit system og derefter opbygge det ved hjælp af samme konfiguration plus understøttelse for NVENC og AAC audio. Det er her de overskrifter, du kopierede tidligere, kommer ind. Se, ffmpeg vil tage et lille kig på dine filer i "/ usr / local / include" for at finde kodeker, som den ikke finder i sine egne lommer.

For det første bygger vi afhængigheder med

 sudo apt-get build-dep ffmpeg 

Dernæst vil vi downloade AAC audio codec med

 sudo apt-get installer libfdk-aac-dev 

Når disse ting er færdige, skal vi få kilden til ffmpegs nuværende version med

 sudo apt-get source ffmpeg 

Og når det er færdigt, skal du lave lidt jagt i din hjemmemappe. Find en mappe, der starter med "ffmpeg." Det vil have versionsnummeret lige efter det adskilt af et bindestreg. Her er min:

Åbn din terminal i den pågældende mappe. Hvis du ikke kan gøre det, skal du åbne terminalen og skrive:

 cd ffmpeg- 

hvor "" det repræsenterer det fulde versionsnummer, du så i den mappes navn. I mit tilfælde ville jeg skrive

 cd ffmpeg-2.8.8 

Skriv nu

 ffmpeg-buildconf 

Det viser dig hele konfigurationen af ​​din nuværende ffmpeg-installation. Du skal kopiere alt efter "konfiguration:" uden bitene under den massive tekstmur. I mit tilfælde kopierer jeg dette: (Din konfiguration kan være anderledes, så kopier ikke det jeg viser dig her.)

 --prefix = / usr --extra-version = 0ubuntu0.16.04.1 --build-suffix = -ffmpeg --toolchain = hærdet --libdir = / usr / lib / x86_64-linux-gnu --incdir = / usr / include / x86_64-linux-gnu --cc = cc --cxx = g ++ --enable-gpl --enable-shared --disable-stripping --disable-dekoder = libopenjpeg --disable-dekoder = libschroedinger --enable -prøve -enable-avisynth -enable-gnutls -enable-ladspa -enable-libass -enable-libbluray -enable-libbs2b -enable-libcaca -enable-libcdio -enable-libflite -enable -libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libmodplug --enable-libmp3lame --enable-libopenjpeg --enable-libopus --enable-libpulse --enable -librtmp --enable-libschroedinger --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvorbis --enable -libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxvid --enable-libzvbi --enable-openal --enable-opengl --enable-x11gr ab -enable-libdc1394 --enable-libiec61883 --enable-libzmq --enable-frei0r --enable-libx264 --enable-libopencv 

Indsæt nu hvad du endte med i gedit eller en anden teksteditor og tilføj dette til slutningen:

 --enable-nonfree --enable-nvenc --enable-libfdk-aac 

OK, nu skal du bare skrive

 ./configure 

hvor "" repræsenterer den massive tekstmur, du netop har redigeret for at tilføje support til ikke-gratis codecs, NVENC og AAC audio. Det kan tage et stykke tid.

Efter alt, hvad der er færdigt, skriv

 lave 

Vent til at være forbi med, og skriv derefter

 sudo gør installationen 

Du er færdig!

Testing det

OK, så hvordan ved du, at du med succes har fået støtte til NVENC? Det er på tide at tage ffmpeg ud for et spin og kode en video med den.

For at gøre dette skal du bruge en videofil til at konvertere. Lad os sige, at vores video er i "/home/miguel/Desktop/test.mkv", og vi ønsker at kode det som "/home/miguel/Desktop/test.mp4." Sådan går det med at gøre det med ffmpeg og sin nyfundne kærlighed til NVENC:

 tid ffmpeg -i /home/miguel/Desktop/test.mkv -acodec copy -vcodec nvenc /home/miguel/Desktop/test.mp4 

Du skal se noget som dette:

Og det er det! Vi dræbte to fugle med en sten: Du lærte, hvordan du får NVENC på dit Linux-system, og hvordan du kan kode en video ved hjælp af ffmpegs praktiske terminalkommando. Hvis du sidder fast et sted eller finder en bedre måde at gøre dette på, skal du sørge for at skrive en kommentar!