Kodning av videofiler kan vara ett komplett drag. Även med de snabbaste processorerna ute på marknaden kan processen ta så lång tid som själva videon (t.ex. trettio minuter av kodning för en trettio minuters video). Oavsett vilka kodprogram som erbjuder dig, är de alltid begränsade av kraften hos dina marker.

För att lösa detta problem har NVIDIA-kort ett smutsigt litet knep som de har använt sedan utgåvan av GeForce 600-serien grafikkort tillbaka 2012 kallad NVENC. Detta gör att du kan använda GPU-enheten för att koda videoströmmar. Med NVENC kan du inte bara konvertera videor snabbare än med en vanlig CPU, men du kan även strömma video genom programvara som Open Broadcaster Software (OBS), samtidigt som du reducerar eller helt eliminerar stotter och lagring. Eftersom Linux inte har NVENC som standard måste du få det att fungera för hand. Jag förklarar här hur du kan göra detta i utdelningar som bygger på Ubuntu.

Första saker först

För att få NVIDIAs NVENC att arbeta med Ubuntu behöver du först ladda ner NVIDIA Video Codec-programvaruutvecklingspaketet (SDK) från den här webbplatsen. Du måste göra ett konto, men processen är ganska enkel. Du behöver inte alla filer i ZIP, så vi ska nu navigera till "Samples / common / inc." Kopiera allt du ser där till din "/ usr / local / include" -mapp. Du måste kopiera dessa filer så att "ffmpeg" (en kodare som ofta hittas med Linux distros) kommer att känna igen NVENC och införliva det.

Konfigurera källkodsreparationer

Nästa steg kommer att innebära att du kompilerar din nuvarande version av ffmpeg. Det betyder att du behöver bygga beroenden för programvaran, och för det måste du konfigurera Linux för att tillåta nedladdning från källkodsförvar i dina programkällor.

I Ubuntu kan du navigera till "Systeminställningar -> Programvara och uppdateringar" och klicka sedan på "Källkod" under "Ubuntu Software." I Linux Mint (den distribution jag använder för att jag är lat) kan detta göras genom att öppna uppdateringshanteraren, klicka på "Redigera", klicka på "Software Källor" och kolla sedan den lilla rutan med "Aktivera källkodsförråd." Den här metoden kan variera beroende på skrivbordsmiljö och distribution av Linux, så du kan behöva göra en liten själ söker för att få det gjort.

Nu för tandslipande delen av processen!

Ombyggnad av ffmpeg

Eftersom ffmpeg inte bygger med många av dess alternativ automatiskt aktiverat (vilket innebär att de nästan alla är inloggade snarare än bortval), måste du ta reda på hur det byggdes i ditt system och sedan bygga det med hjälp av samma konfiguration plus stöd för NVENC- och AAC-ljud. Det här är de rubriker du kopierade tidigare kom in. Se, ffmpeg tar en liten titt på dina filer i "/ usr / local / include" för att hitta några codecs som den inte hittar i sina egna fickor.

Först bygger vi beroenden med

 sudo apt-get build-dep ffmpeg 

Därefter vill vi ladda ner AAC-ljudkoden med

 sudo apt-get installera libfdk-aac-dev 

När dessa saker är färdiga måste vi få källan till ffmpegs nuvarande version med

 sudo apt-get source ffmpeg 

Och när det är klart måste du göra lite jakt i din hemmapp. Hitta en mapp som börjar med "ffmpeg." Den kommer att ha versionsnumret direkt efter det att det har separerats av en streckkod. Här är min:

Öppna din terminal i den mappen. Om du inte kan göra det, öppna terminalen och skriv:

 cd ffmpeg- 

där "" representerar det fullständiga versionsnummer som du såg i den mappens namn. I mitt fall skulle jag skriva

 cd ffmpeg-2.8.8 

Skriv nu

 ffmpeg-byggkonf 

Det kommer att visa dig hela konfigurationen av din nuvarande ffmpeg-installation. Du måste kopiera allt efter "konfiguration:" utan bitarna under den massiva textmuren. I mitt fall kopierar jag detta: (Din konfiguration kan vara annorlunda, så kopiera inte det jag visar dig här.)

 --prefix = / usr --extra-version = 0ubuntu0.16.04.1 --build-suffix = -ffmpeg --toolchain = härdat --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 -avtryck --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 

Nu klistra in vad du kom in i gedit eller någon annan textredigerare och lägg till detta till slutet:

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

OK, nu är allt du behöver göra typ

 ./configure 

där "" representerar den massiva väggen av text som du just redigerat för att lägga till stöd för icke-fria codecs, NVENC och AAC audio. Det kan ta ett tag.

Efter allt som är klart, skriv

 göra 

Vänta på att vara över med, skriv sedan

 sudo gör installationen 

Du är klar!

Testa det

OK, så hur vet du att du framgångsrikt har fått stöd för NVENC? Det är dags att ta ffmpeg ut för en snurr och koda en video med den.

För att göra detta behöver du en videofil att konvertera. Låt oss säga att vår video är i "/home/miguel/Desktop/test.mkv, " och vi vill koda den som "/home/miguel/Desktop/test.mp4." Så här går det att göra det med ffmpeg och sin nyfunna kärlek till NVENC:

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

Du borde se något så här:

Och det är allt! Vi dödade två fåglar med en sten: du lärde dig hur du får NVENC på ditt Linux-system och hur du kodar en video med hjälp av ffmpegs praktiska terminalkommando. Om du fastnar någonstans eller hitta ett bättre sätt att göra detta, var noga med att lämna en kommentar!