2017-01-26 29 views
1

Я пытаюсь скомпилировать ffmpeg в окнах с библиотеками nvidia для аппаратного ускорения с использованием MinGW/msys. попытался выполнить инструкцию по nvidias website (раздел: Начало работы с FFmpeg/libav с использованием графических процессоров NVIDIA). настроено с --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, но остановился на «ОШИБКА: libnpp не найден»., где общая папка загружается с NVIDIA Video Codec SDK, но нет файлов или файлов заголовков npp. есть ли какое-либо решение для этого? спасибо за эвенцию.ffmpeg ОШИБКА: libnpp не найден в окнах

+0

Go и скачать инструментарий CUDA. АЭС распределяется как часть этого – talonmies

+0

Или просто не строится с поддержкой АЭС. – talonmies

+0

Я уже пробовал. установленный cuda toolkit, нашел npp libs и заголовки и скопировал их в общие/lib/x64 и общие/inc папки, но все еще не работает ... – Gio

ответ

5

мне удалось успешно пересечь скомпилировать FFmpeg под Linux таргетирования Windows 64 бит с --enable-libnpp включены.

Моей средой является Ubuntu Server 16.10 64bit.
После новой установки я установил MinGW с помощью команды:

sudo apt-get install mingw-w64 

Сначала я успешно скомпилирован версия Linux с --enable-libnpp опция активирована, следуя инструкциям на сайте Dev NVIDIA Compile Ffmpeg with NVIDIA Video Codec SDK.
Для этого вам необходимо установить 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

Это должно обеспечить Configure правильный путь, чтобы найти правильные библиотеки и заголовки.
командной строки, я использовал, чтобы скомпилировать версию Линукс из FFmpeg является:

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

Проблема вы получили, что при использовании кросс-компиляции необходимо предоставить Configure правильный путь, где найти заголовки и библиотека для версии Windows библиотека libnpp.
С CUDA Toolkit Скачать страницу, указанную выше. Я просто загрузил версию пакета Windows exe ​​(local).
Под корень моей рабочей папке я создал папку под названием TMP где я скопировал вложенные папки, которые я нашел под npp_dev внутри упаковки cuda_8.0.61_win10.exe:

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

В качестве заключительного шага Я запустил Настройка еще раз, используя следующие параметры:

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

компиляция завершена successully. Когда я скопировал файл ffmpeg.exe в Windows и попытался выполнить его, у меня появилось сообщение об ошибке, в котором у исполняемого файла отсутствовала некоторая npp _ *. Dll.
Из пакета cuda_8.0.61_win10.exe Я скопировал все DLL файлы, включенные в папку NPP \ Bin в тот же каталог, я поставил ffmpeg.exe.
После этого приложение запускается нормально и простое преобразование из файла 4K завершено, как ожидалось.

+0

хорошо один. это прекратило мне благодарность – Gio

1

Это может быть вызвано сломанным сценарием конфигурации в базе кода FFmpeg. Там нет библиотеки называется аэс в последних версиях CUDA, а на платформах Windows, вы будете иметь

nppc.lib 
nppi.lib 
npps.lib 

и на Linux

libnppc.so 
libnppi.so 
libnpps.so 

Вам нужно будет либо изменить систему настройки самостоятельно или подать запрос об ошибке с разработчиками проекта сделать это за вас.

Возможно, возникнут дополнительные проблемы при создании проекта с помощью MinGW, но это выходит за рамки вопроса о переполнении стека.

+1

спасибо за ваш ответ talonmies, но единственным решением, которое я нашел, было то, что я настроил ffmpeg с - -disable-libnpp flag ... – Gio

+0

То же самое здесь. Я не могу обнаружить libnpp, чтобы спасти мою жизнь. Я просто должен согласиться с его отключением. –

0

Если вы проверяете config.log, может иметь много ссылок предупреждения:
LINK : warning LNK4044: unrecognized option '/L...'; ignored
причиной
ERROR: libnpp not found.
С/L не является правильным аргументом для MSVC линкера, чтобы включить библиотеку путь, аргумент должен следующим образом:
./configure .... --extra-cflags=-I/usr/local/cuda/... --extra-ldflags=-LIBPATH:/usr/local/cuda/...
Это должно иметь возможность решить libnpp не нашли проблему. FYI, опции компоновщика перечислены в следующей ссылке (включен LIBPATH): Linker Options

 Смежные вопросы

  • Нет связанных вопросов^_^