Mplayer и VDPAU: потерянный кодек
Буквально месяца два назад обновил драйвер на мою новенькую видеокарту GeForce 8400 с поддержкой VDPAU (декодирование видео средствами GPU). После этого решил проверить эту новую функцию на HD видео, которое очень сильно тормозит при моем текущем старом Celeron 2000.
Выбрал видео «потолще», запустил – загрузка процессора 100%, тормоза неимоверные. Обновил MPlayer с поддержкой VDPAU, обновил фронтед для него – SMPlayer, обновил драйвер до последней версии и обновил библиотеки ffmpeg. Для Ubuntu это всё брал на PPA (у меня Ubuntu 9.10):
$ cat /etc/apt/sources.list ... deb http://ppa.launchpad.net/brandonsnider/ppa/ubuntu/ jaunty main deb http://ppa.launchpad.net/rvm/testing/ubuntu jaunty main deb http://ppa.launchpad.net/nvidia-vdpau/ppa/ubuntu karmic main ...
Затем я запустил видео, следуя инструкциям c ubuntuforums.org и launchpad.net:
$ mplayer -vo vdpau -vc ffmpeg12vdpau,ffh264vdpau,ffwmv3vdpau,ffvc1vdpau, /path/to/file
Каково же было моё удивление после того, как тормозящее ранее HD видео проигрывалось без единого заскока. Проверка загруженности процессора показала, что он загружен на смешные 10%. То есть получилось так, что производительность увеличилась в целых десять раз.
Порадовался я такому положению дел и благополучно забыл за ненадобностью. Через месяц понадобилось проиграть HD видео и я опять вспомнил, но не тут-то было. Злополучный MPlayer выдавал только звук и ошибку видеокодека:
========================================================================== Forced video codec: ffh264vdpau Opening video decoder: [ffmpeg] FFmpeg's libavcodec codec family Cannot find codec 'h264_vdpau' in libavcodec... VDecoder init failed :( Cannot find codec matching selected -vo and video format 0x31637661. Read DOCS/HTML/en/codecs.html! ==========================================================================
Google молчал как партизан, знакомые убунтоводы тоже. Переустановка библиотек, плеера, дров – не помогало абсолютно ничего. Я уже было отчаялся найти решение проблемы, но оно таки внезапно появилось.
Когда я устанавливал очередной софт, случайно наткнулся на пакет kubuntu-restricted-extras, который рекомендует установить некоторые проприетарные пакеты для проигрывания DVD и mp3. Для этого в рекомендуемых пакетах были библиотеки ffmpeg (libavformat, libavdevice и т.д.), но со словом unstripped в названии. Судя по описанию, это были неограниченные версии обычных библиотек. Терять не чего, решил поставить. И, как вы уже догадались, после замены обычных библиотек на эти, MPlayer опять начал показывать HD видео используя VDPAU.
Коротко: решить проблему с потерянным vdpau-кодеком в MPlayer можно заменив пакет libavcodec на libavcodec-unstripped
Внимание! После обновления от 20.08.2009 пакета ffmpeg до версии 4:0.5+svn20090706-1ubuntu1 пакет libavcodec-unstripped был удален из дистрибутива и поддержка VDPAU была добавлена в обычный libavcodec52 (исправлена ошибка #511544).