我正在尝试使用nvidia库在Windows中编译ffmpeg,以便使用MinGW/msys进行硬件加速.试图按照nvidias网站上的说明进行操作(部分:使用NVIDIA GPU开始使用FFmpeg/libav).配置为--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 libs或头文件.那有什么解决方案吗?感谢edvice.
我设法成功地在linux下针对Windows 64位交叉编译ffmpeg,包括--enable-libnpp.
我的环境是Ubuntu Server 16.10 64bit.
在全新安装后,我使用以下命令安装了MinGW:
sudo apt-get install mingw-w64
首先,我按照NVIDIA开发站点Compile Ffmpeg和NVIDIA Video Codec SDK上的说明,成功编译了Linux版本,启用了--enable-libnpp选项.
为此,您需要安装CUDA Toolkit.只需按照说明操作,包安装程序将创建符号链接(我有CUDA Toolkit 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 Toolkit下载页面,我只是下载了Windows软件包的exe(本地)版本.
在我的工作文件夹的根目录下,我创建了一个名为tmp的文件夹,其中我复制了在cpu_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文件的简单转换.