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 941 times by 414 viewers
1 комментарий
Other Links to this Post
RSS-лента комментариев к этой записи. TrackBack URI


By salseeg, 31 Январь 2010 @ 11:15
спасибо, помогло :)
особенно
vo=vdpau,xv,
vc=ffh264vdpau,ffmpeg12vdpau,ffwmv3vdpau,ffvc1vdpau,