четверг, 10 апреля 2008 г.

Все о Mplayer for Linux Ubuntu

Как установить MPLAYER, MENCODER?

Про этот пакет надо знать следующие вещи:
Авторы не рекомендуют использовать подготовленные бинарные варианты, нужно обязательно конфигурировать, транслировать и устанавливать программу на каждой отдельной машине. Авторы утверждают, что только в этом случае Mplayer покажет свою настоящую производительность и не расстроит пользователя.
Mencoder является составляющей частью пакета Mplayer, компилируется и устанавливается вместе с MPlayer.
Итак, устанавливаем MPlayer в Linux-систему:
Простой (быстрый, но не самый лучший) способ:
скачиваем пакеты MPlayer, MPlayer-fonts, MPlayer-gui, MPlayer-skins с AltLinux или его зеркала.
добавляем их в систему (RPM, или через APT)
сразу получаем в системе вполне рабочий MPlayer. Имеем возможность снести пакеты при помощи RPM или APT.

Долгий путь, со всеми возможностями:
Установка делается под root-ом.
Скачиваем дистрибутив свежего MPlayer с www.mplayerhq.hu
Скачиваем всяческие кодеки оттуда же.
Скачиваем русские фонты оттуда же.
Скачиваем шкуры (skin-ы) для MPlayer оттуда же.
--------------------------------------
Раскрываем архив исходников в каком-нибудь каталоге:
tar xvjf mplayer-XXX.tar.bz2
Разворачиваем essentual-20071007.tar.bz2 архив в /usr/local/lib/codecs (файлы без каталогов).
Для того, чтобы хоть что-нибудь было можно скомпилировать, надо установить в систему: make и gcc3.2 или более позднюю версию.
Для того, чтобы иметь GUI, следует установить пакеты: XFree86-devel gtk+ gtk+-devel
Библиотека для разработки liblame-devel должна быть установлена для поддержки MP3-аудиокодека.
libdivx4 тоже нужна для работы с DIVX-форматами. Ищите на http://www.divx.com, скачивайте и устанавливайте (там будет скрипт install.sh).
Авторы ОЧЕНЬ не рекомендуют использовать gcc-2.96. Если у вас именно такая версия и вам лень переустанавливать gcc, то при проведении процедуры configure не забудьте указать ключ --disable-gcc-checking.
В AltLinux Master 2.2 есть несколько вариантов gcc и включить использование необходимой версии можно так:
/usr/sbin/select-gcc 3.2
Устанавливаем всякие библиотеки для того, чтобы MPlayer имел эти кодеки и подсистемы аудио/видеовывода:
libSDL-devel # (Simple DirectMedia Layer):
libpng3-devel # (Portable Network Graphics)
libcdparanoia-devel # (digital audio CD)
libmad-devel # (MPEG audio files)
libvorbis-devel # (Vorbis audio compression)
directfb-devel # (Linux framebuffer)
libalsa2-devel # (Linux framebuffer)
libarts-devel # (arts - analog realtime synthesizer)
glib2-devel # (GIMP toolkit library)
libxvid-devel # (XVID support)
libdv-devel # (Digital Video support)
libx264-devel # (H.264 support)
libdts-devel # (DTS audio decoder)
libmpcdec-devel # (Musepack codec)
libfaac-devel # (Freeware Advanced Audio Coder)
libtheora-devel # (Theora Video Codec)
libspeex-devel # (Speex Codec)
libdvdread-devel # (DVD)
libdvdnav-devel # (DVD Navigation)
libtwolame-devel # (Twolame MPEG audio layer 2 encoder)
liblzo-devel # (Realtime data complession lib)
svgalib-devel # (SVGA)
libXvMC-devel # (X Video with motion compensation)
liblive555-devel # (multimedia streaming RTP/RTCP, RTSP, SIP)
Запускаем скрипт автоконфигурации программ под нашу систему:
./configure
И cмотрим по окончании, чего эта процедура разрешила, и чего запретила. Если есть сомнения, надо доставлять недостающие пакеты или руками указывать опции configure. (Примечание: несмотря на всякие запреты DVD, работа с DVD разрешена использованием mpdvdkit, идущего вместе с дистрибутивом.)
Если нам не нравится список поддерживаемых кодеков, устройств, протоколов, доустанавливаем пакеты и снова повторяем ./configure.
Теперь окончательное конфигурирование программы (ключи здесь для примера, но они вполне даже полезны):
./configure --language=ru --enable-gui --disable-runtime-cpudetection --enable-qtx --enable-menu --enable-xvmc

а также дополнительные указания с помощью ключей командной строки, которые сочтете нужными. Без GUI (Graphic User Interface) вообще как-то непривычно работать, а --language=ru порадует тех, кто не любит сообщения от программ на иностранных языках.
Теперь шаг компиляции и сборки программы:
make
Установить файлы в систему:
make install
Копируем все варианты шкурок(скинов) в /usr/local/share/mplayer/Skin/ и раскрываем их в подкаталоги с теми же названиями, и меняем права доступа:
cd /usr/local/share/mplayer/Skin
for i in *.bz2; do tar xvjf $i; done
chmod -R o+rx *
Раскрываем архив фонтов в /usr/local/share/mplayer/font/
Рекомендую взять mp-arial-iso-8859-1.zip и фонты из его подкаталога arial-14
Шрифты с русской кодировкой koi8-r содержат глюк и в архиве нет шрифтов для OSD.
Для себя копируем в ~/.mplayer/Skin/default/ какую-нибудь любимую шкурку.
Для себя копируем в ~/.mplayer/font фонты для MPlayer-а.
Необоходимо подстроить систему для того, чтобы MPlayer использовал таймер реального времени для синхронизации аудио и видеопотоков:
echo "dev.rtc.max-user-freq = 1024" >>/etc/sysctl.conf
sysctl -p

MPLAYER - прогрыватель видео всяческих форматов. Распространяется на условиях GPL.
Простейшие команды для запуска MPlayer


Просто запуск из командной строки:
gmplayer
(gmplayer - это вариант mplayer с графическим интерфейсом. Далее из меню (щелкните правой кнопкой мыши на экране) вы можете сделать все, что вам захочется.)
AVI-файл:
gmplayer my.avi
Проигрывание AVI-файла при работе в KDE:
gmplayer -ao arts my.avi
(-ao arts - означает, что для вывода звука следует использовать звуковой сервер aRts, который по умолчанию используется в KDE. Если не указать правильный звуковой сервер, mplayer будет пытаться использовать устройство аудиовывода /dev/dsp напрямую, что обычно работает очень криво.)
DVD:
gmplayer -dvd 2 /dev/dvd
(dvd 2 означает, что надо начать со второй части)
DVD:
gmplayer -alang ru -dvd 2 /dev/dvd
(alang - audio language, -alang ru означает, что предпочтительна русская звуковая дорожка)
DVD:
gmplayer -slang ru -alang ru -dvd 2 /dev/dvd
(slang - subtiles language, -slang ru означает, что предпочтительны русские субтитры, также наличие этого параметра включает показ субтитров)
DVD:
mplayer -vo vesa -dvd 2 /dev/dvd
(vo - video output, выбирается драйвер подсистемы видеовывода. Если запустить "mplayer -vo help", увидите весь список драйверов. При просмотре "Миссия на Марс" только с vesa-драйвером мне удалось избежать сообщения о том, что моя система слишком медленна для воспроизведения этого диска. У меня был PIII-500, Nvidia GeForce 2 с драйвером карты от X11R6 V4.1.0. Я не воспользовался X-драйвером видеокарты от Nvidia, думаю это и явилось причиной проблем со скоростью вывода изображения.)
Просмотр телепрограмм с TV-тюнера (Я использовал Avermedia, чип bt878):
mplayer -tv on:device=/dev/video0:driver=v4l:input=0:width=320:height=240:norm=SECAM:chanlist=europe-east:channel=R3
(Значения input: 0=TV, 1=Composite1, 2=S-Video.)
Выбор системы аудиовывода. Если у вас проблемы со звуком (программа об этом сообщает), стоит правильно подобрать устройство/сервер аудио. Следующая команда даст вам список систем, поддерживаемых mplayer-ом:
mplayer -ao help
Выбор системы видеовывода. Если у вас проблемы со видео (изображение дергается), стоит правильно подобрать систему видеовывода. Следующая команда даст вам список систем, поддерживаемых mplayer-ом: mplayer -vo help


MENCODER - перекодировщик видео/аудио. Входит в состав MPlayer.

Простейшие команды работы с mencoder

Замечание: В KDE 3.1 появились программы front-end к Mplayer/Mencoder: KMEDIAGRAB и KMENCODER. На первых порах они изрядно облегчат вашу участь по работе с программами.
Ключи от mplayer имеют такое же значение и в mencoder, хотя не все они поддерживаются.
DVD ===> MP4? *** За 3 прохода ***:
rm frameno.avi # удалить этот файл со звуком, если такой остался с прошлого 3-хпроходного кодирования
mencoder -dvd 1 -ovc frameno -o frameno.avi -oac mp3lame -lameopts vbr=3
mencoder -dvd 1 -ovc lavc -lavcopts vcodec=mpeg4:vpass=1:vbitrate=1057 -oac copy -o movie.avi
mencoder -dvd 1 -ovc lavc -lavcopts vcodec=mpeg4:vpass=2:vbitrate=1057 -oac copy -o movie.avi

Кодирование делается в три прохода:
- сначала делается звуковой файл, чтобы его не кодировать дважды.
- после первого прохода mencoder советует видео-bitrate для успешного кодирования на CD-диски (650/700/800Mb)
- на первом проходе звук кодируется в MP3 с использованием программы Lame, выбирается способ с переменным битрейтом (vbr=3).
:vbitrate=1057 указывает, что bitrate видео должен быть сделан 1057Kb/sec.
-dvd 1 - говорит, что кодировать надо первую видеозапись. На некоторых дисках фильм идет вторым, тогда опция будет выглядеть так: -dvd 2
-oac copy - говорит, что аудиокодек это просто копирование звуковой дорожки.
-o указывает название выходного файла movie.avi
-:vpass указывает номер прохода.
Для пробы за 1.5 часа PIV-2.4/DVD-16x обработал 94-минутный фильм.

Может потребоваться указать номер русской звуковой дорожки. Определить номер дорожки можно так:
mencoder -v -endpos 0 -dvd 1 -nosound -ovc frameno

В информации, выдаваемой mencoder-ом, найдите строку про звук "ru", Там и будет указана цифра для ключа -aid
Для автоматизации процесса кодировки с DVD можно использовать простенький скрипт:
#!/bin/bash
#
# Простенький скрипт для создания mpeg4 <== DVD # # # VN - номер видеозаписи в заголовке # VN=1 # # Первый шаг - узнать ID русской звуковой дорожки # # Для этого получим инфо о DVD (ключ -v) # SS="language: ru aid:" typeset -i aid s=`mencoder -v -endpos 0 -dvd $VN -nosound -ovc frameno | grep "$SS" ` echo "$s" if [ `echo "$s" | wc -l` != "1" ] then echo "Проблемы с определением русской аудиодорожки" echo "Вот:$s" exit 1; fi aid=`echo "$s" | awk -F: '{print $5}'` if [ $? != 0 ] ; then echo "Проблемы с определением русской аудиодорожки"; exit 1; fi if [ -f frameno.avi ] then # remove this file, which can come from a previous 3-pass encoding # (it interferes with current one) rm -f frameno.avi;if [ $? != 0 ] ;then echo "Error removing frameno.avi";exit 1;fi fi # # Получаем файл со звуком, по дороге узнаем предполагаемый видео-битрейт. # SS="800MB CD:" typeset -i vr vr=`mencoder -dvd $VN -aid $aid -ovc frameno -o frameno.avi -oac mp3lame -lameopts vbr=3 | grep "$SS" | awk -F: '{print $2}'` if [ $? != 0 ] ; then echo "Error on pass0"; exit 1; fi mencoder -dvd $VN -aid $aid -ovc lavc -lavcopts vcodec=mpeg4:vpass=1:vbitrate=$vr -oac copy -o movie.avi if [ $? != 0 ] ; then echo "Error on pass1"; exit 1; fi mencoder -dvd $VN -aid $aid -ovc lavc -lavcopts vcodec=mpeg4:vpass=2:vbitrate=$vr -oac copy -o movie.avi if [ $? != 0 ] ; then echo "Error on pass2"; exit 1; fi




Убого, но удобно.
Иногда ручками стоит поменять предполагаемый размер CD(800MB) и номер видеозаписи (-dvd 1).


Разные опции:
Как взять видео с TV-тюнера так, чтобы потом его обрезать и сжать. Сразу сжимать и обрезать не всегда получается - неизвестны параметры:
mencoder tv:// -tv driver=v4l2:input=2:norm=secam -oac mp3lame -ovc copy -o output.avi

или так

Для ядер 2.4.x и ранних 2.6.x: 

$ mencoder tv:// -tv driver=v4l:width=384:height=288:norm=SECAM: \
brightness=10:contrast=-20:hue=-70:saturation=-60: \
audiorate=22050:alsa:forcechan=1:adevice=hw.0: \
buffersize=32:fps=22 -ovc lavc -lavcopts vcodec=mpeg4: \
vbitrate=2100:vme=5:vqscale=3:vb_strategy=1: \
keyint=300 -oac pcm -o tvvideo.avi

Для ядер версии 2.6.6 и выше: 

$ mencoder -tv driver=v4l2:width=512:height=384:device=/dev/video0: \
norm=SECAM:buffersize=128:fps=24:brightness=10:contrast=-20:hue=-70: \
saturation=-60:audiorate=22050:alsa:forcechan=1 -oac pcm tv:// -ovc lavc \
-lavcopts vcodec=mpeg4:vbitrate=1200:vme=4:vqscale=3:vb_strategy=1:keyint=300 \
-vf pp=lb -o tvvideo.avi



Как сделать не самое "квадратное" демо-видео из того, что взял с TV-тюнера (кодек берём msmpeg4v2, поскольку винда без дополнительных пинков читает этот файл):
mencoder output.avi -endpos 48 -oac mp3lame -ovc lavc -lavcopts vcodec=msmpeg4v2:vbitrate=400000 -vf crop=560:460:50:0 -o 1.avi
Пережать с другой геометрией - использовать фильтр -vf scale:
mencoder tst.vob -o 1.avi -vf scale=320:240 -oac mp3lame -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=200000
(здесь используется для аудио кодирование в MP3, для видео - кодек MPEG4, видеопоток — 200Kbit/сек)

1 комментарий:

Анонимный комментирует...

Непонятно!
Нет бы код указывать, а не общие фразы, типа "Устанавливаем пакет бла бла бла..."