Вольный перевод на русский и комментарии к ветке форума 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 за оригинальный текст.
Пруфпик:
Originally published at
heil0's blog. You can comment here or
there.