2017-01-26 30 views
1

MinGW/msysを使用しているハードウェアアクセラレーション用のnvidiaライブラリがあるウィンドウでffmpegをコンパイルしようとしています。 nvidias website(セクション:「NVIDIA GPUを使用したFFmpeg/libav入門」)の指示に従いました。 --enable-nonfree --disable-shared --enable-nvenc --enable-cuda --enable-cuvid --enable-libnpp --extra-cflags = -Ilocal/include --extra-cflags = - 私は../コモン/ inc - エクストラ - ldflags = - L ../common/lib/x64 - プレフィックス= ffmpegしかしで停止しました"エラー:libnppが見つかりませんでした。共通フォルダはNVIDIA Video Codec SDKからダウンロードされますが、nppのlibsファイルやヘッダファイルはありません。そのための解決策はありますか? edviceのおかげで。ffmpegエラー:Windowsでlibnppが見つかりません

+0

移動し、CUDAツールキットをダウンロードしてください。 NPPはその一部として配布されています – talonmies

+0

または単にNPPサポートで構築しない – talonmies

+0

私はすでに試してみました。インストールされているcudaツールキット、nppのlibsとヘッダーを見つけてcommon/lib/x64とcommon/incフォルダにコピーしましたが、まだ動作していません... – Gio

答えて

5

私はsuccessfuly --enable-libnppが含までWindows 64ビットをターゲットLinuxでffmpegのをコンパイル横断に成功しました。

私の環境は、Ubuntu Server 16.10 64bitです。
新規インストールした後、私はコマンドを使用してのMinGWをインストール:

sudo apt-get install mingw-w64 

まず、私は成功し--enable-libnppオプション付きのLinux版はNVIDIA devのサイトCompile Ffmpeg with NVIDIA Video Codec SDKの指示に従って起動してコンパイル。
これを行うには、CUDA Toolkitをインストールする必要があります。ただ指示に従って、パッケージインストーラは、シンボリックリンク(私は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/ 

あなたが得た問題は、クロスコンパイルを使用しているときに設定にヘッダを見つけるために右のパスを提供する必要があることですし、 libnppライブラリのWindows版のライブラリです。
上記のCUDAツールキットダウンロードページから、Windowsパッケージのバージョンをダウンロードしました。最後のステップとして

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

:私は私がパッケージcuda_8.0.61_win10.exe内部npp_devの下にサブフォルダをコピーしTMPというフォルダを作成し、私の作業フォルダのルートの下に
コンパイルが完了し

./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がないというエラーメッセージが表示されました。私はすべてのDLLは、私がffmpeg.exeを置くと同じディレクトリにフォルダ原発\ビンに含まれるコピーされたパッケージcuda_8.0.61_win10.exeから

その後、アプリケーションは正常に実行され、4Kファイルからの単純な変換は予想通り完了しました。あなたはconfig.logのを確認した場合

+0

良いもの。それは私を感動halped – Gio

1

これは、FFmpegコードベースの設定スクリプトが壊れているために発生したようです。原子力発電所と呼ばれる全くライブラリーではなく、Windowsプラットフォーム上で使用すると、

nppc.lib 
nppi.lib 
npps.lib 

を持つことになりますとLinux

libnppc.so 
libnppi.so 
libnpps.so 

にあなたは、構成システムを自分で変更する必要があるか、バグ要求を提出するか、最近のCUDAのディストリビューションではありませんプロジェクト開発者があなたのためにそれを行うことができます。

MinGWでプロジェクトをビルドするにはまだ問題が残るかもしれませんが、これはスタックオーバーフローの問題の範囲を超えています。

+1

答えのtalonmiesに感謝します。 -disable-libnppフラグ... – Gio

+0

ここに同じです。私は人生を救うためにlibnppを検出できません。私はただそれを無効にして解決しなければならない。 –

0

、たくさんのリンクの警告をそこに持っていることがあります。
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

関連する問題