HOWTO: Nvidia Driver+VDPAU+Smplayer+Mplayer

27 May, 2009 (18:17) | Uncategorized | By: heil0

Вольный перевод на русский и комментарии к ветке форума Ubuntuforums: HOWTO: Nvidia Driver+VDPAU+Smplayer+Mplayer

Задача: ускорение HD-видео, закодированного кодеками x.264, VC-1, WMV-hd и mpeg2-HD.
Требования:

1) *buntu-совместимая система (так как руководство для Ubuntu), версия ядра не ниже 2.6.26, версия nvidia-glx не ниже 180.35;

2) как ни удивительно, видеокарта фирмы Nvidia, основанная на чипе G92 и моложе (это все 8***, кроме 8800GTX/GTS640/GTS320/Ultra и все более современные – 9*** и GTX2**, кроме, кажется, GTX280, и все GT1**);

3) доступ к репозитариям;

4) готовность тыкать кнопочки и читать вывод в консоли.

Приступим.

1) Итак, установите драйвер NVIDIA. Если в репозитарии находится более старый, чем нужно драйвер, придется скачать бинарный bundle с сайта Nvidia, и следовать инструкциям Ubuntu wiki. В настоящий момент в репозитарии для последней версии Ubuntu “Jaunty restricted” находится драйвер вполне подходящей версии 180.44, поэтому просто

$ sudo aptitude install nvidia-glx-180

или установите пакет nvidia-180-glx в Synaptic.
Закрывать Synaptic не нужно, он нам пригодится ещё очень много раз.

Например, к зависимостям системы стоит добавить

nvidia-180-libvdpau-dev,

пригодится при сборке.

2) Установим окружение для сборки mplayer:

$ sudo aptitude install build-essential subversion
$ sudo aptitude build-dep mplayer

Для справки, build-dep потребует установки 125 пакетов и съест около 20 мегабайт трафика.

3) Теперь скачаем срез самого последнего mplayer и соберем его:

$ svn checkout svn://svn.mplayerhq.hu/mplayer/trunk mplayer
$ cd ~/mplayer
$ ./configure
$ make

Десять минут, и у нас есть готовый mplayer.

4) Проверим работу на закодированном x.264 видео:

$ mplayer -vo vdpau -vc ffh264vdpau path/to/file

4.1) Автор оригинального manual’а предлагает два хака в случае проблем:
Ошибка

Error 25 at libvo/vo_vdpau.c:992

лечится правкой 704-й строчки файла mplayer-vdpau/libvo/vo_vdpau.c

max_references = ((12 * 1024 * 1024) / surf_size) + 2; //2 more (ugly hack)

Увеличивая последнее слагаемое (максимум 11) и проверяя результат, можно добиться работы на всех файлах. Скажу честно – у меня работает пока из коробки.

4.2) Ошибка нехватки памяти, актуально для 128-мегабайтных модификаций встроенных 9300M, 8200G или самых простых 8400GS

Error 23 at libvo/vo_vdpau.c:791

Лечится правкой 94-й строки того же файла:

#define NUM_VIDEO_SURFACES_H264 17 // (1 frame being decoded, up to 16 references)

Уменьшая количество одновременно обрабатываемых кадров, мы снизим требования к памяти, однако стоит помнить, что на динамичном высокобитрейтном видео это может привести к “замораживаниям” картинки и остановке проигрывания.

Таким образом, у нас есть собранный работающий mplayer. Однако его использование ужасно неудобно. Прикрутим ускоренный mplayer к одному из лучших front-end’ов для mplayer – Smplayer.

5) Я поставил стабильный Smplayer из официального репозитария

$ sudo aptitude install smplayer

В зависимостях обязательно всплывет mplayer, его потом можно удалить.

6) Настроим Smplayer:
В Options>Preferences (Настройки>Основные) зададим новый путь к mplayer (~/mplayer/mplayer), очистим путь сохранения скриншотов (рекомендует автор manual’а).
Во вкладке Видео зададим Output (Устройство вывода) vdpau.

SSA-субтитры работают, поэтому выключать их не обязательно, в отличие от слегка устаревшего оригинального manual’а.
Самое важное: Advanced>Options (Дополнительно>Дополнительно) во вкладке Mplayer в строке Options (Настройки) задайте

-vc ffmpeg12vdpau,ffh264vdpau,ffwmv3vdpau,ffvc1vdpau,

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

На этом все, спасибо AdrianVeidt за оригинальный текст.

Пруфпик:mplayer

Comments

Comment from StraNNicK
Time August 4, 2009 at 6:04

Собственно, вопрос. А отчего бы не сделать ещё один шаг и не выполнить
sudo checkinstall -D
?

Тогда не придётся плясать вокруг “удалить mplayer, который потянул smplayer”

Comment from heil0
Time August 9, 2009 at 10:35

Мда, на это моего кун-фу не хватило, спасибо.

Write a comment