16.04を実行しているかなり古いラップトップで、ffmpegを使用しようとすると、次のエラーが表示されます。
$ ffmpeg
ffmpeg: error while loading shared libraries: libcudart.so.5.5: cannot open shared object file: No such file or directory
ffmpegは以前は正常に動作し、ある時点で破損していました。正確な時期はわかりませんが、14.04から16.04にアップグレードしたときだったかもしれません。
Lddを実行すると、このライブラリ(CUDAランタイムライブラリ)が欠落していることが確認されますが、他のすべては問題ありません。
$ ldd /usr/bin/ffmpeg | grep libcudart
libcudart.so.5.5 => not found
ファイル(libcudart5.5)がシステム上のどこにも存在しないこと(「検索」などを試みたことがあります)、または実際にはlibcudartの他のバージョンが存在しないことを確信しています。リポジトリで必要なものに最も近いのは、後のバージョンであるlibcudart7.5です。しかし、これには依存関係としてnvidiaドライバーのアップグレード(nvidia-367)が伴います。これは、グラフィックスカードが少し古くなっているために、システム全体を数回使用していることがわかったためです。
だから基本的に、ffmpegがそもそもlibcudart5.5へのリンクを試みている理由について混乱している。確かに、GPUサポートを必要とせずにffmpegを実行できるはずです?実際、私はknowそれは、16.04を実行している別のコンピューターで、lddがlibcudartのどのバージョンにも依存せず、ffmpegが正常に動作するためです。 ffmpegパッケージのバージョンは、どちらの場合も同じです。
$ dpkg -s ffmpeg | grep Version
Version: 7:2.8.11-0ubuntu0.16.04.1
それで、なぜ私のラップトップでそれを探しているのですか?私はffmpegをパージし、それを数回再試行しましたが、運がありません。関連性があると思われることの1つは、システムにインストールされているlibcudart5.5というパッケージのresidual-config
エントリを見つけたことです。私はこれが何を意味するのか本当に知りませんが、それを削除してffmpegを再インストールした後、違いはありませんでした。また、ある段階(14.04未満)でCUDA SDKを完全にインストールしたが、完全に削除して再インストールしたくないことも関係しているかもしれません。
ビデオ変換にラップトップでffmpegを使用したいので、助けてくれて本当に感謝しています。これはしばらくの間私を悩ませてきました。
ありがとう!
元の質問に対するridgyのコメントに触発された調査の後、自分の質問に答えています(ありがとう!)。 ffmpegが使用する他のライブラリが依存関係としてlibcudartを持っているかどうかを調査し始めました。パッケージpax-utils
のlddtree
ツールは、フラットリストではなく、リンカーの依存関係の階層リストを提供するため、これに非常に役立ちます。例えば。
$ lddtree /usr/bin/ffmpeg
これを使用して、libcudart.so.5.5
がlibopencv_core.so.2.4
のリンカー依存関係であり、OpenCV 2.4をソースからコンパイルしたときにしばらく前から/usr/local/lib
に残っていて、新しいバージョン(バージョン3.0)が登場しました。
これを修正するために、aptを使用してffmpeg
およびすべてのopencv
パッケージをアンインストールし、/usr/local/lib
の残りのopencv 2.4ファイルを手動で削除しました
$ Sudo rm /usr/local/lib/libopencv_*.so.2.4*
次に、レポジトリからffmpegを再インストールしました。
これは、他の人には関係ないかもしれないかなり特定の状況のセットのように思えますが、おそらくこの答えは、同様の問題を持つ他の人に役立つ可能性があります。
同様の問題がありました。opencvとffmpegのすべてのインスタンスを削除し、ffmpegをアンインストールしてから再度インストールすることで解決しました。
Sudo find / -name "*opencv*" -exec rm -R {} \;
Sudo find / -name "*ffmpeg*" -exec rm -R {} \;
Sudo apt-get install ffmpeg
ffmpeg
を実行して、不足しているものを確認します。 libopencv_core.so.2.4
(または欠落しているファイル)の場所を見つけてください。例えば:
find / -name "*libopencv_core.so*"
あるディレクトリで見つかった場合は、/usr/lib/
にコピーします。
Sudo cp /path-where-you-found-it/ /usr/lib/
最後にffmpeg
を再度実行します。
すべてが正常であれば、ヘルプオプションが表示されます。