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



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/