ffmpeg错误:在Windows中找不到libnpp

我正尝试在nvidia库中使用MinGW / msys在windows中编译ffmpeg以进行硬件加速。 试图按照nvidias网站上的说明(部分:使用NVIDIA GPU的FFmpeg / libav入门)。 configuration了–enable-nonfree –disable-shared –enable-nvenc –enable-cuda –enable-cuvid –enable-libnpp –extra-cflags = -Ilocal / include –extra-cflags = -I ../common/inc –extra-ldflags = -L ../ common / lib / x64 –prefix = ffmpeg,但在“ERROR:找不到libnpp”时停止 从NVIDIA Video Codec SDK下载常用文件夹,但没有npp库或头文件。 有没有解决scheme? 感谢edvice。

我成功地交叉编译了linux下的ffmpeg ,目标是使用包含–enable-libnpp的 Windows 64位。

我的环境是Ubuntu服务器16.10 64位。
在全新安装之后,我使用以下命令安装了MinGW:

sudo apt-get install mingw-w64 

首先,我成功地编译了Linux版本,激活了–enable-libnpp选项,按照NVIDIA开发站点上的说明使用NVIDIA Video Codec SDK编译Ffmpeg 。
为了做到这一点,你需要安装CUDA工具包 。 只要按照说明和包安装程序将创建符号链接(我有CUDA工具包8.0):

/ 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

这应该提供配置正确的路径来找到正确的库和标题。
我用来编译ffmpeg的linux版本的命令行是:

 ./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/ 

你得到的问题是,当使用交叉编译时,你需要提供配置正确的路径在哪里找到Windows版本的libnpp库头和库。
从上面提到的CUDA工具包下载页面,我简单地下载了Windows软件包的exe(本地)版本。
在我的工作文件夹的根目录下,我创建了一个名为tmp的文件夹,其中我复制了在cuda_8.0.61_win10.exe包中的npp_dev下找到的子文件夹:

 cuda_8.0.61_win10.exe\npp_dev\lib -> tmp/lib cuda_8.0.61_win10.exe\npp_dev\include -> tmp/include 

作为最后一步,我使用以下参数再次启动了Configure

 ./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/ 

汇编成功完成。 当我将ffmpeg.exe文件复制到Windows并试图执行它时,我收到一条错误消息,说可执行文件缺少一些npp _ *。dll。
从包cuda_8.0.61_win10.exe我把包含在文件夹npp \ bin中的所有dll拷贝到我把ffmpeg.exe放到同一个目录中。
之后,应用程序正常运行,并从预期的4K文件完成一个简单的转换。

这似乎是由FFmpeg代码库中的配置脚本损坏引起的。 在最近的CUDA发行版中没有称为npp的库,而是在Windows平台上

 nppc.lib nppi.lib npps.lib 

和在Linux上

 libnppc.so libnppi.so libnpps.so 

您需要自己修改配置系统,或者向项目开发人员提出错误请求,以便为您完成。

用MinGW构建项目可能还有其他问题,但这超出了Stack Overflow问题的范围。