Ошибка с общими библиотеками: FFMPEG

На моем довольно старом ноутбуке, работающем 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. Самой близкой вещью в repo к тому, в чем я нуждаюсь, является libcudart7.5, более поздняя версия. Но это приходит с обновлением драйвера Nvidia (nvidia-367) как зависимость, которую я нашел, несколько раз теперь заправляет целую систему (из-за видеокарты, являющейся немного устаревшим, я думаю).

Так же в основном я смущен относительно того, почему ffmpeg пытается связаться с libcudart5.5 во-первых. Конечно, должно быть возможно выполнить ffmpeg, не нуждаясь в поддержке GPU? На самом деле я знаю, что это - потому что на другом компьютере я использую выполнение 16.04, ldd не показывает зависимости ни от какой версии libcudart, и ffmpeg работает просто великолепно. Версия ffmpeg пакета является тем же в обоих случаях:

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

Итак, почему это ищет его на моем ноутбуке? Я попытался произвести чистку ffmpeg и переустановить его несколько раз без удачи. Одна вещь, которая кажется релевантной, состояла в том, что я нашел a residual-config запись для пакета, названного libcudart5.5, установлена в моей системе. Я действительно не знаю то, что это означает, но после удаления его и переустанавливающий ffmpeg, это не имело значения. Могло бы также быть важно, что однажды (под 14,04) я имел полный CUDA sdk установленный, но затем полностью удалил его, и не хотят переустанавливать его.

Я был бы очень признателен за любую справку, потому что я действительно хотел бы использовать ffmpeg на своем ноутбуке для видео преобразования, и это прослушивало меня некоторое время теперь.

Спасибо!

6
задан 25 February 2017 в 01:49

3 ответа

Я отвечаю на свой собственный вопрос после некоторого расследования, вдохновленного комментарием Риджи по первоначальному вопросу (спасибо!). Я начал исследовать, есть ли в какой-либо другой библиотеке, используемой ffmpeg, libcudart в качестве зависимости. Инструмент lddtree из пакета pax-utils действительно полезен для этого, так как он дает вам иерархический список зависимостей компоновщика, а не плоский список. Э.Г.

$ lddtree /usr/bin/ffmpeg

Используя это, я обнаружил, что libcudart.so.5.5 был зависимостью компоновщика от libopencv_core.so.2.4, который оставался лежать в /usr/local/lib некоторое время назад, когда я компилировал OpenCV 2.4 из исходного кода, и никогда не очищался, когда новый версия (версия 3.0) пришла вместе.

Чтобы исправить это, я удалил ffmpeg и все opencv пакеты, используя apt, затем вручную удалил оставшиеся файлы opencv 2.4 в /usr/local/lib, используя

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

Затем переустановил ffmpeg из репо и сейчас все хорошо.

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

7
ответ дан 23 November 2019 в 07:42

У меня была похожая проблема. И я решил ее, удалив все экземпляры opencv и ffmpeg, удалив ffmpeg, а затем снова установив:

sudo find / -name "*opencv*" -exec rm -R {} \; 
sudo find / -name "*ffmpeg*" -exec rm -R {} \;
sudo apt-get install ffmpeg
0
ответ дан 23 November 2019 в 07:42

Выполненный ffmpeg видеть, что отсутствует. Попытайтесь найти, где libopencv_core.so.2.4 (или любой файл это отсутствует). Например:

find / -name "*libopencv_core.so*"

и если Вы находите, что это в некотором каталоге копирует его в /usr/lib/:

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

Наконец выполненный снова ffmpeg.

Если все будет в порядке, то это покажет варианты справки для него.

0
ответ дан 23 November 2019 в 07:42

Другие вопросы по тегам:

Похожие вопросы: