ffmpeg FEJL: libnpp findes ikke i Windows

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg forsøger at kompilere ffmpeg i windows med nvidia biblioteker til hardware acceleration ved hjælp af MinGW/msys. forsøgte at følge instruktionerne på nvidias hjemmeside (afsnit: Kom i gang med FFmpeg/libav ved hjælp af NVIDIA GPU'er). konfigureret med - aktiver-nonfree - disable-shared - enable-nvenc --enable-cuda --enable-cuvid --enable-libnpp --extra-cflags=-Ilocal/include --extra-cflags=-I ../almindelig/inc -extra-ldflags=-L ../common/lib/x64 --prefix=ffmpeg men stoppet ved 'FEJL: libnpp ikke fundet.' hvor almindelig mappe er hentet fra NVIDIA Video Codec SDK, men der er ingen npp libs eller header filer. Er der nogen løsning for det? tak for edvice. [10] [11]

Bedste reference


Det lykkedes mig at køre kompilere ffmpeg under linux målretning Windows 64 bit med - enable-libnpp inkluderet.


Mit miljø er Ubuntu Server 16.10 64bit.

Efter en frisk installation installerede jeg MinGW ved hjælp af kommandoen:


sudo apt-get install mingw-w64


Først kompilerede jeg Linux-versionen succesfuldt med - enable-libnpp -optionen aktiveret efter instruktionerne på NVIDIA dev-siden Kompilér Ffmpeg med NVIDIA Video Codec SDK.

For at gøre det skal du installere CUDA Toolkit. Bare følg instruktionerne, og pakkeinstallatøren vil oprette de symbolske links (jeg har CUDA Toolkit 8.0): [12] [13]



  /usr/local/cuda/include/->/usr/local/cuda-8.0/targets/x86\_64-linux/include

  /usr/local/cuda/lib64/->/usr/local/cuda-8.0/targets/x86\_64-linux/lib



Dette skal give Konfigurer den rigtige vej for at finde de rigtige biblioteker og overskrifter.

Kommandolinjen jeg har brugt til at kompilere Linux-versionen af ​​ffmpeg er:


./configure --enable-nonfree --disable-shared --enable-nvenc --enable-cuda --enable-cuvid --enable-libnpp --extra-cflags=-I/usr/local/cuda/include/ --extra-ldflags=-L/usr/local/cuda/lib64/


Problemet du har, er at når du bruger cross-compilation, skal du give Konfigurer den rigtige vej hvor du finder overskrifter og bibliotek til Windows-versionen af ​​biblioteket libnpp .

Fra CUDA Toolkit download siden nævnt ovenfor downloadede jeg simpelthen exe (lokal) version af Windows-pakken.

Under roten til min arbejdsmappe oprettede jeg en mappe kaldet tmp , hvor jeg kopierede undermapperne, jeg fandt under npp\_dev inde i pakken cuda\_8.0.61\_win10.exe :


cuda\_8.0.61\_win10.exe
pp\_devlib -> tmp/lib  
cuda\_8.0.61\_win10.exe
pp\_devinclude -> tmp/include


Som sidste skridt lancerede jeg Konfigurer igen med følgende parametre:


./configure --arch=x86\_64 --target-os=mingw32 --cross-prefix=x86\_64-w64-mingw32- --pkg-config=pkg-config --enable-nonfree --disable-shared --enable-nvenc --enable-cuda --enable-cuvid --enable-libnpp --extra-cflags=-I/usr/local/include --extra-cflags=-I/usr/local/cuda/include/ --extra-ldflags=-L/usr/local/cuda/lib64/ --extra-cflags=-I../tmp/include/ --extra-ldflags=-L../tmp/lib/x64/


Samlingen blev afsluttet successivt. Da jeg kopierede filen ffmpeg.exe til Windows og forsøgte at udføre den, fik jeg en fejlmeddelelse, der sagde, at den eksekverbare manglede nogle npp \_ * .dll.

Fra pakken cuda\_8.0.61\_win10.exe kopierede jeg alle de dll'er, der er inkluderet i mappen npp \ bin til den samme mappe, jeg sætter ffmpeg.exe .

Derefter kører programmet normalt og en simpel konvertering fra en 4K-fil gennemført som forventet.

Andre referencer 1


Dette synes at være forårsaget af et brudt konfigurationsskript i FFmpeg-koden. Der er ikke noget bibliotek kaldet npp i de seneste CUDA distributioner, i stedet på Windows platforme, du vil have


nppc.lib
nppi.lib
npps.lib


og på linux


libnppc.so
libnppi.so
libnpps.so


Du skal enten selv ændre konfigurationssystemet eller sende en fejlanmodning til projektudviklerne for at gøre det for dig.


Der kan stadig være yderligere problemer med at opbygge projektet med MinGW, men det ligger langt ud over omfanget af et Stack Overflow-spørgsmål.

Andre referencer 2


Hvis du tjekker config.log, kan der være mange linkadvarsler:

LINK : warning LNK4044: unrecognized option '/L...'; ignored

forårsage

ERROR: libnpp not found.

Siden/L er ikke et korrekt argument for msvc linker, for at inkludere bibliotekets sti skal argumentet være som følger:

./configure .... --extra-cflags=-I/usr/local/cuda/... --extra-ldflags=-LIBPATH:/usr/local/cuda/...

Dette skal kunne løse det libnpp ikke fundet problem.
FYI, linker muligheder er angivet i følgende link (inkluderet LIBPATH ):
Linker Valg [14]