nvenc で ffmpeg を使用しようとしたときに CUDA ライブラリの読み込みに失敗しました

nvenc で ffmpeg を使用しようとしたときに CUDA ライブラリの読み込みに失敗しました

Ubuntu 14.04では、指示ガイドに従っていますNVIDIAのサイトよりGPU エンコーディングを使用して ffmpeg を実行します。

私は指示に従い(私の知る限り)、NVIDIA SDK ローカル .dep をインストールし、パッケージcudanvidia-352パッケージをインストールしてから、ffmpeg をコンパイルしました。

ただし、次の呼び出しを実行しようとすると、

ffmpeg -i ~/test/StreamInstructions.mp4 -vcodec nvenc -b:v 5M -f avi output.mp4

ffmpeg が教えてくれますFailed loading CUDA library

Google で検索すると、このエラー メッセージのソース コードが次のコード行に由来していることがわかりますdl_fn->cuda_lib = dlopen("libcuda.so", RTLD_LAZY);

これは、私(過去 10 年間 C++ や Linux をあまり扱ったことがない)にとって、libcuda.so 共有ライブラリが見つからないことを示しています。

ファイル システムを検索すると、libcuda.so次の場所にあることがわかります。

/usr/local/cuda-7.5/doc/man/man7/libcuda.so.7
/usr/local/cuda-7.5/targets/x86_64-linux/lib/stubs/libcuda.so
/usr/lib/i386-linux-gnu/libcuda.so.1
/usr/lib/i386-linux-gnu/libcuda.so
/usr/lib/i386-linux-gnu/libcuda.so.352.63
/usr/lib/x86_64-linux-gnu/libcuda.so.1
/usr/lib/x86_64-linux-gnu/libcuda.so.352.63

検索してもこの問題を解決するのに役立つ他の結果は見つかりませんでした。そのため、ffmpeg レベルではなく Linux レベルで何か間違っているのではないかと感じています。

ここからどこへ行くべきかについて何か提案はありますか?

編集:ldconfig -p実際にはライブラリが見つかるということが示されているlibcuda.soのに、ライブラリが見つからないというエラーがまだ表示されていることに 気付きました。

 ldconfig -p | grep cuda
        libicudata.so.52 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libicudata.so.52
        libcuda.so.1 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libcuda.so.1
        libcuda.so.1 (libc6) => /usr/lib/i386-linux-gnu/libcuda.so.1
        libcuda.so (libc6) => /usr/lib/i386-linux-gnu/libcuda.so

答え1

注記:
まず古い LD_LIBRARY_PATH をバックアップしてください。
このコマンドは、環境変数 LD_LIBRARY_PATH の値をホームディレクトリのファイル「LD_LIBRARY_PATH.old」に配置します。
#>$ echo $LD_LIBRARY_PATH >> ~/LD_LIBRARY_PATH.old

私の解決策:
Fedora に NVidia/Cuda ドライバーをインストールしたときにこの問題が発生しました。ライブラリ パスを更新する必要がありました。
#>$ export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/path/to/cuda/lib

変更を元に戻す:
#>$ export LD_LIBRARY_PATH=$(cat ~/LD_LIBRARY_PATH.old)

関連情報