google
Май 04 2009

HD Video в Linux. Компиляция mplayer с поддержкой VDPAU.

Обновлено: 15 май 2009

Всем известно, что прогресс на месте не стоит, технологии развиваются, в том числе и улучшается качество видео, что интересно, такие форматы как DVD, HDTV, DVD HD, Blue Ray появились уже давно, а вот полноценной поддержки этих форматов в GNU\Linux до сих пор нет. Конечно не все так плохо, многие современные компьютеры, легко выдерживают нагрузку которую им дает HD Video, так же с недавних пор NVidia объявила о аппаратной поддержке HD в новейших моделях видеокарт. И тем не менее, имея мощный core2duo вам возможно удастся посмотреть HD, но при этом проигрыватели которые вы будете использовать и не подозревают, что ядро не одно, и будут загружать CPU1 тогда как CPU2 будет оставаться без нагрузки, согласитесь это не правильно.
Теперь перейдем к более конкретным вещам. У меня недавно стала задача, воспроизвести HD видео в форматах *.mkv и *.mp4 с разрешением 1280×720, за воспроизведение HD в Linux отвечает кодек MPEG-4 AVC (H.264).

И справляется он со своей задачей из рук вон плохо. К примеру Totem нормально видео воспроизвести не в состоянии, происходит ассинхронизация звука и дерганье кадров. А я ведь хочу кино посмотреть, а не презентацию. VLC и Mplayer дали те же результаты, разве что если запустить фильм с помощью MPlayer из командной строки со следующими параметрами:

1
mplayer -ao alsa -lavdopts threads=2:fast:skiploopfilter=all ~/film.mkv

где:
- ao (audio output, type mplayer -ao -help for more Info) – отвечает за звуковую подсистему вывода
- -lavdopts threads=2 – разбить на два потока
- :fast:skiploopfilter=all – отключить все фильтры (качество видео??)

Т.е. если вы запустите фильм в HD качестве данной командой, есть шансы что все пучком, хотя сколько случаев не встречал, это сопровождается нарастающей ассинхронизацией звука с видео. Конечно можно попытаться вместо alsa использовать pulse.

Вариаций на тему как запустить фильм много, вот еще одна что мне удалось найти

1
mplayer -vfm ffmpeg -lavdopts lowres=0:fast:skiploopfilter=all /filename

Но это все не выход, кому-то это поможет, кому-то нет.

Недавно, NVidia выпустила patch для mplayer который «устроняет» проблему (путем использования VDPAU) в союзе с последней версией графических драйверов.

Что такое VDPAU?
VDPAU (Video Decode and Presentation API for Unix) – это свободный набор API разработанный NVIDIA для карточек начиная от GeForce 8 и последних GPU. VDPAU API позволяет распределять процесс декодирования видео и post-processing на GPU т.е. на графическое ядро видео карты. В частности GPU работает с mo comp, iDCT, VLD для MPEG-1, MPEG-2, MPEG-4 AVC (H.264), VC-1, и WMV3/WMV9. Таким образом уменьшая нагрузку процессора.

Проблема: Корректное воспроизведение HD 1080p video в GNU\Linux
Метод решения: Установка последних драйверов от NVidia и компиляция mplayer с поддержкой vdpau.
Используемая система: Ubntu 9.04, 2.6.28-11-generic
Компьютер:
Intel(R) Core(TM)2 Duo CPU T7100 @ 1.80GHz
nVidia GeForce 8600M GT
2500 RAM

Поехали…
Скачайте последнюю версию драйвера с официального сайта NVidia на момент написания статьи это:
Linux Display Driver – x86
Версия:180.51
Операционная система: Linux x86
Опубликовано: 21.04.2009

Если у вас установлены драйвера в системе с помощью «Система» – «Драйверы устройств» вам необходимо деактиврировать текущий драйвер, зайдите «Система» – «Драйверы устройств» выберите ваш драйвер, нажмите удалить. Перезагрузитесь.

Нажмите Alt+F1, введите логин пароль.
Для установки драйвера вам необходимы права суперпользователя:

1
su -

Остановите ваш X-server
Для GNOME

1
/etc/init.d/gdm stop

Для KDE

1
/etc/init.d/kdm stop

Перейдите в каталог с драйвером NVidia и выполните

1
sh NVIDIA-Linux-x86-180.51-pkg1.run

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

Перезагрузитесь

1
reboot

Убедитесь, что драйвера успешно установлены

1
cat /proc/driver/nvidia/version

Теперь вам необходимо скачать последнюю версию пакета mplayer-vdpau. На момент написания это mplayer-vdpau-3532130.tar.bz2 Так же нам понадобятся 2 дополнительных файла которые можно скачать тут
Для удобства я загрузил их себе на сервер в одном архиве. Как говорят американцы «tarred»

Переходим в папку где у вас лежит пакеты mplayer-vdpau & vdpau.tar.gz
И выполняем

1
2
3
4
5
tar xf vdpau_20090305.tar.gz
sudo mv vdpau /usr/include/
tar xf mplayer-vdpau-3532130.tar.bz2
sudo aptitude build-dep mplayer
cd mplayer-vdpau-3482714

В папке mplayer-vdpau-3482714 будет лежать скрипт checkout-patch-build.sh его необходимо чуть-чуть переделать. Открываем его в nano

1
nano checkout-patch-build.sh

Вод текст скрипта

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#!/usr/bin/env sh
 
set -e
set -x
 
co_dir=mplayer-vdpau
mplayer_rev=28348
ffmpeg_rev=16726
dvdnav_rev=1166
 
svn co --ignore-externals -r ${mplayer_rev} svn://svn.mplayerhq.hu/mplayer/trunk ${co_dir}
cd ${co_dir}
svn co -r ${ffmpeg_rev} svn://svn.mplayerhq.hu/ffmpeg/trunk/libpostproc
svn co -r ${ffmpeg_rev} svn://svn.mplayerhq.hu/ffmpeg/trunk/libavformat
svn co -r ${ffmpeg_rev} svn://svn.mplayerhq.hu/ffmpeg/trunk/libavcodec
svn co -r ${ffmpeg_rev} svn://svn.mplayerhq.hu/ffmpeg/trunk/libavutil
svn co -r ${dvdnav_rev} svn://svn.mplayerhq.hu/dvdnav/trunk/libdvdread/src libdvdread4
svn co -r ${dvdnav_rev} svn://svn.mplayerhq.hu/dvdnav/trunk/libdvdnav/src libdvdnav
 
patch -p0 < ../mplayer-vdpau-mplayer.patch
 
#./configure --disable-x264-lavc --disable-x264 --enable-vdpau
#make

Собственно все изменения, что вам нужно сделать, это закомментировать последние две строчки.
Сохраните скрипт.
Запустите скрипт.

1
./checkout-patch-build.sh

Для скачивания исходников, скрипт использует svn, в Ubuntu по умолчанию он не установлен, так что его необходимо установить, в противном случае скрипт выбьет ошибкой.

1
sudo aptitude install subversion

Теперь когда у нас есть исходные коды, нам нужно добавить некоторые дополнительные параметры.

1
2
3
cd mplayer-vdpau
sed 's/%F/-vo vdpau -vc ffh264vdpau,ffmpeg12vdpau,ffvc1vdpau,ffwmv3vdpau, %F/' etc/mplayer.desktop > /tmp/mplayer.desktop
mv /tmp/mplayer.desktop etc/mplayer.desktop

Теперь можно приступать к конфигурации. Так как мы рассчитываем на core2duo и vdpau следующие параметры обязательны

1
2
--target=i686-linux
--enable-vdpau
1
./configure --enable-gui --disable-x264-lavc --disable-x264 --enable-vdpau --target=i686-linux --prefix=/usr --confdir=/etc/mplayer --mandir=/usr/share/man

Далее, если у вас опять таки не core2duo то следующие ухищрения можно пропустить.

1
2
sed 's/i686/core2/g' config.mak > /tmp/config.mak
mv /tmp/config.mak config.mak

Теперь все готово к инсталляции

1
2
make
sudo make install

Далее откройте mplayer с «Приложения» – «Аудио и видео» – «MPlayer»
или откройте нужный вам фильм из консоли, что предпочтительней

1
mplayer ~/torrents/film.mkv

Это все!

Если у вас нет под рукой полноценного HD фильма, скачайте ролик с сайта.
Запустите фильм. В консоли вбейте top и посмотрите на нагрузку процессора. Она должна быть низкой. Конечный результат тоже должен радовать, т.е. фильм воспроизводиться без проблем.

Альтернативный способ
Если описанный мною выше способ не сработал, попробуйте следующие.
Пройдите по этой ссылке.
Прочитайте внимательно содержимое страницы.
Откройте /etc/apt/sources.list

1
nano /etc/apt/sources.list

и добавьте в конец

1
2
deb http://ppa.launchpad.net/rvm/mplayer/ubuntu jaunty main
deb-src http://ppa.launchpad.net/rvm/mplayer/ubuntu jaunty main

Получите ключ

1
sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 03E02400

Выполните update и установите MPlayer

1
2
sudo apt-get update
sudo apt-get install mplayer

Откройте конфиг MPlayer

1
gedit ~/.mplayer/config

Впишите туда следующие

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# Write your default config options here!
#vo=gl:rectangle=1:swapinterval=1:slice-height=0
double=true
lavdopts=fast=1:skiploopfilter=all:threads=2
cache=8128
vsync=true
autosync=30
framedrop=true
brightness=1
afm=hwdts
ao=alsa
stop-xscreensaver=true
 
gl:yuv=2:force-pbo:ati-hack
 
vo=vdpau,xv,
vc=ffh264vdpau,ffmpeg12vdpau,ffwmv3vdpau,ffvc1vdpau,

Начните просматривать HD-видео командой

1
mplayer -ao alsa -vfm gl2 ffmpeg -lavdopts lowres=1:fast:skiploopfilter=all ~/discovery.mkv

Viewed 3121 times by 1585 viewers

Комментарии (3)

  • By salseeg, 31 Январь 2010 @ 11:15

    спасибо, помогло :)
    особенно
    vo=vdpau,xv,
    vc=ffh264vdpau,ffmpeg12vdpau,ffwmv3vdpau,ffvc1vdpau,

  • By Valery, 13 Июнь 2010 @ 2:05

    Откуда вдруг взялась папка «mplayer-vdpau-3482714″ и как туда переходить, если ее нет?

    cd mplayer-vdpau
    sed ’s/%F/-vo vdpau -vc ffh264vdpau,ffmpeg12vdpau,ffvc1vdpau,ffwmv3vdpau, %F/’ etc/mplayer.desktop > /tmp/mplayer.desktop
    mv /tmp/mplayer.desktop etc/mplayer.desktop
    Здесь вообще ни одна команда не мо
    жет выполниться.
    Все последующие – НЕ работают – неизвестная команда, нет файла….
    НЕТ файла «etc/mplayer.desktop»

    И второй спсособ ни хрена не работает:

    mplayer -ao alsa -vfm gl2 ffmpeg -lavdopts lowres=1:fast:skiploopfilter=all ~/discovery.mkv
    Warning unknown option gl:yuv at line 31
    MPlayer SVN-r1.0~rc3+svn20090426-4.4.3 (C) 2000-2009 MPlayer Team
    mplayer: could not connect to socket
    mplayer: No such file or directory
    Failed to open LIRC support. You will not be able to use your remote control.

    Playing ffmpeg.
    File not found: ‘ffmpeg’
    Failed to open ffmpeg.

    Вечно ничего не находит…

  • By admin, 13 Июнь 2010 @ 8:55

    Просто нужно не копи\пастом а заниматься, а не много по думать.
    Папка mplayer-vdpau-3482714 это расхождение в версии.

    И все же не смотря на твою невниматильность я отвечу тебе на вопрос. Папка mplayer-vdpau-3482714 эта папка с другой версии.
    Папка должна называться mplayer-vdpau-3532130 являяесь результатом распаковки архива mplayer-vdpau-3532130.tar.bz2

    Версия роли не играет. Другие версии тут:
    ftp://download.nvidia.com/XFree86/vdpau/

    используй любую.
    В помощь смотри передранную и переведенную с моего блога статью тут:
    http://blog.avirtualhome.com/2009/02/10/compile-mplayer-with-vdpau-support-on-ubuntu/

Other Links to this Post

RSS-лента комментариев к этой записи. TrackBack URI

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

CAPTCHA image