Поток сознания, структурированный для более удобного восприятия... Прежде всего для сброса мыслей и впечатлений, которые оттягивают на себя слишком много ресурсов.

четверг, 17 июня 2010 г.

vlc: Ошибка "Не найден подходящий модуль декодирования"

где-то в районе город Омск, Омская область, Россия
   Сегодня после очередного апдейта Squeeze/testing обнаружил, что vlc перестал воспроизводить видео, вываливая ошибку «Не найден подходящий модуль декодирования: VLC не поддерживает аудио или видео формат "XVID". К сожалению, вы не можете это исправить.» Во-первых, мне жутко не понравилась совершенно упадочническая формулировка про «исправить», а во-вторых, глюк на самом деле удалось нейтрализовать весьма примитивным способом, хотя разобраться, в чём именно было дело, удалось не «без пол-литры»... :)
   В общем, пошарахавшись по разным форумам, набрёл на гениальную =) по своей простоте идею: запустить vlc из консоли с ключом -vv и поискать в куче вываленного мусора, что же ему конкретно не нравится... Моментально проявилась строчка красного цвета, радостно сообщающая, что, дескать, нет подходящего модуля, поскольку, скорее всего, vlc просто не поддерживает такой формат. :/ А надо сказать, что непосредственно перед этим действием я специально проверил, не пропали ли из системы кодеки и соответствующие библиотеки из семейства libav*, ffmpeg* и прочие. Оказалось, что всё на месте и даже самое свежее. Вспомнив, что в lenny vlc жестоко конфликтовал с системными версиями libav*, я сунулся было откатиться с версии 0.6 до 0.5, однако менеджер пакетов откровенно и нагло сообщил мне, что смена версии убьёт кучу всего, начиная с audacious и заканчивая какими-то сакральными либами (включая, собственно, и vlc). %) Поэтому я решил подойти к ситуации с другой стороны. :)
   Другая сторона — это утилита ffplay. Запустив её с единственным параметром (с именем видео-файла), получил следующее:
ffplay: error while loading shared libraries: libva-0.31.0.6.so.1: cannot open shared object file: No such file or directory
Оглянувшись на вывод vlc, который я разгребал ранее, чуть выше красных строчек с ошибкой я обнаружил жёлтую строчку с предупреждением:
main decoder warning: cannot load module `/usr/lib/vlc/codec/libavcodec_plugin.so' (libva-0.31.0.6.so.1: невозможно открыть разделяемый объектный файл: Нет такого файла или каталога)
Спросив у системы, что это за libva, я обнаружил, что это, собственно, библиотека для акселерированного вывода видео. o_o Круто, конечно, но в системе никакой версии 0.31.0.6 уже не было... %) Зато была (вернее, есть :) ) 1.0.1. Соответственно, просто невозможно было не применить очевидное решение: сотворить симлинк с «правильным» именем на существующую libva.so.1.0.1. После этого всё встало на свои места. :) И ffplay заработал, и vlc морду гнуть перестал... Такая фигня... :)

Комментариев нет:

Отправить комментарий