CEL: Wśród użytkowników Linuksa nie brakuje kinomanów. Żadną tajemnicą nie jest, że MPlayer należy do najlepszych odtwarzaczy (i nie tylko) w tej galaktyce. Ten FAQ ma na celu przybliżyć proces instalacji tego wyśmienitego narzędzia.
SPIS TRESCI
Kod: Zaznacz cały
1. Wstęp
2. Czego będziemy potrzebować - zależności i nie tylko.
3. Dlaczego NIE UŻYWAĆ GUI MPlayera.
4. Struktura katalogów
5. Środowisko kompilacji
6. Schemat budowy pakietów
7. Kompilacja.
8. Składanie pakietu.
9. Czynności poinstalacyjne.
10. Dokumentacja
MPlayer posiada ogromna ilość opcji kompilacji i niesposób je wszystkie opisać. Podam tutaj kilka znaczących (lub nie) opcji i postaram sie w sposób jak najbardziej przejrzysty wszystko wytłumaczyć.
Produkt kompilacji opakujemy w ,,ładna paczkę'', tak aby mieć w systemie porządek. Proces składania w paczkę nie jest potrzeby i jeśli ktoś lubi mieć lekki bałagan w systemie, to może wykonać make install i nie przejmować się resztą.
2. Czego będziemy potrzebować - zależności i nie tylko.
Oczywiście podstawą są źródła budowanego MPlayera. Ponadto potrzebować będziemy troche kodeków, które nie są dostarczane wraz z MPlayerem:
- ostatni pakiet essentials;
- kodeki Real Video;
- oraz kodeki Quick Time.
To jednak nie wszystko. Możemy rozszerzyć liste obsługiwanych formatów instalując xvidcore (tutaj w wersji 1.1.0) lub/i wrzucić FFmpeg, który niestety będziemy musieli pobrać z repozytorium korzystając z Subversion (UWAGA: trzeba będzie spełnić sporo zależności jeśli chodzi o ten VCS):
Kod: Zaznacz cały
svn checkout svn://svn.mplayerhq.hu/ffmpeg/trunk ffmpeg
- CDParanoia-III;
- Libdv - (Quasar DV) kodek dla formatu DV;
- x264 - kodek formatu h264;
- Sterowniki DVB oraz dodatkowo - dla telewizji satelitarne (Digital Viedo Broadcast).
Obsługa DVD:
- Libdvdcss - biblioteka, która pozwala uzyskać dostęp do DVD tak jak do urządzenia blokowego, co ,,pomija'' szyfrowanie - używanie jej jest zakazane w kilku krajach (m. in. w USA);
- Libdvdread - biblioteka potrzeba jeśli chcemy odczytywać filmy na DVD (dobrze jest skompilować ją z obsługą biblioteki libdvdcss);
- Libdca - biblioteka do dekodowania formatu DTS.
Jeśli chodzi o Audio, to mamy do wyboru:
- ALSA
- aRts;
- EsounD;
- NAS;
- SDL.
Z bibliotek potrzebować możemy:
- libpng;
- libjpeg;
- Giflib;
- GTK+;
- FreeType;
- Fontconfig;
- AAlib;
- Fribidi;
- DirectFB.
Najważniejsze z nich, to libpng/libjpeg (zrzut klatek do PNG i JPEG), GTK+ (interfejs graficzny jest zrobiony - niestety - w GTK+ wersja 1.x.x), FreeType oraz Fontconfig.
Na koniec tej sporej listy należy zrobić sobie plik slack-desc o treści:
Kod: Zaznacz cały
mplayer: MPlayer - Linux Movie Player & MEncoder - video encoder
mplayer:
mplayer: MPlayer can play most standard video formats and all other with the
mplayer: help of external codecs.
mplayer:
mplayer:
mplayer: MEncoder is a command line video encoder for advenced users.
mplayer:
mplayer:
mplayer:
mplayer:
Dotyczy wersji przed 1.0pre8!
Interfejs GUI MPlayera jest delikatnie mówiąc przestarzały. Został napisany z wykorzystaniem GTK+ w wersji 1. Nie jest on ani poręczny, ani estetyczny (istnieją odtwarzacze z o wiele ładniejszym GUI). Odpalenie filmu z linii poleceń jest szybszą i ,,poręczniejszą'' alternatywą. Ponadto interfejs GUI potrafi zachowywać się niestabilnie i sprawiać wiele problemów. Z tych właśnie powodów lepszym rozwiązaniem jest korzystać z linii poleceń.
W wersji 1.0pre8 GUI MPlayera zostało przepisane i wykorzystuje bibliotekę GTK+ w wersji 2. Jeśli użyjemy opcji --enable-gui, to zostanie zbudowany interfejs z wykorzystaniem tej wersji GTK.
4. Struktura katalogów
Najlepiej jest sobie zorganizować jakoś miejsce pracy. W tym celu tworzymy drzewo katalogów, np:
Kod: Zaznacz cały
./slack_devel
|
|__ src ($src)
|__tmp ($tmp)
|__prod ($prod)
\__packages ($pkg)
*) src -- katalog gdzie mamy zapisane źrodła oraz pliki slack-desc;
*) tmp -- tutaj będziemy rozpakowywać źrodła i kompilować;
*) prod -- KATALOG ROBOCZY (KR), tutaj przekierujemy instalacje;
*) packages -- miejsce do przechowywania pakietów.
W nawiasach podałem nazwy, poprzez które będę się odnośił do poszczególnych katalogów w dalszej częsci tekstu.
5. Środowisko kompilacji
MPlayer potrafi sam dobrać odpowiednie flagi kompilacji, aczkolwiek możemy je sobie ustawić po swojemu. Developerzy MPlayera zalecają nie ustawianie własnych flag i pozostawienie ich doboru skryptowi konfiguracyjnemu, jednak jeśli wiemy dobrze co robimy (co robią używane przez nas flagi), to można zignorować te zalecenia.
Więcej o flagach optymalizacji i architekturze można poczytać np. tutaj.
Musimy ustawić sobie środowisko pracy, tj. ustawić zmienne CFLAGS i/lub LDFLAGS (nie musimy ustawiać CXXFLAGS -- nie będziemy mieli do czynienia z kodem C++). Przykładowo:
Kod: Zaznacz cały
export CFLAGS="-O2 -mtune=prescott -pipe"
export LDFLAGS=-s
Zmienna CFLAGS odpowiada za flagi dodawane przy kompilacji źrodła C. Znaczenie kolejnych opcji jest następujące:
*) -O2 -- włącza optymalizacje kodu na poziomie 2 (poziomów jest 3, w kompilatorach serii 3.4.5 i wyżej jest jeszcze poziom 4). Jest to rozsądny wybór, dlatego, że optymalizacja na poziomie wyższym, tj. 3, rzadko daje pożądany efekt w postaci mniejszej binarki.
*) -mtune=ARCH -- włącza kilka flag optymalizujacych kod specjalnie pod architekture ARCH procesora. Jesli nie wiesz pod jaką nazwą występuje architektura twojego procesora to w man gcc znajdziesz więcej informacji na ten temat.
UWAGA!!! Opcja -mtune występuje tylko w kompilatorach GCC 3.4.x i wyższych. We wcześniejszych wersjach należy stosować opcje -cpu! Ponadto można użyć flagi -march, która jest ,,mocniejsza'' od -mtune. Swoją drogą włącza ona również -mtune (lub -mcpu).
*) -pipe -- opcja ta nie optymalizuje kodu, ale przyspiesza proces kompilacji. Mowi ona kompilatorowi, aby zamiast plików tymczasowych używal potoków, co znacząco przyspiesza kompilacje.
Oczywiście możesz tutaj podawać jakie chcesz opcje.
6. Schemat budowy pakietów
Schemat budowy pakietu jest zasadniczo zawsze taki sam, tj:
1) kompilujemy źrodło (większość pakietów umieszczamy z prefixem ustawionym na /usr);
2) przekierowujemy instalacje do KATALOGU ROBOCZEGO ($prod), gdzie będzie składany pakiet;
3) tworzymy w KR katalog install i do niego kopiujemy odpowiedni plik slack-desc i/lub doinst.sh.
4) składamy pakiet komendą makepkg.
Jeszcze jedna mała uwaga:
Jeśli posiadacie komputer z HT lub maszynę wieloprocesorowa (2 to juz wiele:D), to można podać odpowiednią opcję (-jX, gdzie X to ilość wątków) do make, tak aby kompilowane było kilka plików jednocześnie, np. dla HT:
Kod: Zaznacz cały
make -j2
7. Kompilacja
W pierwszej kolejności musimy rozpakować pobrane kodeki w dwa miejsce: tam gdzie będziemy składać paczke i tam gdzie będą one po instalacji paczki. Powiedzmy, że będzie to katalog /usr/lib/codecs. Tak wiec tworzymy te katalogi:
Kod: Zaznacz cały
mkdir -p /usr/lib/codecs
mkdir -p $prod/usr/lib/codecs
Musimy jeszcze zmienic prawa dla tych kodeków:
Kod: Zaznacz cały
chmod 755 $prod/usr/lib/codecs/*.so*
chmod 644 $prod/usr/lib/codecs/*.dll $prod/usr/lib/codecs/*.ax $prod/usr/lib/codecs/*.acm \
$prod/usr/lib/codecs/*.qtx $prod/usr/lib/codecs/*.DLL $prod/usr/lib/codecs/*.qts $prod/usr/lib/codecs/*.drv
Kod: Zaznacz cały
cp $prod/usr/lib/codecs/* /usr/lib/codecs
Przechodzimy do konfiguracji. Przykładowe configure:
Kod: Zaznacz cały
./configure --prefix=/usr --confdir=/etc --disable-lirc --disable-lircc \
--disable-tv --disable-rtc --disable-tv-v4l --disable-tv-v4l2 --disable-esd \
--disable-tv-bsdbt848 --enable-dvdread --disable-macosx --disable-inet6 \
--with-xvidlibdir=/usr/lib --with-xvidincdir=/usr/include --enable-libavutil_so \
--enable-libavcodec_so --enable-libavformat_so --enable-largefiles \
--enable-alsa --language=pl --with-win32libdir=/usr/lib/codecs --with-reallibdir=/usr/lib/codecs \ --with-extraincdir=/usr/include
(*) --prefix=/usr --confdir=/etc - te dwie opcje powinny być w każdej kompilacji;
(*) --disable-lirc --disable-lircc - (disable lub enable) zdalne sterowanie poprzez LIRC i/lub LIRCCD LIRC klient daemon;
(*) --disable-tv - (disable lub enable) interfejs TV (TV i DVB);
(*) --disable-rtc - (disable lub enable) RTC (Real Time Clock = /dev/rtc), zmiany w jadrach > 2.6.16 spowodowały, że MPlayer nie kompiluje się z tą opcją i należy użyć tutaj disable;
(*) --disable-tv-v4l --disable-tv-v4l2 - (disable lub enable) interfejsy Video4Linux TV i Video4Linux2 TV;
(*) --disable-tv-bsdbt848 - (disable lub enable) interfejs BSD BT848;
(*) --disable-esd --disable-arts - (disable lub enable) wsparcie dla aRts i EsounD;
(*) --enable-dvdread - (disable lub enable) czytanie plyt DVD - biblioteka ta jest również częścią MPlayera ale z powodów podanych poniżej (dla FFmpeg) lepiej jest korzystać z zewnętrznej biblioteki;
(*) --disable-macosx - (disable lub enable) dodatki dla MacOSa;
(*) --disable-inet6 - (disable lub enable) wsparcie dla IPv6;
(*) --with-xvidlibdir=/usr/lib --with-xvidincdir=/usr/include - jeśli kompilowaliśmy wcześniej xvidcore z --prefix=/usr, to te opcje mają na celu pomóc MPlayerowi znaleźć biblioteki i nagłówki xvidcore;
(*) --enable-libavutil_so --enable-libavcodec_so --enable-libavformat_so - (disable lub enable) biblioteki dostarczane przez FFmpeg, są one również częścią MPlayera i jeśli nie korzystamy z zewnętrznego FFmpeg, to nie musimy podawać tych opcji. Nowe wersje MPlayera wychodzą dosyć rzadko, a FFmpeg jest rozwijane na bieżąco i warto co jakiś czas ściągnąć nową wersję i ją skompilować. Nie będziemy musieli rekompilować MPlayera po takim upgrade;
(*) --enable-alsa - (disable lub enable) obsluga wyjścia Audio przez system ALSA;
(*) --language=pl - wybieramy język;
(*) --with-win32libdir=/usr/lib/codecs --with-reallibdir=/usr/lib/codecs - wskazujemy miejsce gdzie wrzuciliśmy kodeki;
(*) --enable-largefiles - wsparcie dla plików > 2GB;
(*) --with-extraincdir=/usr/include - opcja, jak to się mówi, w razie 'W'.
Pozostałe opcje i uwagi:
(*) --enable-menu - włącza OSD (On Screen Display)
(*) --enable-shared-pp - MPlayer tworzy statyczną bibliotekę post-procesingu (PP). Jeśli chcemy wymusić utworzenie biblioteki dzielonej należy podać tą opcje, ale tylko w przypadku korzystania z wewnętrznej biblioteki FFmpeg. Jeśli to zrobimy musimy również dodać poniższą opcje;
(*) --disable-fastmemcpy - przy budowie dzielonej biblioteki post-procesingu, opcja ta zapobiega występowaniu błędów undefined reference, gdy inne biblioteki próbują zlinkować sie ze statyczną biblioteką PP, która nie została zbudowana (opcja wyżej);
(*) --enable-gui - zbuduj interfejs GUI MPlayera z wykorzystaniem GTK+ 2;
(*) --enable-old-gui - zbuduj interfejs GUI MPlayera z wykorzystaniem GTK+ 1 - stary interfejs, który został zastąpiony nowym napisanym z wykorzystaniem GTK+ 2 (wyżej wymieniona opcja);
(*) --disable-network - wyłącza wsparcie dla strumieni http, mms i rtp.
Opcji jest więcej, ale skrypt configure sprawdzi co mamy w systemie i sam podejmie decyzję o tym jaką ,,usługę'' włączyć. Wszystkie opcje można znaleźć wydając komendę
Kod: Zaznacz cały
./configure --help | less
Kod: Zaznacz cały
make dep && make
Jeśli po wydaniu powyższej komendy pojawi się błąd o braku pliku version.h, to trzeba uruchmić skrypt version.sh i ponownie rozpocząć kompilacje.
8. Składanie pakietu
Tworzymy teraz resztę drzewa katalogów w miejscu gdzie przekierowujemy instalację ($prod), tj.
Kod: Zaznacz cały
mkdir -p $prod/etc/mplayer
mkdir -p $prod/usr/bin
mkdir -p $prod/usr/man
mkdir -p $prod/usr/share/mplayer
Kod: Zaznacz cały
make install prefix="$prod/usr" BINDIR="$prod/usr/bin" CONFDIR="$prod/etc/mplayer" \
MANDIR="$prod/usr/man" DATADIR="$prod/usr/share/mplayer"
Kod: Zaznacz cały
cp etc/codecs.conf $prod/etc/mplayer
cp etc/input.conf $prod/etc/mplayer
cp etc/menu.conf $prod/etc/mplayer
Kod: Zaznacz cały
cd $prod
mkdir install
cat $src/slack-desc > install/slack-desc
makepkg -l y -c n $pkg/mplayer-1.0pre8-ARCH-1.tgz
Na końcu usuwamy katalog, do którego kopiowaliśmy kodeki:
Kod: Zaznacz cały
rm -rf /usr/lib/codecs
9. Czynności poinstalacyjne
Po zainstalowaniu paczki musimy wykonać jeszcze kilka czynności:
- tworzymy katalog konfiguracji dla MPlayera w naszym katalogu domowym i kopiujemy pliki z /etc/mplayer:
Kod: Zaznacz cały
mkdir ~/.mplayer
cp /etc/mplayer/* ~/.mplayer
Kod: Zaznacz cały
cp arial.ttf ~/.mplayer/subfont.ttf
Kod: Zaznacz cały
touch ~/.mplayer/config
Kod: Zaznacz cały
vo=sdl
ao=alsa
fs=yes
cache=8192
dr=yes
font=~/.mplayer/subfont.ttf
subfont-autoscale=0
subfont-text-scale=28
subfont-encoding=cp1250
dvd-device=/dev/cdrom
- vo - Video Output, dostępne wyjścia można znaleźć wydająć polecenie
Kod: Zaznacz cały
mplayer -vo help
- ao - Audio Output, tak jak wyżej dostępne wyjścia uzyskujemy wydając polecenie
Kod: Zaznacz cały
mplayer -ao help
- cache=ROZMIAR - cachowanie odtwarzanego filmu (ROZMIAR danych zostanie zarezerwowany);
- dr=yes - Double Rendering - opcja przydatna, ale wymaga dosyć mocnego komputera;
- dvd-device=/dev/cdrom - wskazujemy nasz napęd DVD;
- font=~/.mplayer/subfont.ttf - ścieżka do czcionki, czasem '~' potrafi nie zadzialać, więc lepiej jest podać pełną ścieżkę;
W przypadku czcionek TTF:
- subfont-autoscale=0 - wyłącz autoskalowanie rozmiaru czcionki;
- subfont-text-scale=28 - ustaw ,,rozmiar'' czcionki;
- subfont-encoding=cp1250 - ustaw kodowanie napisów.
10. Dokumentacja
Niezwykle bogatą dokumentację (w języku ojczystym) do MPlayera można znaleźć tutaj.
------------------------------------------------------------------------------------------------
Autor:difrost