web-dev-qa-db-fra.com

Erreur avec les bibliothèques partagées: FFMPEG

Sur mon ordinateur portable assez ancien fonctionnant sous 16.04, chaque fois que j'essaie d'utiliser ffmpeg, j'obtiens l'erreur suivante:

$ ffmpeg
ffmpeg: error while loading shared libraries: libcudart.so.5.5: cannot open shared object file: No such file or directory

ffmpeg avait l'habitude de bien fonctionner et s'est cassé à un moment donné. Je ne sais pas exactement quand, mais c'est peut-être ce qui s'est passé lors de la mise à niveau du 14.04 au 16.04.

L'exécution de ldd confirme que cette bibliothèque (la bibliothèque d'exécution CUDA) est manquante, mais tout le reste est correct:

$ ldd /usr/bin/ffmpeg | grep libcudart
libcudart.so.5.5 => not found

Je suis à peu près sûr que le fichier (libcudart5.5) n’existe nulle part sur mon système (j’ai essayé de "trouver", etc.), ni même d’autres versions de libcudart. La chose la plus proche de ce dont j'ai besoin dans le référentiel est libcudart7.5, une version ultérieure. Mais cela vient avec une mise à jour du pilote nvidia (nvidia-367) en tant que dépendance que j'ai trouvée à plusieurs reprises maintenant réservant tout le système (en raison de la carte graphique étant un peu obsolète, je pense).

Donc, fondamentalement, je suis confus quant à la raison pour laquelle ffmpeg tente de se connecter à libcudart5.5 en premier lieu. Sûrement, il devrait être possible d’exécuter ffmpeg sans avoir besoin du support GPU? En fait, je sais c’est parce que, sur un autre ordinateur que j’utilise sous 16.04, ldd ne montre aucune dépendance à aucune version de libcudart et que ffmpeg fonctionne parfaitement. La version du paquet ffmpeg est la même dans les deux cas:

$ dpkg -s ffmpeg | grep Version
Version: 7:2.8.11-0ubuntu0.16.04.1

Alors, pourquoi le cherche-t-il sur mon ordinateur portable? J'ai essayé de purger ffmpeg et de le réinstaller plusieurs fois sans succès. Une chose qui semble pertinente est que j'ai trouvé une entrée residual-config pour un paquetage appelé libcudart5.5 installé sur mon système. Je ne sais pas vraiment ce que cela signifie, mais après l'avoir retiré et réinstallé ffmpeg, cela n'a pas changé. Il peut également être intéressant de noter qu’à un moment donné (sous 14.04), j’avais le sdk CUDA complet installé, mais l’avais ensuite complètement supprimé et ne souhaitait pas le réinstaller.

J'apprécierais vraiment toute aide, car j'aimerais vraiment utiliser ffmpeg sur mon ordinateur portable pour la conversion vidéo et cela me dérange depuis un moment maintenant.

Merci!

5
C Bridge

Je réponds à ma propre question après une enquête inspirée par le commentaire de ridgy sur la question initiale (merci!). J'ai commencé à chercher si une autre bibliothèque utilisée par ffmpeg avait libcudart comme dépendance. L'outil lddtree du paquetage pax-utils est très utile car il vous donne une liste hiérarchique des dépendances de l'éditeur de liens plutôt qu'une liste simple. Par exemple.

$ lddtree /usr/bin/ffmpeg

En utilisant cela, j’ai découvert que libcudart.so.5.5 était une dépendance de l’éditeur de liens de libopencv_core.so.2.4 laissée traîner dans /usr/local/lib depuis que j’avais compilé OpenCV 2.4 à partir du source et n’avait jamais été nettoyé lorsque le nouveau la version (version 3.0) est arrivée.

Pour résoudre ce problème, j'ai désinstallé ffmpeg et tous les packages opencv en utilisant apt, puis j'ai supprimé manuellement les fichiers restants d'opencv 2.4 dans /usr/local/lib en utilisant

$ Sudo rm /usr/local/lib/libopencv_*.so.2.4*

Puis réinstallé ffmpeg à partir du dépôt et tout va bien maintenant.

Cela semble être un ensemble de circonstances assez spécifiques qui pourraient ne pas intéresser d’autres personnes, mais cette réponse pourrait peut-être être utile à d’autres qui ont des problèmes similaires.

6
C Bridge

J'ai eu un problème similaire.et je l'ai résolu en supprimant toutes les instances d'opencv et de ffmpeg, en désinstallant ffmpeg, puis en l'installant à nouveau:

Sudo find / -name "*opencv*" -exec rm -R {} \; 
Sudo find / -name "*ffmpeg*" -exec rm -R {} \;
Sudo apt-get install ffmpeg
0
MGM

Exécutez ffmpeg pour voir ce qui manque. Essayez de trouver où est libopencv_core.so.2.4 (ou tout fichier manquant). Par exemple:

find / -name "*libopencv_core.so*"

et si vous le trouvez dans un répertoire, copiez-le dans /usr/lib/:

Sudo cp /path-where-you-found-it/ /usr/lib/

Enfin relancez ffmpeg.

Si tout va bien, les options d'aide s'affichent.

0
soylis