Spis treści
libcaca
- Color ASCII Art library (biblioteka kolorowego ASCII-Art)libavcodec
Przy pierwszej instalacji powinieneś przeczytać wszystko od tego miejsca do końca rozdziału Instalacja, łącznie z tekstami, do których są tam odnośniki. Jeśli masz jeszcze jakieś pytania, wróć do Spisu treści i w nim poszukaj odpowiedniego tematu, przeczytaj FAQ albo spróbuj przegrepować zbiory. Odpowiedź na większość pytań powinna być zawarta w niniejszej dokumentacji, a pozostałe prawdopodobnie zostały już zadane na naszych listach dyskusyjnych. Sprawdź archiwa, można tam znaleźć wiele interesujących informacji.
MPlayer jest odtwarzaczem filmów dla Linuksa (działa też na wielu innych Uniksach i na procesorach nie-x86, patrz porty). Odtwarza większość zbiorów w formatach MPEG, VOB, AVI, OGG/OGM, VIVO, ASF/WMA/WMV, QT/MOV/MP4, FLI, RM, NuppelVideo, yuv4mpeg, FILM, RoQ, PVA, zbiory Matroska, obsługiwanych przez wiele rdzennych kodeków, XAnim, RealPlayer, i Win32 DLL. Możesz w nim także oglądać filmy VideoCD, SVCD, DVD, 3ivx, RealMedia, Sorenson, Theora i MPEG-4 (DivX) Inną wielką zaletą MPlayera jest szeroki zakres obsługiwanych sterowników wyjściowych. Działa on z X11, Xv, DGA, OpenGL, SVGAlib, fbdev, AAlib, libcaca, DirectFB, ale możesz też używać GGI i SDL (i dzięki temu wszystkich ich sterowników) i niektórych specyficznych dla kart graficznych sterowników niskiego poziomu (dla Matroxa, 3Dfxa, Radeona, Mach64, Permedia3)! Większość z nich obsługuje skalowanie sprzętowe lub programowe, więc filmy można oglądać na pełnym ekranie. MPlayer obsługuje wyświetlanie przy użyciu niektórych sprzętowych dekoderów MPEG, takich jak DVB i DXR3/Hollywood+. Nie można też zapomnieć o ładnych, dużych, antyaliasowanych i cieniowanych napisach (14 obsługiwanych typów) z czcionkami europejskimi/ISO 8859-1,2 (polskimi, węgierskimi, angielskimi, czeskimi, itp.), cyrylicą, koreańskimi i wyświetlaniem na ekranie (OSD)!
MPlayer jest doskonały do odczytywania uszkodzonych plików MPEG (przydatne przy niektórych VCD), odtwarza również błędne pliki AVI, których nie można odczytać za pomocą wiodącego odtwarzacza multimedialnego pod Windows. Nawet zbiory AVI bez bloku indeksowego można odtworzyć i można zrekonstruować ich indeks tymczasowo, używając opcji -idx, albo trwale dzięki MEncoderowi, w ten sposób umożliwiając sobie przewijanie! Jak widać najważniejsza jest tu stabilność i jakość, ale szybkość również jest zadziwiająca. Ma też potężny system wtyczek do manipulacji obrazem i dźwiękiem.
MEncoder (Enkoder filmów
MPlayera) jest to prosty enkoder filmów,
zaprojektowany do kodowania odczytywalnych przez
MPlayera filmów
(AVI/ASF/OGG/DVD/VCD/VOB/MPG/MOV/VIV/FLI/RM/NUV/NET/PVA)
na inne odczytywalne formaty (patrz niżej). Może kodować rozmaitymi kodekami
video, takimi jak MPEG-4 (DivX4)
(jedno- lub dwuprzebiegowy), libavcodec
oraz audio PCM/MP3/VBR MP3.
Możliwości MEncodera
libavcodec
z ffmpeg.
Dźwięk MP3 VBR
Dźwięk MP3 VBR w odtwarzaczach pod Windows nie zawsze brzmi przyjemnie!
Planowane możliwości
MPlayer i MEncoder mogą być rozprowadzane zgodnie z warunkami GNU General Public License Version 2.
Zaczęło się rok temu... Wypróbowałem mnóstwo odtwarzaczy pod Linuksa (mtv, xmps, dvdview, livid/oms, videolan, xine, xanim, avifile, xmmp), ale one wszystkie miały jakieś problemy. Przeważnie z wyjątkowymi formatami plików lub z synchronizacją audio/video. Większość z nich nie potrafiła odtwarzać zarówno plików MPEG-1, MPEG-2 jak i AVI (DivX). Wiele odtwarzaczy miało także problemy z jakością obrazu lub prędkością odtwarzania. Tak więc zdecydowałem się zmienić jeden z istniejących lub napisać własny odtwarzacz...
A'rpi, 2001
mpg12play v0.1-v0.3: 22-25 września 2000
Pierwsza próba, przerobione w pół godziny! Używałem libmpeg3 z http://www.heroinewarrior.com aż do wersji 0.3, ale miała ona problemy z jakością obrazu i szybkością odtwarzania.
mpg12play v0.5-v0.87: 28 września - 20 października, 2000
Kodek MPEG został zastąpiony przez DVDview Dirka Farina, była to naprawdę świetna rzecz, ale zbyt wolna i napisana w C++ (A'rpi nienawidzi C++!!!)
mpg12play v0.9-v0.95pre5: 21 października - 2 listopada, 2000
Kodekiem MPEG został libmpeg2(mpeg2dec) autorstwa Aarona Holtzmana i Michela Lespinasse. Jest to znakomity, bardzo szybki zoptymalizowany kod w C z perfekcyjną jakością obrazu i 100% zgodnością ze standardem MPEG.
MPlayer v0.3-v0.9: 18 listopada - 4 grudnia, 2000
Był to pakiet dwóch programów: mpg12play v0.95pre6 i mój nowy prosty odtwarzacz AVI 'avip' bazujący na ładowarce DLLi Win32 z avifile.
MPlayer v0.10: 1 stycznia 2001
Odtwarzacz formatu MPEG i AVI w jednym programie!
MPlayer v0.11pre series:
Przyłączyło się kilku nowych deweloperów i od wersji 0.11 projekt MPlayer jest pracą grupową. Dodano obsługę plików ASF i kodowanie/dekodowanie OpenDivX (zajrzyj na http://www.projectmayo.com)
MPlayer v0.17a "The IdegCounter" 27 kwietnia 2001
Po 4 miesiącach burzliwego rozwoju z 0.11pre powstała stabilna wersja! Wypróbuj ją i bądź zadziwiony! Dodano tysiące nowych funkcji... oraz oczywiście ulepszono stary kod, usunięto błędy, itp.
MPlayer 0.18 "The BugCounter" 9 lipca 2001
2 miesiące od 0.17 i oto nowe wydanie... Ukończona obsługa ASF, więcej obsługiwanych formatów napisów, wprowadzona libao (podobna do libvo ale do audio), nawet bardziej stabilne niż kiedykolwiek, i tak dalej. MUSISZ wypróbować!
MPlayer 0.50 "The Faszom(C)ounter" 8 października 2001
Hmm. Kolejne wydanie. Tony nowych funkcji, wersja beta GUI, poprawione błędy, nowe sterowniki vo i ao, kod przeniesiony na wiele systemów, dołączenie otwartych kodeków DivX i o wiele więcej. Wypróbuj!
MPlayer 0.60 "The RTFMCounter" 3 stycznia 2002
Obsługa formatów MOV/VIVO/RM/FLI/NUV, własne kodeki CRAM, Cinepak, ADPCM i obsługa binarnych kodeków XAnima; obsługa napisów DVD, pierwsze wydanie MEncodera, przechwytywanie obrazu z TV, cache, liba52, niezliczone poprawki.
MPlayer 0.90pre10 "The BirthdayCounter" 11 listopada 2002
Choć nie jest to wydanie stabilne, wspomnę o nim, gdyż wyszło dwa lata po MPlayerze v0.01. Wszystkiego najlepszego, MPlayer!
MPlayer 0.90rc1 "The CodecCounter" 7 grudnia 2002
Znów nie jest to wydanie stabilne, ale po dodaniu obsługi Sorenson 3 (QuickTime) i Windows Media 9, MPlayer został pierwszym na świecie odtwarzaczem filmów obsługującym wszystkie znane formaty video!
MPlayer 0.90 "The CounterCounter" 6 kwietnia 2003
Po ponad roku, zdecydowaliśmy w końcu, że kod stał się znów naprawdę stabilny i gotów do publikacji w formie stabilnego wydania. Niestety, zapomnieliśmy nawet o zwiększeniu numeru wersji, a ponieważ wpadło trochę innych denerwujących błędów, więc przygotujcie się na...
MPlayer 0.91 13 sierpnia, 2003
Naprawiono wyżej wymienione i mnóstwo innych błędów. Jest to najnowsza stabilna wersja.
MPlayer 1.0pre1 "Development on the beach" 1 września 2003
Choć nie jest to wydanie stabilne, wspomnę o nim, ponieważ jest to pierwsza wersja zapoznawcza z rodziny 1.0 MPlayera i ma ona za zadanie wspomóc wielkie łowy na błędy. To wielki krok naprzód!
MPlayer 1.0 data jeszcze nieznana
Przewodnik szybkiej instalacji znajdziesz w pliku README. Proszę, najpierw go przeczytaj, a później wróć do tego dokumentu po mrożące krew w żyłach szczegóły.
W tym rozdziale postaram się przeprowadzić Cię przez kompilację i konfigurację MPlayera. Nie będzie to łatwe, ale niekoniecznie też musi być trudne. Jeżeli zauważysz zachowanie inne niż to, które objaśniam, proszę poszukaj w dokumentacji, a na pewno znajdziesz odpowiedzi. Jeżeli widzisz linki, śledź je i czytaj uważnie ich zawartość. Zajmie to trochę czasu, ale z pewnością JEST tego warte.
Potrzebujesz dość nowego sprzętu. Jeśli używasz Linuksa, zalecane są jądra z serii 2.4.x.
binutils - zalecana jest wersja 2.11.x. Program ten odpowiedzialny jest za generowanie instrukcji MMX/ 3DNow!/itp., dlatego też jest bardzo ważny.
gcc - zalecanymi wersjami są: 2.95.3
(może 2.95.4) i 3.2+.
Nigdy nie używaj 2.96 lub 3.0.x! Generują one
wadliwy kod MPlayera. Jeżeli zdecydujesz się
na zmianę gcc z 2.96, nie rób tego na korzyść 3.x tylko dlatego, że jest nowsze! Wczesne
wydania 3.x miały jeszcze więcej błędów niż 2.96. Spróbuj obniżyć wersję do 2.95.x
(obniż również wersję libstdc++
, inne
programy mogą jej potrzebować) lub nie zmieniaj wersji w ogóle (w tym wypadku bądź
jednak przygotowany na błędy podczas uruchamiania). Jeżeli jednak dalej obstajesz
przy 3.x, spróbuj użyć najnowszej wersji, wczesne wydania miały liczne błędy,
więc bądź pewny, że używasz przynajmniej 3.1, była ona sprawdzana i działa.
W rozdziałach gcc 2.96 i FAQ są bardziej szczegółowe
informacje o błędach gcc 2.96 (które ciągle NIE są naprawione, zastosowano
jedynie ich obejścia w MPlayerze!).
XFree86 - sugerowaną wersją jest zawsze najnowsza (4.3). Przeważnie każdy tego chce, ponieważ zaczynając od XFree86 4.0.2, zawiera on rozszerzenie XVideo (czasami również nazywane Xv), które jest potrzebne do włączenia sprzętowej akceleracji YUV (szybkie wyświetlanie obrazów) na kartach, które je obsługują. Upewnij się, że są zainstalowane również pakiety rozwojowe, w przeciwnym wypadku nie zadziała. W przypadku niektórych kart nie potrzebujesz XFree86. Zobacz listę poniżej.
make - sugerowaną wersją jest zawsze najnowsza (przynajmniej 3.79.x). W większości wypadków nie jest to jednak ważne.
SDL - nie jest konieczne, ale może pomóc w niektórych wypadkach (złe karty dźwiękowe, graficzne, które mają dziwne opóźnienia ze sterownikiem Xv). Zawsze używaj najnowszego (zaczynając od 1.2.x).
libjpeg - opcjonalny dekoder JPEG, używany przez opcję -mf i niektóre pliki QT MOV. Użyteczny zarówno dla MPlayera, jak i MEncodera, jeżeli zamierzasz pracować z plikami jpeg.
libpng - domyślny i zalecany dekoder (M)PNG. Wymagany przez GUI. Użyteczny zarówno dla MPlayera jak i MEncodera.
lame - zalecana, wymagana do zakodowania dźwięku MP3 przez MEncodera, sugerowaną wersją jest zawsze najnowsza (przynajmniej 3.90).
zlib - zalecana, wymagana dla skompresowanych nagłówków MOV i obsługi PNG.
libogg - opcjonalna, wymagana do odtwarzania plików zapisanych w formacie OGG.
libvorbis - opcjonalna, wymagana do odtwarzania dźwięku OGG Vorbis.
LIVE.COM Streaming Media - opcjonalna, wymagana do odtwarzania strumieni RTSP/RTP.
directfb - opcjonalna, do pobrania z http://www.directfb.org. Wymagana jest co najmniej wersja 0.9.13.
cdparanoia - opcjonalna, do obsługi CDDA.
libfreetype - opcjonalna, do obsługi czcionek TTF. Wymagana jest przynajmniej wersja 2.0.9.
libxmms - opcjonalna, do obsługi wtyczek wejściowych XMMS. Wymagana jest przynajmniej wersja 1.2.7.
libsmb - opcjonalna, do obsługi Samby.
ALSA - opcjonalna, do obsługi wyjścia dźwięku przez ALSA. Wymagana jest przynajmniej wersja 0.9.0rc4.
bio2jack - opcjonalna, do obsługi wyjścia dźwięku poprzez JACK, potrzebna jedynie w czasie kompilacji. Do pobrania z http://bio2jack.sf.net. Ponieważ nie posiada ona opcji instalacji musisz samodzielnie umieścić plik libbio2jack.a w swoim katalogu z bibliotekami (np. /usr/local/lib/) lub użyć opcji --with-bio2jack=KATALOG aby przekazać jego lokalizację do skryptu ./configure.
libavcodec
:
Ten pakiet kodeków jest zdolny do dekodowania strumieni video zakodowanych
H.263/MJPEG/RV10/DivX3/DivX4/DivX5/MP41/MP42/WMV1/WMV2/SVQ1/SVQ3
i strumieni audio WMA (Windows Media Audio) v1/v2 na wielu platformach.
Jest również uważany za najszybszy. Przeczytaj rozdział
FFmpeg, a dowiesz się więcej. Cechy:
Kodeki Win32: Jeśli zamierzasz używać MPlayera na architekturze x86, będziesz ich prawdopodobnie potrzebował. Ściągnij pakiet z naszej strony kodeków i umieść je w katalogu /usr/local/lib/codecs PRZED kompilacją MPlayera, w przeciwnym wypadku obsługa Win32 nie będzie wkompilowana!
Projekt avifile ma podobny pakiet kodeków, ale różni się on od naszego, więc jeżeli chcesz używać wszystkich, obsługiwanych kodeków, skorzystaj z naszej paczki (nie przejmuj się, avifile działa z nią bez problemów).
Cechy:
libavcodec
ma potrzebne do niego dekodery ze
świata wolnego oprogramowania.
Kodeki QuickTime: na platformach x86 te kodeki mogą być użyte do dekodowania RPZA, innych sekwencji video QuickTime i strumieni audio QDesign. Instrukcję instalacji możesz znaleźć w rozdziale kodek video Sorenson.
DivX4/DivX5: informacje o tym kodeku są dostępne
w rozdziale DivX4/DivX5. Prawdopodobnie, nie chcesz
tego kodeka jako, że libavcodec
(zobacz powyżej) jest o wiele szybszy i ma lepszą jakość, zarówno dla dekodowania i
kodowania. Cechy:
libavcodec
!
XviD: Alternatywa do kodowania dla DivX4Linux z otwartym źródłem. Cechy:
Kodeki XAnim są najlepsze (pełny ekran, sprzętowy zoom YUV) do dekodowania filmów 3ivx, Indeo 3/4/5 i kilku starych formatów. Są wieloplatformowe, więc są jednym sposobem, żeby odtworzyć Indeo na platformach innych niż x86 (no, może poza użyciem XAnim:). Ale na przykład filmy Cinepak są najlepiej odtwarzane przy pomocy MPlayerowego dekodera Cinepak!
Do dekodowania dźwięku Ogg Vorbis, będziesz musiał
poprawnie zainstalować libvorbis
.
Źródła i odpowiednie pakiety binarne możesz pobrać ze
strony ogg vorbis.
MPlayer może korzystać z bibliotek RealPlayer 8 lub RealONE, żeby odtworzyć pliki z obrazem w formacie RealVideo 3.0 i 4.0 i dźwiękiem w Sipro/Cook. Zobacz rozdział format pliku RealMedia, znajdziesz tam instrukcje i kilka informacji.
Są właściwie dwa rodzaje kart graficznych. Te nowsze mają obsługę sprzętowego skalowania i akceleracji YUV, te drugie nie.
Wyświetlają i skalują (zoom) obraz do jakiegokolwiek rozmiaru mieszczącego się w ich pamięci, z małym zużyciem mocy CPU (nawet przy zoomie), dlatego też tryb pełnego ekranu jest miły i bardzo szybki.
Karty Matrox G200/G400/G450/G550: mimo, że dostępny jest sterownik Vidix, zalecane jest używanie modułu mga_vid zamiast niego, ponieważ działa znacznie lepiej. W rozdziale mga_vid znajdziesz informacje o sposobie jego instalacji i użycia. Ważne jest wykonanie tych kroków przed kompilacją MPlayera, w przeciwnym wypadku obsługa mga_vid nie zostanie wkompilowana. Sprawdź również rozdział Matrox TV-out. Jeżeli nie korzystasz z Linuksa, jedyną możliwością jest dla Ciebie sterownik VIDIX: przeczytaj rozdział VIDIX.
Karty 3Dfx Voodoo3/Banshee: przeczytaj rozdział poświęcony tdfxfb, żeby dowiedzieć się, jak uzyskać znaczy wzrost prędkości. Ważne jest, abyś wykonał te kroki przed kompilacją MPlayera, w przeciwnym wypadku obsługa 3Dfx nie będzie wkompilowana. Przeczytaj również rozdział 3dfx TV-out. Jeżeli korzystasz z Xów, używaj przynajmniej wersji 4.2.0, ponieważ sterownik Xv dla 3dfx był uszkodzony w wersji 4.1.0 i wcześniejszych.
Karty ATI: sterownik VIDIX obsługuje następujące karty: Radeon, Rage128, Mach64 (Rage XL/Mobility, Xpert98). Przeczytaj również rozdział karty ATI dokumentacji wyjścia TV, aby dowiedzieć się czy wyjście TV Twojej karty jest obsługiwane przez Linuksa/MPlayera.
Karty S3: układy graficzne Savage i Virge/DX mają sprzętową akcelerację. Używaj jak najnowszej wersji XFree86, starsze sterowniki mają liczne błędy. Układy Savage mają problemy z obrazem YV12, więcej szczegółów znajdziesz w rozdziale S3 Xv. Starsze karty Trio nie obsługują w ogóle lub mają wolną akcelerację sprzętową.
Karty nVidia: mogą lub nie mogą być dobrym wyborem do odtwarzania filmów. Jeżeli nie masz karty GeForce2 (lub nowszej), nie spodziewaj się bezproblemowego działania. Wbudowany w XFree86 sterownik nVidia nie obsługuje sprzętowej akceleracji YUV na żadnej z kart. Musisz pobrać zamknięte sterowniki nVidia z nVidia.com. Przeczytaj rozdział sterowniki nVidia Xv, a dowiesz się więcej. Sprawdź również rozdział nVidia TV-out, jeśli chcesz używać TV.
3DLabs GLINT R3 and Permedia3: dostępny jest sterownik VIDIX (pm3_vid). Dla uzyskanie bardziej szczegółowych informacji przeczytaj rozdział VIDIX.
Inne karty: żadna z powyższych?
Odtwarzanie pełnoekranowe może być uzyskane przez programowe skalowanie (użyj opcji -zoom lub -vf, ale ostrzegam Cię: to jest wolne) lub przełączenie na niższą rozdzielczość, na przykład 352x288. Jeżeli nie masz akceleracji YUV, ta druga metoda jest zalecana. Przełączanie między trybami video umożliwia opcja -vm i działa ona z następującymi sterownikami:
GD 7548: zintegrowana z płytą główną i przetestowana na serii notebooków Compaq Armada 41xx.
clgenfb
znajdujący się w jądrze, jednak u mnie działał tylko w 8bpp, a więc jest bezużyteczny.
Źródło clgenfb musi być rozszerzone o ID 7548 przed kompilacją.
Zdecyduj czy potrzebujesz GUI. Jeśli tak, przeczytaj rozdział GUI przed kompilacją.
Jeżeli chcesz zainstalować MEncodera (naszego wspaniałego enkodera do wszelkich celów), przeczytaj sekcję MEncoder.
Jeżeli masz tuner TV kompatybilny z V4L i chcesz oglądać/przechwytywać i kodować filmy przy pomocy MPlayera, przeczytaj rozdział wejście TV.
Dostępne jest miłe, gotowe do użycia Menu OSD. Przeczytaj rozdział menu OSD.
Potem skompiluj MPlayera:
./configure make make install
W tym momencie MPlayer jest już gotowy do użycia. Katalog $PREFIX/share/mplayer zawiera plik codecs.conf, który informuje program o wszystkich, dostępnych kodekach i ich możliwościach. Plik ten potrzebny Ci będzie tylko wtedy, jeżeli będziesz chciał zmodyfikować jego ustawienia, jako że plik wykonywalny zawiera go już w sobie. Sprawdź czy masz codecs.conf ze starych wersji MPlayera w swoim katalogu domowym (~/.mplayer/codecs.conf) i usuń go.
Zauważ, że jeżeli masz codecs.conf w ~/.mplayer/, wbudowany i systemowy codecs.conf będą całkowicie zignorowane. Nie rób tak, chyba że chcesz pobawić się z ustawieniami wewnętrznymi MPlayera, ponieważ może to spowodować wiele problemów. Jeżeli chcesz zmienić kolejność szukania kodeków, skorzystaj z opcji -vc, -ac, -vfm lub -afm w linii poleceń, lub w Twoim pliku konfiguracyjnym (sprawdź stronę man).
Użytkownicy Debiana mogą sobie zbudować paczkę .deb, jest to bardzo proste. Wykonaj
fakeroot debian/rules binary
w głównym katalogu MPlayera. Przeczytaj rozdział paczki Debiana, aby uzyskać więcej informacji.
Zawsze przejrzyj wyniki ./configure i plik configure.log, zawierają one informacje o tym, co będzie zbudowane, a co nie. Możesz również obejrzeć pliki config.h i config.mak. Jeżeli masz zainstalowane jakieś biblioteki, ale nie są one wykrywane przez ./configure, sprawdź czy masz również odpowiednie pliki nagłówkowe (przeważnie pakiety -dev) i ich wersje się zgadzają. Plik configure.log zazwyczaj powie Ci, czego brakuje.
Chociaż nie jest to konieczne, czcionki powinny być zainstalowane, żebyś mógł korzystać z OSD i napisów. Zalecana jest instalacja czcionki TTF i ustawienie MPlayera tak, żeby z niej korzystał. Przeczytaj rozdział Napisy i OSD dla uzyskania bardziej szczegółowych informacji.
GUI wymaga biblioteki GTK 1.2.x (nie jest w pełni w GTK, ale jego panele są).
Skórki przechowywane są w formacie PNG, tak więc GTK, libpng
(i ich pakiety rozwojowe, zazwyczaj nazwane gtk-dev
i libpng-dev
) muszą być zainstalowane.
Możesz go zbudować podając opcję --enable-gui skryptowi
./configure. Aby skorzystać z trybu GUI, musisz wykonać
komendę gmplayer.
Obecnie nie możesz skorzystać z opcji -gui w wierszu poleceń z przyczyn technicznych.
Jako że MPlayer nie zawiera żadnej skórki, musisz
je ściągnąć, jeżeli chcesz używać GUI. Sprawdź stronę z zasobami do pobrania.
Skórki powinny być rozpakowane do katalogu dostępnego dla wszystkich ($PREFIX/share/mplayer/Skin) lub do $HOME/.mplayer/Skin.
MPlayer sprawdza je w poszukiwaniu
folderu nazwanego default, ale
możesz użyć opcji -skin nowaskórka
lub wpisać do pliku konfiguracyjnego skin=nowaskórka
, aby
program korzystał ze skórki w katalogu
*/Skin/nowaskórka.
MPlayer może wyświetlać napisy podczas odtwarzania filmu. Obecnie obsługiwane są następujące formaty:
MPlayer może zrzucić wyżej wymienione formaty napisów (poza pierwszymi trzema) do następujących formatów, jeśli podasz odpowiednią opcję:
MPsub: -dumpmpsub
SubRip: -dumpsrtsub
MicroDVD: -dumpmicrodvdsub
JACOsub: -dumpjacosub
Sami: -dumpsami
MEncoder może zrzucić napisy DVD do formatu VOBsub.
Opcje dla wiersza poleceń różnią się nieco dla poszczególnych formatów:
Format VOBsub.
Napisy VOBsub składają się z dużego (kilkumegabajtowego) pliku .SUB
i opcjonalnych plików .IDX i/lub .IFO.
Jeżeli masz takie pliki, jak
przykład.sub
,
przykład.ifo
(opcjonalne),
przykład.idx
-
musisz przekazać MPlayerowi opcje
-vobsub przykład [-vobsubid id
]
(pełna ścieżka jest opcjonalna). Parametr -vobsubid jest, jak
-sid dla DVD - przy jego pomocy możesz wybierać pomiędzy ścieżkami napisów
(różne języki). Jeżeli opcja -vobsubid jest pominięta,
MPlayer spróbuje użyć języka podanego przez parametr
-slang i powróci do langidx
zawartego w pliku.IDX, żeby ustawić język napisów. Jeżeli to
zakończy się niepowodzeniem, napisy nie będą wyświetlane.
Inne formaty napisów.
Inne formaty składają się z pojedynczego pliku tekstowego zawierającego przedział
czasowy, rozmieszczenie i sam tekst. Sposób użycia: Jeżeli masz taki plik, jak
przykład.txt
,
musisz przekazać opcję -sub
przykład.txt
(pełna ścieżka jest opcjonalna).
Dopasowywanie czasu wyświetlania i położenia napisów:
sek
sek
sekund.
Może być liczbą ujemną. Wartość jest dodawana do licznika czasu filmu.
ILOŚĆ
0-100
Jeżeli podczas używania napisów w formacie MicroDVD zauważysz rosnące opóźnienie między nimi a filmem, to prawdopodobnie ilość klatek na sekundę filmu różni się od wartości, do której zostały przystosowane napisy. Zauważ, że format ten korzysta z bezwzględnych numerów klatek do wyświetlania napisów w odpowiednim momencie, ale nie zawiera w sobie informacji o wartości fps, dlatego powinieneś skorzystać z opcji -subfps. Jeżeli chciałbyś trwale rozwiązać ten problem, musisz ręcznie zmienić wartość framerate pliku z napisami. MPlayer może zrobić to za ciebie:
mplayer -dumpmicrodvdsub -fpsfps_napisów
-subfpsfps_filmu
-subzbiór_z_napisami
atrapa.avi
O napisach DVD przeczytasz w rozdziale DVD.
MPlayer przedstawia nowy format napisów nazwany MPsub. Zaprojektowany on został przez Gabucino. Przede wszystkim jego główną cechą jest bycie dynamicznie opartym o czas (chociaż może być również oparty o ramki). Przykład (z DOCS/tech/mpsub.sub - na potrzeby tego dokumentu częściowo przetłumaczony):
FORMAT=TIME # pierwsza liczba : czekaj tyle sekund po zniknięciu poprzednich napisów # druga liczba : wyświetlaj napisy przez tyle sekund 15 3 Dawno, dawno temu... 0 3 w odległej galaktyce... 0 3 planeta Naboo była atakowana.
Widzisz więc, że głównym celem było umożliwienie łatwej edycji/synchronizacji/łączenia/obcinania napisów. Więc jeśli - powiedzmy - pobierzesz napisy SSA, które są źle rozmieszczone w czasie/opóźnione w stosunku do Twojej wersji filmu, wykonujesz wtedy
mplayer film.avi
-sub źródło.ssa -dumpmpsub
Zostanie utworzony plik dump.mpsub w obecnie używanym katalogu, który będzie zawierał źródłowe napisy, ale w formacie MPsub. Będziesz mógł wtedy dowolnie dodawać/odejmować sekundy do/z napisów.
Napisy wyświetlane są w technice 'OSD', On Screen Display (Wyświetlanie Na Ekranie). OSD używany jest do wyświetlania obecnego czasu odtwarzania, paska głośności, paska przeszukiwania filmu, itp.
Będziesz potrzebował paczki zawierającej czcionkę dla MPlayera, żeby móc skorzystać z OSD/NAPISÓW. Jest wiele sposobów, aby ją uzyskać:
Skorzystaj z generatora czcionki w znajdującego się w katalogu TOOLS/subfont-c. Jest to kompletne narzędzie, które pomoże Ci przekonwertować czcionkę TTF/Type1/itp. do paczki z czcionką dla MPlayera (więcej szczegółów znajdziesz w TOOLS/subfont-c/README).
Skorzystaj z wtyczki generator czcionki dla GIMPa, którą znajdziesz w katalogu TOOLS/subfont-GIMP (notka: musisz mieć również wtyczkę HSI RAW, sprawdź ten adres: http://realtime.ssu.ac.kr/~lethean/mplayer/index.php?pagename=MplayerKoreanFonts).
używanie czcionki TrueType (TTF) przy pomocy biblioteki
freetype
. Konieczna do tego jest wersja
2.0.9 lub wyższa! Tutaj możesz skorzystać z dwóch metod:
użyj opcji -font /ścieżka/do/przykładowej_czcionki.ttf
, aby określić plik z czcionką TrueType przy każdym uruchomieniu
stwórz symboliczne dowiązanie:
ln -s /ścieżka/do/przykładowej_czcionki.ttf
~/.mplayer/subfont.ttf
Jeżeli MPlayer został skompilowany z obsługą
fontconfig
, powyższe metody nie będą
działały, ponieważ opcja -font będzie oczekiwała nazwy czcionki,
a domyślną jest sans-serif. Aby otrzymać listę czcionek znanych
fontconfig
,
użyj komendy fc-list. Przykład:
-font 'Bitstream Vera Sans'
Pobierz gotowe do użycia pakiety z czcionkami ze strony MPlayera. Informacja: dostępne obecnie czcionki ograniczone są do obsługi kodowania ISO 8859-1/2, ale są też inne, przygotowane przez użytkowników, (z obsługą koreańskiego, rosyjskiego, ISO 8859-8 itp) w katalogu contrib/font serwera FTP.
Czcionki powinny mieć odpowiedni plik font.desc, który mapuje pozycję czcionek unicode do aktualnie używanej przez napisy strony kodowej Innym wyjściem jest posiadanie napisów zakodowanych w UTF-8 i użycie opcji -utf8 albo po prostu zmienienie ich nazwy na <nazwa_filmu>.utf i wgranie ich do tego samego katalogu co plik z filmem. Konwersja z różnych stron kodowych do UTF-8 może być realizowana poprzez programy konwert lub iconv.
Tabela 1.1. Kilka adresów URL
URL | Komentarz |
---|---|
ftp://ftp.mplayerhq.hu/MPlayer/releases/fonts/ | czcionki ISO |
ftp://ftp.mplayerhq.hu/MPlayer/contrib/fonts/ | różne czcionki użytkowników |
http://realtime.ssu.ac.kr/~lethean/mplayer/index.php?pagename=MplayerKoreanFonts | czcionki koreańskie i wtyczka RAW |
Jeżeli wybierzesz czcionki inne niż TTF, rozpakuj (UNZIP) plik, który ściągnąłeś do katalogu ~/.mplayer lub $PREFIX/share/mplayer. Następnie zmień nazwę lub stwórz symboliczne dowiązanie tego katalogu do font, na przykład:
ln -s ~/.mplayer/arial-24
~/.mplayer/font
Teraz na pewno zobaczysz licznik w lewym górnym rogu filmu (możesz go wyłączyć używając klawisza o).
(napisy są zawsze włączone, aby dowiedzieć się, je wyłączyć, przeczytaj stronę man)
OSD ma 4 stany (przełączane przez klawisz o):
Możesz zmienić domyślne zachowanie, ustawiając zmienną osdlevel
w pliku konfiguracyjnym (config) lub korzystając z opcji -osdlevel
w wierszu poleceń.
MPlayer ma całkowicie definiowalny Interfejs Menu OSD.
Menu Ustawienia nie jest jeszcze ZAIMPLEMENTOWANE!
Instalacja
uruchom MPlayera przykładową komendą:
$ mplayer -menu plik.avi
Istnieją trzy metody synchronizacji w MPlayerze.
usleep()
, aby poprawnie
zsynchronizować A/V z dokładnością +/- 10ms. Czasami jednak synchronizacja
musi być jeszcze dokładniejsza.
Kod nowego zegara korzysta z RTC(Real Time Clock)
do tego zadania, ponieważ jest on dokładny co do 1ms. Jest automagicznie
uruchomiany, jeżeli jest to możliwe, ale wymaga uprawnień roota, ustawionego
bitu uid roota na pliku wykonywalnym
MPlayera lub odpowiednio skonfigurowanego jądra.
Jeżeli korzystasz z jądra w wersji 2.4.19pre8 lub późniejszej, wystarczy, że
ustawisz maksymalną częstotliwość RTC dla zwykłego użytkownika przez
system plików /proc
.
Użyj następującej komendy, aby to zrobić:
echo 1024 > /proc/sys/dev/rtc/max-user-freq
Jeżeli nie używasz tak nowego jądra, możesz zmienić jedną linię w drivers/char/rtc.c i przekompilować je. Znajdź fragment, który wygląda tak:
* We don't really want Joe User enabling more * than 64Hz of interrupts on a multi-user machine. */ if ((rtc_freq > 64) && (!capable(CAP_SYS_RESOURCE)))
i zmień 64 na 1024. Powinieneś jednak naprawdę wiedzieć co robisz. Możesz zobaczyć wydajność nowego synchronizatora w linii statusu. Zarządzanie energią w niektórych BIOSach notebooków z procesorami w technologii speedstep nie współgra z RTC. Dźwięk i obraz mogą być niezsynchronizowane. Podłączenie zewnętrznego źródła energii, przed włączeniem notebooka, wydaje się pomagać. Zawsze możesz wyłączyć RTC opcją -nortc. W niektórych zestawieniach sprzętowych (sprawdzone przy używaniu DVD bez obsługi DMA na płycie ALi1541) korzystanie z RTC wywołuje skokowe odtwarzanie. Zaleca się skorzystanie z trzeciej metody w wyżej wymienionych wypadkach.
NIGDY nie instaluj pliku wykonywalnego MPlayera z bitem uid roota na maszynie z wieloma użytkownikami! Istnieje możliwość przejęcia praw superużytkownika.
libcaca
- Color ASCII Art library (biblioteka kolorowego ASCII-Art)Na początek ważne jest wyjaśnienie pewnego często popełnianego błędu. Kiedy ludzie widzą plik o rozszerzeniu .AVI, automatycznie stwierdzają, że to nie jest plik MPEG. Nie jest to prawda. Przynajmniej niezupełnie. W przeciwieństwie do popularnego stwierdzenia, plik taki może zawierać video MPEG-1.
Widzisz, kodek to nie to samo, co format pliku. Przykłady kodeków video: MPEG-1, MPEG-2, MPEG-4 (DivX), Indeo5, 3vix. Przykłady formatów plików: MPG, AVI, ASF.
W teorii, możesz umieścić video OpenDivX i dźwięk MP3 w pliku MPG. Większość odtwarzaczy nie będzie jednak w stanie go odtworzyć, gdyż spodziewają się obrazu MPEG-1 i dźwięku MP2 (w przeciwieństwie do AVI, MPG nie ma odpowiednich pól do opisu jego strumieni audio i video). Możesz również umieścić video MPEG-1 w pliku AVI. FFmpeg i MEncoder potrafią tworzyć takie pliki.
Pliki MPEG spotykamy w różnych kształtach:
Serie klatek tworzą niezależne grupy w plikach MPEG. To oznacza, że możesz ciąć/łączyć plik MPEG za pomocą zwykłych narzędzi plikowych (typu dd, cut) i pozostaje on całkowicie funkcjonalny.
Jedną ważną cechą plików MPG jest to, że zawierają pole opisujące stosunek szerokości do wysokości obrazu. Na przykład pliki SVCD zawierają obraz o rozdzielczości 480x480, a w nagłówku pole to jest ustawione na 4:3, więc odtwarzane są w 640x480. Pliki AVI nie zawierają tego pola, więc muszą być skalowane w trakcie kodowania lub odtwarzane z opcją -aspect
Zaprojektowane przez Microsoft pliki AVI (Audio Video Interleaved) to szeroko stosowany wielofunkcyjny format aktualnie używany głównie dla video MPEG-4 (DivX i DivX4). Posiada wiele wad i niedociągnięć (np. przy strumieniowaniu). Obsługuje jeden strumień video i od 0 do 99 strumieni audio i może mieć co najwyżej 2 GB, lecz istnieje rozszerzenie, które pozwala na osiągnięcie większych plików, zwane OpenDML. Aktualnie Microsoft usilnie zniechęca do stosowania AVI i zaleca ASF/WMV. Nie żeby to kogoś obchodziło...
Istnieje hack, który pozwala plikom AVI zawierać strumień audio Ogg Vorbis, ale powoduje to ich niekompatybilność ze zwykłymi AVI. MPlayer obsługuje odtwarzanie takich plików. Skoki są również zaimplementowane, lecz poważnie ograniczone poprzez źle zakodowane pliki z pomieszanymi nagłówkami tworzonymi przez zepsute programy. Niestety jedyny program, który potrafi tworzyć takie pliki - NanDub ma z tym problem.
Kamery DV tworzą surowe strumienie DV, które są konwertowane przez narzędzia do zgrywania DV do dwóch różnych typów plików AVI. Pliki te zawierają wtedy albo osobne strumienie audio i video, które MPlayer potrafi odtwarzać lub surowy strumień DV, którego obsługa jest w trakcie rozwoju.
Istnieją dwa typy plików AVI:
MPlayer obsługuje dwie metody synchronizacji dla plików AVI:
Każdy kodek video i audio jest dozwolony, lecz należy zauważyć, że dźwięk VBR nie jest zbyt dobrze obsługiwany przez większość odtwarzaczy. Format pliku co prawda pozwala na użycie dźwięku VBR, lecz większość odtwarzaczy spodziewa się dźwięku CBR (Constant Bitrate - stałe tempo bitowe), przez co zawiodą przy VBR. VBR nie jest powszechny i specyfikacja AVI Microsoftu opisuje jedynie CBR. Zauważyłem również, że większość enkoderów/multiplekserów AVI tworzy złe pliki z dźwiękiem VBR. Istnieją jedynie dwa wyjątki potwierdzające tę regułę: NanDub oraz MEncoder.
ASF (Active Streaming Format - Aktywny Format Strumieniowania) pochodzi z Microsoftu. Rozwinęły się dwa warianty ASF: v1.0 i v2.0. v1.0 jest używana przez ich narzędzia medialne (Windows Media Player oraz Windows Media Encoder) i jest bardzo tajna. v2.0 jest opublikowana i opatentowana :). Oczywiście różnią się one znacząco i nie ma pomiędzy nimi żadnej kompatybilności (kolejna zagrywka legalistyczna). MPlayer obsługuje jedynie v1.0, gdyż nikt jeszcze nie widział żadnego pliku v2.0 :). Zauważ, że dzisiejsze pliki ASF mają rozszerzenia .WMA lub .WMV.
Formaty te zostały zaprojektowane przez Apple i mogą zawierać dowolny kodek, CBR lub VBR. Mają przeważnie rozszerzenie .QT lub .MOV. Warto zauważyć, że grupa MPEG-4 wybrała QuickTime jako zalecany format pliku dla MPEG-4, a ich pliki MOV mają rozszerzenie .MPG lub .MP4 (interesujące jest to, że strumienie w tych plikach to w rzeczywistości pliki MPG i AAC. Możesz nawet je wyciągnąć za pomocą opcji -dumpvideo oraz -dumpaudio).
Większość nowych plików QuickTime używa kodeka video Sorenson i dźwięku QDesign Music. Zobacz naszą sekcję poświęconą kodekowi Sorenson.
MPlayer szczęśliwie demultipleksuje pliki VIVO. Największą niedogodnością formatu jest to, że nie ma on bloku indeksu ani stałego rozmiaru pakietu czy bajtów synchronizacji, a większość plików nie ma nawet klatek kluczowych, więc zapomnij o skakaniu po filmie!
Kodek video plików VIVO/1.0 to standardowy h.263. Kodek video plików VIVO/2.0 to zmodyfikowany, niestandardowy h.263v2. Dźwięk jest ten sam i może to być g.723 (standardowy) lub Vivo Siren.
Zobacz sekcje Kodeka video VIVO i Kodeka audio VIVO by uzyskać informacje na temat instalacji.
FLI jest bardzo starym formatem używanym przez Autodesk Animator, lecz jest to powszechny w sieci format dla krótkich animacji. MPlayer demultipleksuje i dekoduje pliki FLI i potrafi nawet po nich skakać (użyteczne przy zapętlaniu za pomocą opcji -loop). Pliki FLI nie zawierają klatek kluczowych, więc obraz będzie trochę zaśmiecony przez krótką chwilę po skoku.
Tak, MPlayer potrafi czytać (demultipleksować) pliki RealMedia (.rm). Tu znajdziesz listę obsługiwanych kodeków RealVideo i RealAudio.
NuppelVideo jest narzędziem do zgrywania TV (AFAIK :). MPlayer potrafi czytać jego pliki .NUV (tylko NuppelVideo 5.0). Pliki te mogą zawierać klatki: nieskompresowane YV12, skompresowane YV12+RTJpeg, skompresowane YV12 RTJpeg+lzo i skompresowane YV12+lzo. MPlayer dekoduje je (a nawet koduje za pomocą MEncodera do MPEG-4 (DivX) itp!) wszystkie. Działają również skoki.
yuv4mpeg / yuv4mpeg2 to format plików stosowany przez programy mjpegtools. Możesz zgrywać, produkować, filtrować lub kodować video w tym formacie za pomocą tych narzędzi. Format ten jest w rzeczywistości sekwencją nieskompresowanych obrazów YUV 4:2:0.
Pliki RoQ to pliki multimedialne używane w niektórych grach ID, np. Quake III czy Return to Castle Wolfenstein.
Jest to nowy format plików z Xiphophorus.
Może zawierać dowolne kodeki audio i video, CBR lub VBR. Będziesz potrzebował
zainstalowanych bibliotek libogg
oraz libvorbis
zanim skompilujesz
MPlayera by móc go odtwarzać.
SDP to standardowy format IETF dla opisu strumieni RTP audio i/lub video. (Wymagane jest "LIVE.COM Streaming Media".)
PVA to format MPEGo-podobny używany przez oprogramowanie kart DVB (np.: MultiDec lub WinTV pod Windows).
NSV (NullSoft Video) jest formatem plików używanym przez odtwarzacz Winamp do strumieniowania audio i video. Video to VP3, VP5 lub VP6, audio to MP3, AAC lub VLB. Wersja tylko-audio NSV ma rozszerzenie .nsa. MPlayer potrafi odtwarzać zarówno strumienie, jak i pliki NSV. Proszę zauważyć, że większość plików ze strony Winamp'a korzysta z audio VLB, które jeszcze nie jest dekodowane przez MPlayera. Oprócz tego strumienie z tej strony potrzebują dodatkowej warstwy depakietowania, która nie jest jeszcze zaimplementowana (plików tych i tak nie da się odtworzyć ze względu na audio VLB).
Matroska jest otwartym formatem przechowywania. Więcej informacji na oficjalnej stronie.
NUT jest formatem przechowywania opracowanym przez ludzi z MPlayera i FFmpeg. Oba projekty go obsługują. Więcej informacji na oficjalnej stronie.
Format GIF jest powszechnym formatem zapisu
grafiki sieciowej. Istnieją dwie wersje specyfikacji GIF: GIF87a oraz GIF89a.
Główną różnicą jest to, że GIF89a pozwala na animację.
MPlayer obsługuje oba
formaty plików za pomocą biblioteki libungif
lub innej, kompatybilnej z libgif biblioteki. Nieanimowane GIFy są wyświetlane
jako filmy o pojedynczej klatce. (Użyj opcji -loop oraz
-fixed-vo by wyświetlić je dłużej)
MPlayer obecnie nie pozwala na skoki w plikach GIF. Pliki GIF bowiem niekoniecznie muszą mieć stałego rozmiaru klatki, ani stałej prędkości odtwarzania. Raczej każda klatka jest niezależnego rozmiaru i ma zostać umiejscowiona w odpowiednim miejscu na polu o ustalonym rozmiarze. Prędkość odtwarzania jest kontrolowana za pomocą opcjonalnego bloku przed każdą klatką, która ustala opóźnienie kolejnej klatki w setnych sekundy.
Standardowe pliki GIF zawierają 24-bitowe klatki RGB z co najwyżej 8-bitową indeksowaną paletą. Klatki te są przeważnie kompresowane za pomocą LZW, lecz niektóre kodery produkują nieskompresowane klatki by uniknąć problemów patentowych w związku z kompresją LZW.
Jeśli Twoja dystrybucja nie zawiera biblioteki libungif
,
pobierz ją ze
strony domowej libungif.
By uzyskać szczegółowe informacje techniczne, zajrzyj do
specyfikacji GIF89a.
MPlayer jest odtwarzaczem filmów, a nie mediów. Potrafi jednak odtwarzać niektóre pliki audio (są one wymienione w sekcjach poniżej). Nie jest to jednak zalecane zastosowanie MPlayera. Powinieneś raczej użyć XMMSa.
Możesz mieć pewne problemy przy odtwarzaniu niektórych plików MP3, które MPlayer błędnie rozpozna jako MPEG i odtworzy je nieprawidłowo lub nie odtworzy ich wcale. Nie da się tego naprawić bez porzucenia wsparcia obsługi uszkodzonych plików MPEG i tak prawdopodobnie zostanie przez najbliższą przyszłość. Opcja -demuxer opisana na stronie man może pomóc Ci w takich przypadkach.
MPlayer potrafi korzystać z programu cdparanoia do odtwarzania CDDA (Audio CD). Sekcja ta nie zawiera spisu możliwości programu cdparanoia.
Zajrzyj do strony man i przeczytaj opis opcji -cdda, która może zostać wykorzystana do przekazania opcji do programu cdparanoia.
MPlayer potrafi korzystać z wtyczek wejścia z programu XMMS do odtwarzania wielu formatów. Istnieją wtyczki do muzyczek z gier na SNES, muzyczek SID (z Commodore 64), wielu formatów Amigi, .xm, .it, VQF, musepack, Bonk, shorten i wielu innych. Możesz znaleźć je na Stronie wtyczek wejściowych do XMMS.
Do obsługi tej możliwości musisz mieć XMMSa i skompilować MPlayera za pomocą ./configure --enable-xmms. Jeśli to nie zadziała, być może musisz ustawić ścieżki do wtyczek i bibliotek XMMSa ręcznie za pomocą opcji konfiguracji --with-xmmsplugindir i --with-xmmslibdir
Zajrzyj do tabeli stanu kodeków, żeby zobaczyć kompletną, codziennie generowaną listę. Niektóre kodeki są dostępne do pobrania z naszej strony domowej. Ściągniesz je ze strony z kodekami.
Najważniejsze ze wszystkich:
libavcodec
i kodeki
RealVideo 3.0 & 4.0 używające bibliotek
RealPlayer
Jeżeli posiadasz niewymienione tutaj kodeki Win32, które nie są jeszcze obsługiwane, zajrzyj do działu importowanie kodeków Win32-HOWTO i pomóż nam dodać ich obsługę.
Ta sekcja zawiera informacje o kodekach DivX4 i DivX5 z Project Mayo. Ich pierwszą dostępną wersją był OpenDivX 4.0 alpha 47 i 48. Wsparcie dla nich zostało włączone do MPlayera w przeszłości i było domyślnie budowane podczas kompilacji. Używaliśmy także ich kodu postprocessingu do opcjonalnego polepszenia jakości filmów zakodowanych w MPEG-1/2. Teraz używamy już naszego własnego kodu dla wszystkich typów plików.
Nowa generacja tych kodeków nazywana jest DivX4 i może nawet dekodować filmy
zakodowane przy pomocy niesławnych kodeków DivX! Na dodatek są one znacznie
szybsze od natywnych kodeków Win32 DivX DLLs, ale wolniejsze od
libavcodec
. W związku z tym ich
używanie do dekodowania jest
odradzane. Jednakże przydają się one do
kodowania. Ich wadą jest fakt, iż nie są udostępnione na wolnej licencji.
DivX4 pracuje w dwóch trybach:
Metoda -vc odivx jest zazwyczaj szybsza, ponieważ dokonuje ona transferu danych obrazu w formacie YV12 (planar YUV 4:2:0), który wymaga znacznie mniejszej przepustowości szyny. Dla pakowanych trybów YUV (YUY2, UYVY) użyj opcji -vc divx4. Dla trybów RGB prędkość jest właściwie taka sama, różniąca się od najlepszej tylko przy zmianie głębi kolorów.
Jeżeli twój sterownik -vo obsługuje direct rendering, wydajniejszym albo nawet najbardziej wydajnym rozwiązaniem może być użycie -vc divx4.
Binarną bibliotekę kodeków DivX4/5 można ściągnąć z avifile albo z divx.com Należy ją rozpakować, uruchomić jako root ./install.sh i pamiętać o dodaniu /usr/local/lib do twojego /etc/ld.so.conf i uruchomieniu ldconfig.
Możesz zdobyć CVSową wersję STAREJ biblioteki OpenDivX (core library) w następujący sposób:
cvs -d:pserver:anonymous@cvs.projectmayo.com:/cvsroot login
cvs -d:pserver:anonymous@cvs.projectmayo.com:/cvsroot co divxcore
Biblioteka ta jest podzielona na biblioteki dekodujące i kodujące, które muszą być kompilowane osobno. Dla biblioteki dekodującej wpisz po prostu
cd divxcore/decore/build/linux make cp libdivxdecore.so /usr/local/lib ln -s libdivxdecore.so /usr/local/lib/libdivxdecore.so.0 cp ../../src/decore.h /usr/local/include
Niestety dla biblioteki kodującej, Makefile dla Linuksa nie jest dostępny i optymalizacja dla MMX działa tylko pod Windows. Pomimo tych niedogodności, możesz ją ciągle skompilować używając tego Makefile.
cd ../../../encore/build mkdir linux cd linux cp path/Makefile . make cp libdivxencore.so /usr/local/lib ln -s libdivxencore.so /usr/local/lib/libdivxencore.so.0 cp ../../src/encore.h /usr/local/include
MPlayer automatycznie wykrywa DivX4/DivX5, jeżeli jest on prawidłowo zainstalowany. Po prostu kompiluj tak, jak robisz to zwykle. Jeżeli nie zostanie wykryty, znaczy to, że nie zainstalowałeś/skonfigurowałeś go w prawidłowy sposób.
FFmpeg zawiera pakiet kodeków o otwartych źródłach, które potrafią dekodować strumienie różnymi kodekami audio i video. Oferują one także imponujące funkcję kodowania i szybszą bibliotekę DivX4/5 niż w przypadku kodeków Win32, albo tych z DivX.com!
W skład pakietu wchodzi wiele dobrych kodeków, szczególnie tych związanych z MPEG-4: DivX3, DivX4, DivX5, Windows Media Video 7/8 (WMV1/WMV2). Zawiera również warty uwagi dekoder WMA.
Jednym z najnowszych kodeków, który warto wymienić jest kodek Sorenson 3 (SVQ3). Jest to pierwsza, całkowicie otwarta implementacja tego kodeka. Jest on nawet szybszy od oryginału. Zaleca się wybór tej wersji zamiast kodeków binarnych!
Pełną listę obsługiwanych kodeków (video i audio) znajdziesz na stronie FFmpeg.
Jeżeli używasz któregoś z wydań MPlayera
libavcodec
znajduje się już w paczce.
Po prostu kompiluj tak, jak zazwyczaj. Jeżeli używasz
MPlayera z CVSu, musisz wyciągnąć
libavcodec
z drzewa CVS FFmpega,
ponieważ jego wydania ukazują się bardzo rzadko. Wersja z CVSa jest
w większości przypadków stabilna i oferuje większość funkcji. W celu zdobycia
libavcodec wykonaj następujące czynności:
cvs -d:pserver:anonymous@mplayerhq.hu:/cvsroot/ffmpeg login
cvs -z3 -d:pserver:anonymous@mplayerhq.hu:/cvsroot/ffmpeg co -P ffmpeg/libavcodec ffmpeg/libavutil
Przenieś katalogi libavcodec i libavutil ze źródeł FFmpega do katalogu głównego drzewa CVS MPlayera. Powinno to wyglądać w ten sposób: main/libavcodec main/libavutil
Utworzenie dowiązań symbolicznych (symlinków) nie wystarcza. Konieczne jest skopiowowanie/przeniesienie!
Jeżeli chcesz uaktualniać libavcodec
razem z aktualizacją CVSowej wersji MPlayera,
dodaj następujące linie
do pliku main/CVS/Entries:
D/libavcodec////
D/libavutil////
Przejdź do kompilowania. configure powinien wykryć problemy przed kompilacją.
MPlayer z CVSu zawiera podkatalog
libavcodec, ale nie
zawiera źródeł libavcodec
! Żeby
uzyskać źródła tej biblioteki musisz wykonać powyższe czynności.
Wykorzystując FFmpega i mojego Matroksa G400, mogę oglądać na moim K6-2 500 filmy DivX najwyższej rozdzielczości bez gubienia klatek.
Wiedz, że binarne kodeki Xanim wydane są na licencji, która, oprócz innych ograniczeń, zabrania użytkownikowi korzystać z nich w zestawieniu z innym programem niż XAnim. Jednakże do tej pory autor nie podejmował jeszcze żadnych kroków prawnych w sprawie związanej z kodekami.
INSTALACJA I UŻYTKOWANIE. MPlayer potrafi zaprzęgnąć do dekodowania kodeki Xanim. Aby je uaktywnić, postępuj zgodnie z instrukcją:
Ściągnij kodeki, których chcesz użyć ze strony XAnim. Nie ma tam kodeka 3ivX, ale można go znaleźć na stronie 3ivX.
ALBO ściągnij zestaw kodeków z naszej strony z kodekami
Użyj opcji --with-xanimlibdir żeby wskazać skryptowi
configure gdzie ma szukać kodeków Xanim.
Domyślnie szuka ich w katalogach
/usr/local/lib/codecs,
/usr/local/lib/xanim/mods,
/usr/lib/xanim/mods i
/usr/lib/xanim.
Drugą możliwością jest ustawienie zmiennej środowiskowej
XANIM_MOD_DIR
na katalog z kodekami XAnim.
Zmień nazwę/utwórz dowiązanie symboliczne (symlink) plików, usuwając z nazwy rzeczy związane z architekturą komputera, tak żeby miały nazwy tego typu: vid_cvid.xa, vid_h263.xa, vid_iv50.xa
XAnim to cała rodzina kodeków xanim
, możesz więc użyć
opcji -vfm xanim żeby kazać
MPlayerowi używać ich, gdy jest to możliwe.
Przetestowane kodeki to: Indeo 3.2, 4.1, 5.0, CVID, 3ivX, H.263.
MPlayer potrafi odtwarzać pliki video zakodowane przy pomocy Vivo (1.0 i 2.0). Najodpowiedniejszym kodekiem dla plików w wersji 1.0 jest dekoder H.263 FFmpega, którego możesz użyć za pomocą opcji -vc ffh263. Dla plików w wersji 2.0, użyj Win32 DLL korzystając z opcji -vc vivo. Jeżeli nie wybierzesz żadnej opcji, MPlayer automatycznie wybierze najlepszy kodek.
MPEG-1 i MPEG-2 są dekodowane przez natywną, wieloplatformową bibliotekę
libmpeg2
, której kod źródłowy
wchodzi w skład MPlayera. Z uszkodzonymi plikami
MPEG-1/2 radzimy sobie przechwytując Signal 11
(segmentation fault -błąd segmentacji -przyp tłumacz
)
i szybko reinicjując kodek, kontynuując odtwarzanie dokładnie w miejscu gdzie
wystąpił błąd. Ta technika nie ma widocznego wpływu na szybkość działania.
MPlayer potrafi odtwarzać większość plików
AVI i MOV w których użyto starszych kodeków.
W przeszłości były one dekodowane przy pomocy binarnych kodeków Win32, ale
dzisiaj dysponujemy już natywnymi kodekami.
W przypadku większości z nich używany jest
libavcodec
.
MPlayer obsługuje dekodowanie wszystkich wersji RealVideo:
libavcodec
Ściągnij kodeki Real z http://www.mplayerhq.hu/MPlayer/releases/codecs/ i rozpakuj je do katalogu /usr/local/lib/codecs. Jeżeli wolisz je trzymać w innym miejscu, użyj opcji --with-reallibdir dla configure.
Aktualnie biblioteki RealPlayer działają tylko pod Linuksem, FreeBSD, NetBSD, Cygwinem na platformach x86, Alpha i PowerPC (Sprawdzone zostały Linux/Alpha i Linux/PowerPC) i pod Mac OS X.
XviD jest wolnym, kompatybilnym z MPEG-4 ASP kodekiem video z możliwościami kodowania dwuprzebiegowego i pełną obsługą MPEG-4 ASP, dlatego jest dużo bardziej efektywny niż dobrze znany kodek DivX. Łączy bardzo dobrą jakość video i dobre osiągi dzięki optymalizacjami kodu dla większości nowoczesnych procesorów.
Zaczął się jako odłam kodeka OpenDivX. Stało się to gdy ProjectMajo zmienił OpenDivX na zamknięte DivX4 (a teraz DivX5). W rezultacie tej decyzji, rozeźleni ludzie spoza ProjectMayo, którzy pracowali nad OpenDivX, rozpoczęli projekt XviD. Tak więc oba projekty mają to samo pochodzenie.
Instalacja XviD
Jak większość otwartego oporgramowania dostępny jest w dwóch wersjach:
oficjalnych wydań
i wersji CVS.
Wersja CVS jest zazwyczaj wystarczająco stablina by jej używać, jako że
zazwyczaj ma poprawki do błędów występujących w wydaniach.
Tak należy nakłonić XviD
CVS do
pracy z MEncoderem (będziesz potrzebował
przenajmniej autoconf 2.50,
automake i libtool):
cvs -z3 -d:pserver:anonymous@cvs.xvid.org:/xvid login
cvs -z3 -d:pserver:anonymous@cvs.xvid.org:/xvid co xvidcore
cd xvidcore/build/generic
./bootstrap.sh
./configure
Możesz potrzebować dodać jakieś opcje (przejrzyj wyjście poniższej komendy). ./configure --help
make && make install
Jeżeli użyłeś opcji --enable-divxcompat, skopiuj ../../src/divx4.h do /usr/local/include/.
Przekompiluj MPlayera z opcjami
--with-xvidcore=/ścieżka/do/
libxvidcore.a
--with-xvidincdir=/ścieżka/do/
xvid.h.
Sorenson jest kodekiem video rozwijanym przez Sorenson Media i licencjonowanym dla Apple, która rozprowadza go wraz ze swoim Odtwarzaczem QuickTime. Aktualnie MPlayer jest w stanie odtwarzać wszystkie wersje plików video Sorensona z użyciem następujących dekoderów:
libavcodec
)
libavcodec
)
KOMPILOWANIE MPLAYERA ZE WSPARCIEM DLA BIBLIOTEK QUICKTIME
Aktualnie obsługiwane są tylko 32-bitowe platformy Intela.
ściągnij MPlayera z CVSu
pobierz pakiet QuickTime DLL z http://www.mplayerhq.hu/MPlayer/releases/codecs/
rozpakuj pakiet QuickTime DLL do twojego katalogu z kodekami Win32 (domyślnie: /usr/local/lib/codecs/)
skompiluj MPlayera
x264
jest biblioteką słurzącą do
tworzenia strumieni video H.264.
Nie jest w 100% ukończona, ale ma przynajmniej pewną obsługę większości
mających wpływ na jakość możliwości H.264.
Jest też wiele zaawansowanych możliwości w specyfikacji H.264, które nie mają
nic wspólnego z jakością jako taką; wiele z nich jeszcze nie ma
implementacji w x264
.
Możliwości kodera
CAVLC/CABAC
Wielokrotne referencje
Intra: wszystkie typy makrobloków (16x16 i 4x4 z wszystkimi predykcjami)
Inter P: wszystkie podziały (od 16x16 aż do 4x4)
Inter B: podziały od 16x16 do 8x8 (włączając SKIP/DIRECT)
Kontrola tempa: stały kwantyzator, stałe bitrate, albo wieloprzebiegowe ABR
Wykrywanie zmian scen
Adaptatywne umieszczanie klatek B
Referencyjne ramki / dowolna kolejność ramek
Ograniczenia kodera
Brak prawdziwego RD
H.264 jedną z nazw nowego kodeka video opracowanego wspólnie przez ITU i MPEG. Może też być prawidłowo nazywany okropnymi nazwami "ISO/IEC 14496-10" lub "MPEG-4 Part 10". Częściej jest nazywany "MPEG-4 AVC" albo po prostu "AVC".
Jakkolwiek go nie nazywać, H.264 może być wart wypróbowania ponieważ zazwyczaj może dorównać jakością MPEG-4 ASP z mniejszą o 5%-30% objętością. Dokładne wyniki zależą od materiału źródłowego i kodera. Zyski z używania H.264 nie są za darmo: Dekodowanie strumieni H.264 mają duże wymagania obliczeniowe i pamięciowe. Na przykład, na Athlonie 1733 MHz, film H.264 w rozdzielczości DVD 1500kbps wymaga do zdekodowania około 35% CPU. Dla porównania, dekodowanie strumienia MPEG-4 ASP w rozdzielczości DVD 1500kbps wymaga około 10% CPU. Oznacza to że dekodowanie wysokiej jakości strumieni jest prawie nie do pomyślenia dla zwykłych użytkowników. Oznacza to również że dobry DVD rip może się czasami zacinać na procesorach wolniejszych niż około 2.0 GHz.
Przynajmniej przy używaniu x264
wymagania kodowania nie są o wiele większe niż te, do których przywykliśmy
przy MPEG-4 ASP.
Na przykład, na Athlonie 1733 MHz typowe kodowanie DVD będzie działać
z 5-15fps.
Ten dokument nie ma wyjaśniać szczegółów H.264, ale jeśli jesteś zainteresowany niewielkim wstępem możesz chcieć przeczytać The H.264/AVC Advanced Video Coding Standard: Overview and Introduction to the Fidelity Range Extensions.
MPlayer używa dekodera H.264 z
libavcodec
.
libavcodec
miało choć trochę zdatny
do użytku dekoder H.264 od około czerwca 2004, ale od tego czasu wprowadzono
wiele zmian i poprawek, zarówno pod względem obsługiwanej funkcjonalności
jak i zużycia CPU.
Na wszelki wypadek lepiej jest używać świeżej wersji CVS.
Jeśli chcesz szybki i łatwy sposób na sprawdzenie czy były ostatnio zmiany
w obsłudze H.264 w libavcodec
,
możesz patrzeć na
interface sieciowy repozytorium CVS FFmpeg
Jeśli masz zainstalowanego klienta subversion, możesz uzyskać najnowsze źródła x264 tym poleceniem:
svn co svn://svn.videolan.org/x264/trunk x264
Źródła MPlayera są aktualizowane gdy tylko
zmieni się API x264
, więc zalecamy
też używanie MPlayera z CVS.
Być może sytuacja się zmieni jeśli i gdy nastąpi "wydanie"
x264
.
W międzyczasie x264
powinna być
uważana za niestabilną, w tym sensie że jej interface programistyczny może
się zmienić.
x264
buduje się i instaluje
w sposób standardowy:
./configure && make && sudo make install
To zainstaluje libx264.a w /usr/local/lib oraz x264.h w /usr/local/include.
Gdy biblioteka i nagłówki x264
są
już w standardowych miejscach, budowanie MPlayera
z obsługą x264
jest proste.
Uruchom standardowe:
./configure && make && sudo make install
Skrypt konfiguracyjny wykryje że spełniłeś wymagania do obsługi
x264
.
Najważniejsze ze wszystkich kodeków audio:
libavcodec
)
To jest domyślny dekoder używany przez pliki z dźwiękiem AC3.
Dekoder AC3 może wytworzyć wyjście audio zmiksowane dla 2, 4 lub 6 głośników. Kiedy skonfigurowany jest dla 6 głośników, dekoder dostarcza do sterownika karty dźwiękowej osobne wyjście dla każdego kanału AC3, pozwalając doświadczyć pełnego "dźwięku przestrzennego" bez potrzeby użycia zewnętrznego dekodera AC3 wymaganego przez kodek hwac3.
Użyj opcji -channels aby wybrać liczbę wyjściowych kanałów. Użyj -channels 2 do uzyskania dźwięku stereo. Dla czterokanałowego dźwięku (wyjścia Lewe Przednie, Prawe Przednie, Lewe Surround i Prawe Surround), użyj -channels 4. W tym przypadku, wszystkie centralne kanały zostaną zmiksowane do odpowiadających im przednich kanałów. Natomiast -channels 6 wyprodukuje wszystkie kanały AC3 tak jak zostały zakodowane - w kolejności Lewy, Prawy, Lewy Surround, Prawy Surround, Centralny i LFE.
Domyślną liczbą kanałów wyjściowych jest 2.
Aby użyć więcej niż dwóch wyjściowych kanałów, będziesz potrzebował OSS i kartę dźwiękową ze wsparciem dla odpowiedniej liczby wyjściowych kanałów poprzez SNDCTL_DSP_CHANNELS ioctl. Przykładem odpowiedniego sterownika jest emu10k1 (używany przez karty Soundblaster Live!) z sierpnia 2001 roku, albo nowszy (przypuszczalnie działa także ALSA CVS).
Potrzebna jest karta obsługująca AC3, z cyfrowym wyjściem (S/PDIF). Sterownik musi prawidłowo obsługiwać format AFMT_AC3 (robi to C-Media). Podłącz swój dekoder AC3 do wyjścia S/PDIF i użyj opcji -ac hwac3. Rozwiązanie to jest ciągle w fazie testów, ale wiadomo, że działa z kartami C-Media i Soundblaster Live! + sterowniki ALSA (ale nie z OSS) i kartami dekodującymi DXR3/Hollywood+ MPEG.
libmad jest wieloplatformową, stałoprzecinkową (wewnętrznie 24-bitowe PCM) biblioteką dekodującą dźwięk MPEG. Nie odtwarza zbyt dobrze uszkodzonych plików i czasami ma problemy z przewijaniem, ale może mieć lepszą wydajność niż mp3lib na platformach ze słabszymi FPU (jednostka do wykonywania obliczeń zmiennoprzecinkowych-przyp. tłumacza) (jak np. ARM).
Aby włączyć wsparcie dla biblioteki, podczas kompilacji użyj opcji --enable-mad przy wywoływaniu configure.
Rodzaj kodeka audio używanego w plikach VIVO zależy od tego, czy jest to plik VIVO/1.0, czy VIVO/2.0. Pliki VIVO/1.0 mają dźwięk w formacie g.723, a pliki VIVO/2.0 w formacie Vivo Siren. Obsługiwane są oba typy.
MPlayer potrafi dekodować prawie wszystkie wersje RealAudio:
liba52
Instrukcje dotyczące sposobu instalacji bibliotek RealPlayer znajdują się w dziale RealVideo.
Format dźwięku QDesign (fourcc:QDMC, QDM2) wykorzystywany jest w plikach MOV/QT. Obie wersje tych kodeków mogą być odtwarzane za pomocą bibliotek QuickTime. Instrukcje instalacji znajdują się w dziale kodek Sorenson video.
Dźwięk w formacie Qualcomm (fourcc:Qclp) używany jest w plikach MOV/QT. Może być dekodowany z użyciem bibliotek QuickTime. Instrukcje instalacji znajdują się w dziale kodeka video Sorenson.
AAC (Advanced Audio Coding) jest kodekiem audio spotykanym czasami w plikach MOV i MP4. Otwarty dekoder nazywany FAAD dostępny jest na stronie http://www.audiocoding.com. MPlayer zawiera migawkę CVSu z libfaad 2.1beta, więc nie musisz ściągać go oddzielnie.
Jeżeli używasz gcc 3.2, który ma kłopoty z kompilacją wbudowanej wersji FAAD lub chcesz z jakichś powodów użyć zewnętrznej biblioteki, ściągnij ją z tej strony i dodaj opcję --enable-external-faad do configure. Nie potrzebujesz całego faad2 do dekodowanie plików AAC. Wystarczy użyć samej biblioteki libfaad. Zbudujesz ją w następujący sposób
cd faad2/ sh bootstrap ./configure cd libfaad make make install
Wersje binarne nie są dostępne na stronie audiocoding.com, ale możesz ściągnąć (apt-getem) Debianowe paczki z domowej strony Christiana Marillata, RPMy dla Mandrake/Mandriva ze strony P.L.F a RedHatowe RPMy z Grey Sector.
VFW (Video for Windows) jest starym API Video pod Windows. Jego kodeki mają rozszerzenie .DLL albo (rzadziej) .DRV. Jeżeli MPlayer odmawia odtwarzania plików AVI z komunikatem tego typu:
UNKNOWN video codec: HFYU (0x55594648)
oznacza to, że twój plik AVI jest zakodowany z użyciem kodeka, który korzysta z fourcc HFYU (HFYU = kodek HuffYUV, DIV3 = DivX Low Motion, itd.; fourcc-unikalny, czteroliterowy identyfikator kodeka znajdujący się najczęściej w nagłówkach plików AVI-przyp. tłumacz). Kiedy już to wiesz, musisz odzukać DLL'a, który jest ładowany przez Windows w celu odtworzenia tego pliku. W naszym przypadku plik system.ini zawiera tę informację w następującej linii:
VIDC.HFYU=huffyuv.dll
Zatem potrzebujesz pliku huffyuv.dll. Zauważ, że kodeki audio są oznaczane za pomocą prefiksu MSACM:
msacm.l3acm=L3codeca.acm
Jest to kodek MP3. Teraz powinieneś mieć wszystkie niezbędne informacje
(fourcc, plik z kodekiem, przykładowy plik AVI). Umieść swoją prośbę o wsparcie
dla kodeka za pomocą poczty elektronicznej i wyślij ww. pliki na poniższy
serwer FTP:
ftp://ftp.mplayerhq.hu/MPlayer/incoming/[codecname]/
W systemach Windows NT/2000/XP szukaj powyższych informacji w rejestrze, np. szukaj wyrażenia "VIDC.HFYU". Aby dowiedzieć się jak to zrobić, spójrz niżej na starą metodę DirectShow.
DirectShow jest nowszym API Video, które jest nawet gorsze od swojego poprzednika. Sprawa ma się gorzej z DirectShow, ponieważ:
Nowa metoda:
Używając Microsoft GraphEdit (szybki sposób)
Pobierz GraphEdit z dowolnego DirectX SDK, albo z doom9
Uruchom graphedit.exe.
Z menu wybierz Graph -> Insert Filters.
Rozwiń listę DirectShow Filters
Wybierz właściwy kodek i rozwiń go.
We wpisie DisplayName
spójrz na tekst w
nawiasach klamrowych po znaku "backslash" i zapisz go (pięć bloków
oddzielonych kreskami, GUID).
Binariami kodeka jest plik określony w polu Filename
.
Jeżeli nie ma pola Filename
, a
DisplayName
zawiera coś w stylu
device:dmo
, to jest to DMO-kodek.
Stara Metoda:
Weź głęboki oddech i zacznij przeszukiwanie rejestru...
Uruchom regedit.
Naciśnij Ctrl+F, odznacz dwa pierwsze
pola (checkboxes) i zaznacz trzecie. Wpisz fourcc kodeka (np.
TM20
).
Powinieneś zobaczyć pole zwierające ścieżkę i nazwę pliku (np. C:\WINDOWS\SYSTEM\TM20DEC.AX).
Gdy odnalazłeś już plik, potrzebny będzie GUID. Spróbuj ponownego wyszukiwania, ale tym razem wpisz nazwę kodeka, a nie jego fourcc. Jego nazwę można sprawdzić, kiedy Media Player odtwarza plik, odszukując ją w
-> -> . Jeżeli jej tam nie będzie, to masz pecha. Spróbuj odgadnąć nazwę (np. spróbuj wyszukać "TrueMotion").Jeżeli GUID został odnaleziony, powinieneś ujrzeć pola FriendlyName i CLSID. Zapisz szesnastobajtowy CLSID będący GUIDem, którego potrzebujemy.
Jeżeli wyszukiwanie się nie powiedzie, spróbuj zaznaczyć wszystkie pola (checkboxes). Prawdopodobnie dostaniesz niepasujące wyniki, ale być może będziesz miał szczęście...
Teraz, kiedy masz już wszystkie niezbędne informacje (fourcc, GUID, plik
z kodekiem, przykładowy plik AVI), umieść swoją prośbę o wsparcie dla kodeka
za pomocą poczty elektronicznej i wyślij ww. pliki na poniższy serwer FTP:
ftp://ftp.mplayerhq.hu/MPlayer/incoming/[codecname]/
Jeżeli chcesz samodzielnie dodać obsługę kodeka, przeczytaj DOCS/tech/codecs.conf.txt (tylko po angielsku - przyp. tłum.).
Jest WYSOCE wskazane, aby sprawdzić, czy rejestry MTRR są ustawione prawidłowo, ponieważ mogą dać duży wzrost wydajności.
Wykonaj cat /proc/mtrr:
--($:~)--
cat /proc/mtrr
reg00: base=0xe4000000 (3648MB), size= 16MB: write-combining, count=9
reg01: base=0xd8000000 (3456MB), size= 128MB: write-combining, count=1
Widać mojego Matroksa G400 z 16MB pamięci. Wydałem tę komendę z XFree 4.x.x, które ustawiają MTRR automatycznie.
Jeżeli nie zadziałało, trzeba to ustawić ręcznie. Przede wszystkim musisz znaleźć adres bazowy. Możesz to zrobić na 3 sposoby:
z komunikatów startowych X11, na przykład:
(--) SVGA: PCI: Matrox MGA G400 AGP rev 4, Memory @ 0xd8000000, 0xd4000000 (--) SVGA: Linear framebuffer at 0xD8000000
z /proc/pci (użyj polecenia lspci -v ):
01:00.0 VGA compatible controller: Matrox Graphics, Inc.: Unknown device 0525 Memory at d8000000 (32-bit, prefetchable)
z komunikatów sterownika mga_vid w jądrze (użyj dmesg):
mga_mem_base = d8000000
Znajdźmy teraz rozmiar pamięci. Jest to bardzo łatwe, po prostu zamień rozmiar RAMu na karcie graficznej na system szestnastkowy lub użyj tej tabelki:
1 MB | 0x100000 |
2 MB | 0x200000 |
4 MB | 0x400000 |
8 MB | 0x800000 |
16 MB | 0x1000000 |
32 MB | 0x2000000 |
Znasz już adres bazowy i rozmiar pamięci. Ustawmy więc rejestry MTRR!
Na przykład dla powyższej karty Matrox (base=0xd8000000
)
z 32MB RAMu (size=0x2000000
) po prostu wykonaj:
echo "base=0xd8000000 size=0x2000000 type=write-combining" >| /proc/mtrr
Nie wszystkie procesory obsługują MTRR. Na przykład starsze K6-2 (jakieś 266MHz, stepping 0) nie obsługują MTRR, ale stepping 12 już tak. (cat /proc/cpuinfo aby sprawdzić).
W XFree86 4.0.2 lub nowszym możesz używać sprzętowego YUV poprzez rozszerzenie XVideo. To tego używa opcja -vo xv. Ten sterownik obsługuje także regulację jasności/kontrastu/nasycenia/itp. (chyba, że używasz starego, powolnego kodeka DirectShow DivX, który to obsługuje wszędzie). Spójrz na stronę man.
Aby to zadziałało upewnij się, że:
Masz XFree86 4.0.2 lub nowsze (starsze nie mają XVideo)
Twoja karta obsługuje przyśpieszanie sprzętowe (współczesne karty to mają)
X ładuje rozszerzenie XVideo, zwykle wygląda to tak:
(II) Loading extension XVideo
w logu /var/log/XFree86.0.log
To ładuje tylko rozszerzenie XFree86. W dobrej instalacji jest to zawsze włączone i nie oznacza to że obsługa XVideo w karcie jest załadowana.
Twoja karta obsługuje Xv pod Linuksem. Aby sprawdzić, spróbuj xvinfo, wchodzące w skład dystrybucji XFree86. Powinno wyświetlić długi tekst podobny do tego:
X-Video Extension version 2.2 screen #0 Adaptor #0: "Savage Streams Engine" number of ports: 1 port base: 43 operations supported: PutImage supported visuals: depth 16, visualID 0x22 depth 16, visualID 0x23 number of attributes: 5 (...) Number of image formats: 7 id: 0x32595559 (YUY2) guid: 59555932-0000-0010-8000-00aa00389b71 bits per pixel: 16 number of planes: 1 type: YUV (packed) id: 0x32315659 (YV12) guid: 59563132-0000-0010-8000-00aa00389b71 bits per pixel: 12 number of planes: 3 type: YUV (planar) (...etc...)
Karta musi obsługiwać formaty "YUY2 packed" i "YV12 planar", aby mogła być używana z MPlayerem.
I na koniec sprawdź, czy MPlayer został skompilowany z obsługą Xv. Wykonaj mplayer -vo help | grep xv . Jeżeli została wbudowana obsługa Xv to powinien się pojawić podobny wiersz:
xv X11/Xv
Starsze sterowniki 3dfx znane były z tego, że miały problemy z akceleracją XVideo. Nie obsługiwały ani YUY2, ani YV12. Sprawdź czy masz XFree86 w wersji 4.2.0 lub nowszej. Działają one dobrze z YV12 i YUY2. Poprzednie wersje z 4.1.0 włącznie wywalały się na YV12. Jeżeli napotkasz na dziwne działanie używając -vo xv, spróbuj SDL (także ma XVideo) i zobacz, czy to pomaga. Dokładniejsze instrukcje są w sekcji SDL.
LUB, spróbuj NOWEGO sterownika -vo tdfxfb! Zajrzyj do sekcji tdfxfb
S3 Savage3D powinny działać. Jeżeli masz Savage4 używaj XFree86 4.0.3 lub nowszego (gdyby występowały problemy z obrazem, spróbuj ustawić głębię kolorów na 16bpp). Jeżeli chodzi o S3 Virge: obsługuje ona Xv, ale jest bardzo wolna, więc najlepiej ją sprzedaj.
Obecnie niejasne jest, które modele kart Savage nie mają sprzętowej obsługi YV12 i robią to programowo (co jest wolne). Jeżeli podejrzewasz o to swoją kartę, zdobądź nowsze sterowniki, lub grzecznie poproś o sterownik z obsługą MMX/3DNow! na liście dyskusyjnej MPlayer-users.
nVidia nie zawsze jest dobrym wyborem dla Linuksa (wg nVidii to nieprawda)... Sterownik XFree86 o otwartych źródłach obsługuje większość tych kart, lecz w niektórych wypadkach będziesz zmuszony używać binarnych sterowników o zamkniętych źródłach (do pobrania ze strony nVidii). Jeżeli chcesz uzyskać przyspieszenie 3D to zawsze będziesz potrzebować tych sterowników.
karty Riva 128 nie obsługują XVideo nawet ze sterownikami nVidii :( Zażalenia składaj do nVidii.
Jednakże MPlayer zawiera sterownik VIDIX obsługujący większość kart nVidia. Obecnie znajduje się w stadium beta i ma pewne ograniczenia. Więcej informacji znajdziesz w sekcji nVidia.
Sterowniki GATOS (których powinieneś używać, chyba że masz Rage128 lub Radeon) mają standardowo włączone VSYNC. Znaczy to, że szybkość dekodowania (!) jest zsynchronizowana z (pionową) częstotliwością odświeżania obrazu. Jeżeli odtwarzanie wydaje Ci się powolne, spróbuj w jakiś sposób wyłączyć VSYNC, lub ustaw częstotliwość odświeżania na n*(fps filmu) Hz.
Radeon VE - jeżeli potrzebujesz X, używaj XFree86 4.2.0 lub nowszego. Brak obsługi wyjścia TV. Oczywiście w MPlayerze możesz uzyskać przyśpieszane wyświetlanie, z lub bez wyjścia TV. Żadne biblioteki czy X nie są do tego potrzebne. Poczytaj sekcję o VIDIX.
Te karty można znaleźć w wielu laptopach. Musisz używać XFree86 4.3.0 lub nowszych, lub sterowników Stefana Seyfried'a obsługujących Xv. Po prostu wybierz ten, który pasuje do Twojej wersji XFree86.
XFree86 4.3.0 zawierają obsługę Xv, lecz Bohdan Horst wysłał małą łatkę na źródła XFree86, która przyśpiesza operacje na buforze ramki (framebuffer) nawet czterokrotnie. Ta łatka została uwzględniona w XFree86 CVS i powinna znaleźć się w następnej wersji po 4.3.0
Aby umożliwić odtwarzanie zawartości o rozmiarach DVD zmodyfikuj swój XF86Config w następujący sposób:
Section "Device"
[...]
Driver "neomagic"
Option "OverlayMem" "829440"
[...]
EndSection
Jeżeli chcesz używać Xv z kartą Trident (zakładając, że nie działa z 4.1.0), zainstaluj XFree 4.2.0. 4.2.0 obsługuje pełnoekranowe Xv w karcie Cyberblade XP.
Alternatywą jest sterownik VIDIX dla karty Cyberblade/i1.
Jeżeli chcesz używać Xv z kartą opartą na Kyro (na przykład Hercules Prophet 4000XT), powinieneś ściągnąć sterowniki ze strony PowerVR
WSTĘP. Celem tego dokumentu jest wyjaśnienie w kilku słowach, czym ogólnie jest DGA i co może zrobić sterownik do MPlayera (i czego nie może).
CO TO JEST DGA.
DGA to skrót od Direct Graphics Access
(Bezpośredni Dostęp do Grafiki) i jest dla programu sposobem
ominięcia X serwera i bezpośrednią modyfikację pamięci bufora ramki
(framebuffer). Technicznie mówiąc, działa to w ten sposób,
że pamięć bufora ramki mapowana jest na zakres pamięci Twojego procesu.
Jest to dozwolone tylko i wyłącznie gdy masz prawa administratora (superuser).
Możesz je uzyskać logując się jako
root
lub ustawiając bit SUID
na pliku wykonywalnym MPlayera
(nie zalecane).
Istnieją dwie wersje DGA: DGA1 używane przez XFree 3.x.x i DGA2, które pojawiło się w XFree 4.0.1.
DGA1 zapewnia jedynie bezpośredni dostęp do bufora ramki, w sposób opisany powyżej. Aby zmienić rozdzielczość sygnału video będziesz musiał polegać na rozszerzeniu XVidMode.
DGA2 łączy cechy rozszerzenia XVidMode z możliwością zmiany głębi wyświetlania, więc możesz mając uruchomiony X serwer w 32 bitowej głębi przełączać się na 15 bitów i vice versa.
Jednakże DGA ma pewne wady. Jest poniekąd zależne od układu graficznego jakiego używasz, a także od implementacji sterownika video (w X serwerze) sterującego układem. Nie działa to więc na każdym systemie...
INSTALOWANIE OBSŁUGI DGA W MPLAYERZE. Przede wszystkim upewnij się, że X ładuje rozszerzenie DGA. Spójrz na /var/log/XFree86.0.log:
(II) Loading extension XFree86-DGA
XFree86 4.0.x lub nowsze jest wysoce wskazane! Sterownik DGA MPlayera jest wykrywany automatycznie przez ./configure. Możesz także wymusić jego obsługę poprzez --enable-dga.
Jeżeli sterownik nie mógł przełączyć się na niższą rozdzielczość, poeksperymentuj z opcjami -vm (tylko w X 3.3.x), -fs, -bpp, -zoom aby znaleźć tryb wyświetlania, który odpowiada filmowi. Na razie nie ma żadnego konwertera :(
Stań się użytkownikiem root
.
DGA wymaga praw roota, aby móc zapisywać bezpośrednio do pamięci video.
Jeżeli chcesz posługiwać się DGA jako zwykły użytkownik, zainstaluj
MPlayera w trybie SUID root:
chown root/usr/local/bin/mplayer
chmod 750/usr/local/bin/mplayer
chmod +s/usr/local/bin/mplayer
Teraz DGA działa także dla zwykłego użytkownika.
To jest poważne zagrożenie bezpieczeństwa! Nigdy nie rób tego na serwerze, ani na komputerze dostępnym dla innych osób, ponieważ mogą one zdobyć prawa roota poprzez MPlayera z ustawionym SUID root.
Teraz użyj opcji -vo dga i już! (mam nadzieję:) Powinieneś także spróbować czy działa u Ciebie opcja -vo sdl:dga! Jest wiele szybsza!
ZMIANA ROZDZIELCZOŚCI. Sterownik DGA zezwala na zmianę rozdzielczości sygnału wyjściowego. Eliminuje to potrzebę (wolnego) programowego skalowania i równocześnie zapewnia wyświetlanie pełnoekranowe. W warunkach idealnych rozdzielczość zostałaby zmieniona na dokładnie taką samą (z zachowaniem formatu obrazu) jak dane video, ale X serwer pozwala stosować tylko tryby predefiniowane w /etc/X11/XF86Config (/etc/X11/XF86Config-4 dla XFree 4.X.X). Są one definiowane przez tak zwane "modelines" (wiersze trybów) i zależą od możliwości Twojego sprzętu. X serwer skanuje przy starcie ten plik konfiguracyjny i wyłącza tryby nie pasujące do Twojego sprzętu. Aby się dowiedzieć, które tryby przetrwały ten proces sprawdź plik /var/log/XFree86.0.log.
Te wpisy działają z układem Riva128, przy użyciu modułu sterownika nv.o (moduł X serwera):
Section "Modes" Identifier "Modes[0]" Modeline "800x600" 40 800 840 968 1056 600 601 605 628 Modeline "712x600" 35.0 712 740 850 900 400 410 412 425 Modeline "640x480" 25.175 640 664 760 800 480 491 493 525 Modeline "400x300" 20 400 416 480 528 300 301 303 314 Doublescan Modeline "352x288" 25.10 352 368 416 432 288 296 290 310 Modeline "352x240" 15.750 352 368 416 432 240 244 246 262 Doublescan Modeline "320x240" 12.588 320 336 384 400 240 245 246 262 Doublescan EndSection
DGA i MPLAYER. DGA jest używane w dwóch miejscach w MPlayerze: można go używać przez sterownik SDL (-vo sdl:dga) oraz bezpośrednio przez sterownik DGA (-vo dga). To, co zostało napisane powyżej, jest prawdziwe dla obu; w następnych sekcjach wyjaśnię, jak działa sterownik DGA dla MPlayera.
WŁASNOŚCI. Sterownik DGA wywoływany jest poprzez podanie -vo dga w wierszu poleceń. Standardowym zachowaniem jest zmiana rozdzielczości na jak najbardziej pasującą do obrazu. Ignorowane są opcje -vm i -fs (zmiana trybu wyświetlania oraz wyświetlanie pełnoekranowe). Sterownik zawsze próbuje pokryć jak największą powierzchnię ekranu poprzez zmianę trybu wyświetlania, dzięki temu nie marnuje mocy procesora na skalowanie obrazu. Jeżeli nie podoba Ci się dobrany tryb, możesz sam go określić, korzystając z opcji -x oraz -y. Jeżeli podasz opcję -v, sterownik DGA wyświetli między innymi listę wszystkich obsługiwanych w tej chwili trybów, dostępnych w Twoim pliku konfiguracyjnym XF86Config. Mając DGA2 możesz zmusić je także do wyświetlania obrazu w określonej głębi, używając opcji -bpp. Prawidłowymi głębiami są 15, 16, 34 i 32. Od Twojego sprzętu zależy, czy są one obsługiwane natywnie, czy też dokonywana jest konwersja (możliwe, że powolna).
Jeżeli jesteś takim szczęśliwcem, że masz wystarczająco dużo pamięci pozaekranowej (offscreen memory) aby zmieścił się tam cały obraz, sterownik DGA użyje podwójnego buforowania. Efektem będzie płynniejsze odtwarzanie filmu. Sterownik poinformuje Cię czy podwójne buforowanie jest włączone czy nie.
Podwójne buforowanie oznacza, że następna ramka Twojego filmu jest rysowana w pamięci pozaekranowej w czasie gdy obecna ramka jest wyświetlana. Gdy następna ramka będzie gotowa, układ graficzny zostanie poinformowany o lokalizacji nowej ramki w pamięci i po prostu sięgnie tam po dane aby je wyświetlić. W międzyczasie poprzedni bufor w pamięci zostanie ponownie wypełniony kolejnymi danymi video.
Podwójne buforowanie może być włączane opcją -double oraz może być wyłączane opcją -nodouble. Obecnie standardowym zachowaniem jest wyłączone podwójne buforowanie. Jeśli używasz sterownika DGA wyświetlanie OSD (On Screen Display - wyświetlanie na ekranie) działa wyłącznie z włączonym podwójnym buforowaniem. Jednakże włączenie podwójnego buforowania może zaowocować dużym spadkiem szybkości (na moim K6-II+ 525 używało dodatkowe 20% czasu procesora!) w zależności od implementacji DGA dla Twojego sprzętu.
KWESTIA SZYBKOŚCI. Ogólnie rzecz biorąc, dostęp do bufora ramki poprzez DGA powinien być przynajmniej tak szybki, jak podczas używania sterownika X11, z dodatkową korzyścią uzyskania pełnoekranowego obrazu. Procentowe wartości szybkości wyświetlane przez MPlayera należy interpretować ostrożnie. Na przykład przy korzystaniu ze sterownika X11 nie jest uwzględniany czas potrzebny dla X serwera na rysowanie. Podłącz terminal do portu szeregowego swojego komputera i uruchom top aby zobaczyć co się na prawdę dzieje w Twoim komputerze.
Generalnie przyśpieszenie przy używaniu DGA w stosunku do "normalnego" używania X11 bardzo zależy od Twojej karty graficznej i od tego, jak dobrze zoptymalizowany jest moduł do X serwera.
Jeżeli masz wolny system, lepiej używaj 15 lub 16 bitowej głębi kolorówi, ponieważ wymaga ona tylko połowy przepustowości pamięci w porównaniu do głębi 32 bitowej.
Używanie 24 bitowej głębi jest dobrym pomysłem, jeżeli Twoja karta natywnie obsługuje tylko 32 bitową głębię, ponieważ 24 bitowa głębia przesyła 25% mniej danych w porównaniu do w pełni 32 bitowego trybu.
Widziałem pewne pliki AVI odtwarzane na Pentium MMX 266. Na AMD K6-2 powinno działać od 400MHz.
ZNANE BŁĘDY. Według niektórych deweloperów XFree DGA jest niezłą bestią. Mówią oni, że lepiej go nie używać, ponieważ jego implementacja nie zawsze jest bezbłędna dla każdego sterownika XFree.
SDL (Simple Directmedia Layer) jest w gruncie rzeczy
zunifikowanym interfejsem video/audio.
Programy, które go używają, wiedzą tylko o SDL,
a nie o sterownikach audio lub video, których używa SDL.
Na przykład port Dooma używający SDL może działać korzystając z
svgalib, aalib, X, fbdev i innych, musisz tylko określić (na przykład)
sterownik video, którego chcesz użyć.
Wybór następuje poprzez zmienną środowiskową SDL_VIDEODRIVER
.
No, teoretycznie.
W MPlayerze używaliśmy programowego skalowania sterownika SDL dla X11, dla kart/sterowników, które nie obsługują XVideo, dopóki nie zrobiliśmy własnego (szybszego, lepszego) programowego skalowania. Używaliśmy także jego wyjścia aalib, ale teraz mamy własny sterownik, który jest wygodniejszy. Jego tryb DGA był lepszy od naszego... aż do niedawna. Rozumiesz już? :)
Pomaga także z niektórymi wadliwymi sterownikami/kartami w przypadku, gdy odtwarzanie kuleje (nie z powodu wolnego systemu) lub gdy dźwięk jest opóźniony.
Wyjście video SDL obsługuje wyświetlanie napisów pod filmem, na czarnym pasku (jeżeli obecny).
Istnieje wiele opcji wiersza poleceń dla SDL
nazwa
aalib
,
dga
, x11
)
nazwa
dsp
,
esd
, artsc
)
Tabela 2.1. Klawiszologia tylko dla SDL
Klawisz | Akcja |
---|---|
c | poruszanie się pomiędzy dostępnymi trybami pełnoekranowymi |
n | powraca do normalnego trybu |
Znane błędy:
INSTALACJA. Będziesz musiał zainstalować pakiety svgalib i svgalib-devel, aby MPlayer zbudował swój własny sterownik SVGAlib (automatycznie wykrywane, lecz można wymusić). Nie zapomnij przerobić /etc/vga/libvga.config, tak aby svgalib współdziałało z Twoją kartą i monitorem.
Nie używaj opcji -fs ponieważ włącza ona skalowanie programowe, które jest powolne. Jeżeli naprawdę tego potrzebujesz, używaj opcji -sws 4, która produkuje obraz złej jakości, ale jest nieco szybsza.
OBSŁUGA EGA (4BPP). SVGAlib zawiera EGAlib i MPlayer może wyświetlać każdy film w 16 kolorach. Używalne jest to w następujących zestawieniach:
bpp (bity na piksel) musi być ustawione ręcznie na 4: -bpp 4
Film prawdopodobnie musi być przeskalowany tak, aby pasował do trybu EGA:
-vf scale=640:350
lub
-vf scale=320:200
Aby to osiągnąć, musimy sięgnąć po szybką, lecz złej jakości metodę skalowania:
-sws 4
Możliwe, że trzeba wyłączyć automatyczną korekcję proporcji obrazu:
-noaspect
Z praktyki wiem, że najlepszą jakość obrazu na ekranach EGA można osiągnąć poprzez lekkie zmniejszenie jasności: -vf eq=-20:0. Musiałem także zmniejszyć częstotliwość próbkowania, ponieważ dźwięk 44kHz był popsuty: -srate 22050.
OSD i napisy możesz wyłączyć tylko przy pomocy filtru expand. Dokładne parametry znajdziesz na stronie man.
./configure automatycznie wykrywa, czy zbudować wyjście FBdev. Więcej informacji znajdziesz w dokumentacji bufora ramki w źródłach jądra (Documentation/fb/*).
Jeżeli Twoja karta nie obsługuje standardu VBE 2.0 (starsze karty ISA/PCI, takie jak S3 Trio64), lecz VBE 1.2 (lub starsze?): cóż, pozostaje VESAfb, ale będziesz musiał załadować SciTech Display Doctor (dawniej UniVBE) przed zabootowaniem Linuksa. Użyj dyskietki startowej DOS lub czegoś innego. Nie zapomnij zarejestrować swojej kopii UniVBE ;))
Wyjście FBdev przyjmuje kilka dodatkowych parametrów:
Jeżeli chcesz się przełączyć na określony tryb, użyj
mplayer -vm -fbmodenazwa_trybu
nazwa_pliku
Samo -vm wybierze najbardziej odpowiedni tryb z /etc/fb.modes. Można użyć także wraz z opcjami -x oraz -y. Opcja -flip jest obsługiwana wyłącznie gdy format (pixel format) filmu pasuje do formatu (pixel format) obrazu. Zwróć uwagę na wartość bpp. Sterownik fbdev próbuje użyć bieżącej wartości, chyba że użyjesz opcji -bpp.
Opcja -zoom nie jest obsługiwana (użyj -vf scale). Nie możesz używać trybów 8bpp (lub mniej).
Możesz chcieć wyłączyć kursor:
echo -e '\033[?25l'
lub
setterm -cursor off
oraz wygaszacz ekranu:
setterm -blank 0
Aby z powrotem włączyć kursor:
echo -e '\033[?25h'
lub
setterm -cursor on
Zmiana trybów FBdev nie działa z buforem ramki VESA, i nie proś o to, ponieważ nie jest to ograniczenie MPlayera.
Ta sekcja traktuje o obsłudze układu BES (Back-End Scaler) na kartach Matrox G200/G400/G450/G550 przez sterowniku mga_vid w jądrze. Jest on aktywnie rozwijany przez A'rpiego i ma sprzętowy VSYNC z potrójnym buforowaniem. Działa na konsoli framebuffer oraz w X.
Tylko dla Linuksa! Na systemach nie-Linuksowych (testowane na FreeBSD) używaj VIDIX zamiast tego!
Instalacja
Przed użyciem musisz skompilować mga_vid.o:
cd drivers make
Następnie stwórz urządzenie (device) /dev/mga_vid:
mknod /dev/mga_vid c 178 0
oraz załaduj sterownik poprzez:
insmod mga_vid.o
Powinieneś sprawdzić rozmiar wykrywanej pamięci używając polecenia dmesg. Jeżeli zwracana wartość jest zła użyj opcji: mga_ram_size (najpierw rmmod mga_vid), określ rozmiar pamięci na karcie (w MB):
insmod mga_vid.o mga_ram_size=16
Aby moduł był ładowany/usuwany automatycznie w razie potrzeby: najpierw wstaw następujący wiersz na końcu /etc/modules.conf:
alias char-major-178 mga_vid
Następnie skopiuj moduł mga_vid.o
we właściwe miejsce w /lib/modules/wersja jądra
/gdzieś
.
Po czym uruchom
depmod -a
Teraz musisz (ponownie) skompilować MPlayera, ./configure wykryje /dev/mga_vid i zbuduje sterownik "mga". Używanie go w MPlayerze uzyskuje się poprzez -vo mga jeżeli masz konsolę matroxfb, lub -vo xmga pod XFree86 3.x.x lub 4.x.x.
Sterownik mga_vid współpracuje z Xv.
Plik urządzenia (device file) /dev/mga_vid może być odczytywany aby uzyskać pewne informacje, na przykład poprzez
cat /dev/mga_vid
i może być modyfikowany w celu zmiany jasności:
echo "brightness=120" > /dev/mga_vid
Ten sterownik używa bufora ramki tdfx w jądrze aby odtwarzać filmy z przyśpieszeniem YUV. Będziesz potrzebował jądra z obsługą tdfxfb. Będziesz także musiał odpowiednio skompilować MPlayera.
./configure --enable-tdfxfb
MPlayer obsługuje wyświetlanie filmów używając OpenGL, lecz jeśli Twoja platforma/sterownik obsługuje Xv, jak powinno być w przypadku PeCetów z Linuksem, używaj Xv. Wydajność OpenGL jest znacząco mniejsza. Jeżeli masz implementację X11 bez obsługi Xv, OpenGL jest sensowną alternatywą.
Niestety nie wszystkie sterowniki to obsługują. Sterowniki Utah-GLX (dla XFree86 3.3.6) obsługują to w każdej karcie. Szczegóły odnośnie instalacji dostępne są na stronie http://utah-glx.sf.net.
XFree86(DRI) 4.0.3 i nowsze obsługują OpenGL w kartach Matrox i Radeon, 4.2.0 i nowsze obsługują Rage128. Na http://dri.sf.net znajdziesz instrukcję ściągania (download) i instalacji.
Podpowiedź od jednego z naszych użytkowników: wyjście video GL może być użyte aby uzyskać wyjście TV z vsync. Będziesz musiał ustawić zmienną środowiskową (przynajmniej dla nVidia):
export $__GL_SYNC_TO_VBLANK=1
AAlib jest biblioteką do wyświetlania grafiki w trybie tekstowym, używając potężnego silnika renderującego ASCII. Istnieje wiele programów już ją obsługujących, takich jak Doom, Quake, etc. MPlayer zawiera świetnie działający sterownik. Jeżeli ./configure wykryje zainstalowane aalib, zostanie zbudowany sterownik aalib libvo.
Możesz używać następujących klawiszy w oknie AA, aby zmienić opcje renderowania:
Klawisz | Akcja |
---|---|
1 | zmniejsz kontrast |
2 | zwiększ kontrast |
3 | zmniejsz jasność |
4 | zwiększ jasność |
5 | włącz/wyłącz szybkie renderowanie |
6 | ustaw tryb ditheringu (brak, error distribution, Floyd Steinberg) |
7 | odwróć obraz |
8 | przełączanie kontroli między aa i MPlayerem |
Następujące opcje mogą być użyte w wierszu poleceń:
V
zmiana koloru OSD
V
zmiana koloru napisów
gdzie V
jest jednym z:
0
(normalny),
1
(ciemny),
2
(pogrubiony),
3
(pogrubiona czcionka),
4
(odwrócony),
5
(specjalny).
AAlib samo w sobie ma wiele opcji. Poniżej znajduje się kilka ważniejszych:
Renderowanie bardzo obciąża CPU, zwłaszcza przy użyciu AA-on-X (aalib w X), a zajmuje mniej CPU na standardowej, nie-framebufferowej konsoli. Użyj SVGATextMode, aby ustawić duży tryb tekstowy i baw się dobrze! (drugi monitor z kartą Hercules wymiata:)) (ale moim skromnym zdaniem możesz użyć opcji -vf 1bpp aby uzyskać grafikę na hgafb:)
Użyj opcji -framedrop, jeżeli Twój komputer nie jest na tyle szybki, aby wyrenderować wszystkie ramki!
Odtwarzając w terminalu osiągniesz lepszą szybkość i jakość używając sterownika
Linux, a nie curses (-aadriver linux).
Jednakże będziesz potrzebował praw zapisu na
/dev/vcsa<terminal>
!
Nie jest to wykrywane automatycznie przez aalib, ale vo_aa próbuje
znaleźć najlepszy tryb. Spójrz na
http://aa-project.sf.net/tune,
jest tam więcej informacji o dostrajaniu.
Biblioteka libcaca
jest bibiloteką produkującą tekst zamiast pikseli, może więc pracować na
starszych kartach graficznych oraz terminalach tekstowych. Jest podobna do
słynnej biblioteki AAlib
.
libcaca
potrzebuje do pracy terminalu,
powinna więc działać na wszystkich systemach Uniksowych (włącznie z Mac OS X),
używając biblioteki
slang
lub biblioteki
ncurses
, w DOSie używając biblioteki
conio.h
i w systemach Windowsowych
używając slang
lub
ncurses
(poprzez emulację Cygwin) bądź
conio.h
. Jeżeli
./configure
wykryje libcaca
, to zostanie zbudowany
sterownik caca libvo.
Różnice między AAlib
są
następujące:
Lecz libcaca
ma także
następujące ograniczenia:
Aby zmienić opcje renderowania, możesz użyć następujących klawiszy w oknie caca:
Klawisz | Akcja |
---|---|
d |
Przełączanie metod ditheringu libcaca .
|
a |
Przełączanie anyaliasingu (wygładzania)
libcaca .
|
b |
Przełączanie tła libcaca .
|
libcaca
będzie także szukać
następujących zmiennych środowiskowych:
Jeżeli Twój komputer nie jest wystarczająco szybki, aby renderować wszystkie ramki, użyj opcji -framedrop.
Ten sterownik został zaprojektowany i napisany jako ogólny sterownik dla dowolnej karty, która ma BIOS zgodny z VESA VBE 2.0. Inną zaletą tego sterownika jest to, że próbuje on wymusić włączenie wyjścia TV. VESA BIOS EXTENSION (VBE) Version 3.0, z dnia 16 września 1998 (Strona 70) mówi:
Podwójne kontrolery (Dual-Controller Designs). VBE 3.0 obsługuje podwójne kontrolery zakładając, że zwykle obydwa kontrolery są dostarczane przez tego samego OEM, pod kontrolą pojedynczego BIOS ROMu na karcie graficznej. Jest możliwe ukrycie przed aplikacją, że obecne są dwa kontrolery. Ograniczeniem tego jest brak możliwości równoczesnego używania niezależnych kontrolerów, ale umożliwia aplikacjom wypuszczonym przed VBE 3.0 na normalne działanie. Funkcja VBE 00h (zwróć informację o kontrolerze) zwraca połączone informacje o obydwóch kontrolerach, włącznie z połączoną listą dostępnych trybów. Gdy aplikacja wybiera tryb, włączany jest odpowiedni kontroler. Każda z pozostałych funkcji VBE operuje później na aktywnym kontrolerze.
Są więc szanse, że używając tego sterownika uzyskasz działające wyjście TV. (Zgaduję, że często wyjście TV jest samodzielnym układem (standalone head), lub przynajmniej samodzielnym wyjściem.)
ZALETY
int 10h
handler), nie jest więc emulatorem -
odwołuje się do rzeczywistych rzeczy
rzeczywistego BIOSu w
trybie rzeczywistym (real-mode). (tak naprawdę,
to w trybie vm86, ale działa równie szybko).
WADY
root
.
Nie używaj tego sterownika wraz z GCC 2.96! Nie będzie działać!
OPCJE WIERSZA POLECEŃ DLA VESA
opts
dga
, aby wymusić tryb dga oraz
nodga
, aby wyłączyć tryb dga. W trybie dga możesz
włączyć podwójne buforowanie
opcją -double. Informacja: możesz pominąć
te parametry, aby włączyć automatyczne wykrywanie
trybu dga.
ZNANE PROBLEMY I ICH OBEJŚCIA
Unikaj, jeśli to możliwe. Wyjście na X11 (używa rozszerzenia współdzielonej pamięci) nie używa żadnego przyśpieszania sprzętowego. Obsługuje (przyśpieszane przez MMX/3DNow/SSE, lecz ciągle wolne) skalowanie programowe. Użyj opcji -fs -zoom. Większość kart ma obsługę sprzętowego skalowania, warto więc użyć dla nich opcji -vo xv lub -vo xmga dla kart Matrox.
Problemem jest to, że sterowniki do większości kart nie obsługują sprzętowego przyśpieszenia na wyjściu na drugi monitor (second head)/TV. W takim przypadku widać zielone/niebieskie okno zamiast filmu. To tutaj przydaje się ten sterownik, lecz potrzebujesz potężnego CPU aby używać programowego skalowania. Nie używaj programowego wyjścia SDL + skalowania, jakość obrazu jest o wiele gorsza!
Skalowanie programowe jest bardzo wolne, lepiej spróbuj zmienić tryb video. Jest to bardzo proste. Spójrz na wiersze trybów sekcji DGA i wstaw je do swojego XF86Config.
Jeżeli nie możesz znaleźć trybów, które wstawiłeś, przeszukaj komunikaty XFree86. Niektóre sterowniki nie mogą używać niskich pixelclock (częstotliwości taktowania układu RAMDAC), które są wymagane dla trybów o niskiej rozdzielczości.
WSTĘP. VIDIX jest skrótem od VIDeo Interface for *niX (Interfejs VIDeo dla *niXów). VIDIX został zaprojektowany i napisany jako interfejs dla szybkich sterowników działających w przestrzeni użytkownika (user-space), zapewniających taką samą wydajność, jak mga_vid dla kart Matrox. Jest także wysoce przenośny (portable).
Ten interfejs został zaprojektowany jako próba dopasowania istniejących interfejsów przyśpieszanego video (znanych jako mga_vid, rage128_vidm radeon_vid, pm3_vid) do ustalonego schematu. Zapewnia wysokopoziomowy interfejs dla układów znanych jako BES (BackEnd Scalers) lub OV (Video Overlay - nakładka video). Nie zapewnia on niskopoziomowego interfejsu do tworów znanych jako serwery grafiki. (nie chcę współzawodniczyć z zespołem X11 w przełączaniu trybów graficznych). Innymi słowy, głównym celem tego interfejsu jest maksymalizacja szybkości odtwarzania video.
ZASTOSOWANIE
W rzeczywistości nie ma znaczenia, który sterownik wyjścia video jest używany z VIDIX.
WYMAGANIA
METODY UŻYWANIA. Gdy VIDIX używany jest jako podurządzenie (-vo vesa:vidix) konfiguracja trybu video jest dokonywana przez urządzenie wyjścia video (w skrócie vo_server). Możesz więc przekazać MPlayerowi takie same ustawienia jak dla vo_server. Dodatkowo rozumie on ustawienie -double jako globalnie widoczny parametr. (Zalecam używanie tego ustawienia z VIDIX przynajmniej dla kart ATI). Jeżeli chodzi o -vo xvidix, to obecnie rozpoznaje następujące opcje -fs -zoom -x -y -double.
Możesz także określić sterownik VIDIX jako trzeci podargument w wierszu poleceń:
mplayer -vo xvidix:mga_vid.so -fs -zoom -double plik.avi
lub
mplayer -vo vesa:vidix:radeon_vid.so -fs -zoom -double -bpp 32 plik.avi
Ale jest to niebezpieczne i nie powinieneś tego robić. W tym przypadku podany sterownik zostanie wymuszony i rezultat może być nieprzewidywalny (może zawiesić Twój komputer). Powinieneś to robić TYLKO, jeśli jesteś całkowicie pewien, że zadziała, a MPlayer nie robi tego automatycznie. Proszę, powiadom o tym deweloperów. Prawidłowym sposobem jest używanie VIDIX bez żadnych argumentów, aby umożliwić automatyczne wykrywanie sterownika.
VIDIX jest nową technologią i jest bardzo możliwe, że nie będzie działał na Twoim systemie. W tym przypadku jedynym rozwiązaniem jest przeportowanie go (głównie libdha). Ale jest nadzieja, że będzie działać na tych systemach, na których działa X11.
Ponieważ VIDIX wymaga bezpośredniego dostępu do sprzętu, musisz uruchamiać MPlayera jako root lub ustawić bit SUID na binarce MPlayera (Ostrzeżenie: Jest to zagrożenie bezpieczeństwa!). Alternatywnie możesz używać specjalnego modułu jądra, takiego jak ten:
Ściągnij rozwojową wersję svgalib (na przykład 1.9.17) LUB ściągnij stąd wersję stworzoną przez Alexa specjalnie do użytku z MPlayerem (nie potrzebuje ona do kompilacji źródeł svgalib)
Skompiluj moduł w katalogu svgalib_helper (jeżeli ściągnąłeś źródła ze strony svgalib to można go znaleźć wewnątrz katalogu svgalib-1.9.17/kernel/) i załaduj go (insmod).
Aby utworzyć odpowiednie urządzenia (devices) w katalogu /dev, wykonaj jako root
make device
w katalogu svgalib_helper.
Przenieś katalog svgalib_helper do mplayer/main/libdha/svgalib_helper.
Wymagane jeżeli ściągnąłeś źródła ze strony svgalib: usuń komentarz przed wierszem CFLAGS zawierający ciąg "svgalib_helper" z libdha/Makefile.
Przekompiluj i zainstaluj libdha
Obecnie większość kart ATI jest obsługiwana natywnie, od Mach64 do najnowszych Radeonów.
Są dwie skompilowanie binarki: radeon_vid dla Radeonów oraz rage128_vid dla kart Rage 128. Możesz wymusić jedną z nich lub pozwolić systemowi VIDIX na autodetekcję dostępnych sterowników.
Matrox G200, G400, G450 i G550 zgłoszono jako działające.
Sterownik obsługuje korektory (equalizery) video i powinien być prawie tak szybki jak bufor ramki Matrox
Jest dostępny sterownik dla układu Trident Cyberblade/i1, który można znaleźć na płytach głównych VIA Epia.
Sterownik ten został napisany przez (i jest pod opieką) Alastaira M. Robinsona
Chociaż istnieje sterownik dla układów 3DLabs GLINT R3 oraz Permedia3, to nikt go nie testował (sprawozdania są mile widziane)
Dostępny jest stosunkowo nowy sterownik nVidia, działa na kartach Riva128, TNT i GeForce2. Doniesiono nam, że na innych też działa.
OGRANICZENIA
Wskazane jest używanie binarnych sterowników nVidia dla X zanim użyjesz tego sterownika VIDIX. Jest to spowodowane tym, że niektóre rejestry, które muszą być zainicjalizowane, nie zostały jeszcze odkryte, więc prawdopodobnie próba z otwartym sterownikiem XFree86 nv.o także się nie powiedzie.
Obecnie tylko kodeki zdolne do produkowania na wyjściu obrazu w
przestrzeni kolorów UYVY mogą współpracować z tym sterownikiem.
Niestety, żaden dekoder z rodziny
libavcodec
się nie nadaje.
Pozostają nam następujące popularne kodeki: cvid, divxds, xvid,
divx4, wmv7, wmv8
i kilka innych. Zauważ, że jest to tylko
chwilowa niedogodność.
składnia wygląda w ten sposób:
mplayer -vf format=uyvy -vc divxds plik_divx3.avi
Unikalną cechą sterownika nvidia_vid jest jego zdolność do wyświetlania obrazu na zwykłej, czysto tekstowej konsoli - bez magicznych X, bufora ramki, czy czegokolwiek. W tym celu będziemy musieli użyć wyjścia video cvidix, jak w pokazuje poniższy przykład:
mplayer -vf format=uyvy -vc divxds -vo cvidix przykład.avi
Czekamy na raporty!
"DirectFB jest biblioteką graficzną, która była tworzona z myślą o systemach typu embedded. Oferuje ona maksymalną przyśpieszaną sprzętowo wydajność przy minimalnym zużyciu zasobów i minimalnym narzucie biblioteki. " - cytat z http://www.directfb.org
Nie będę tu podawał cech DirectFB.
Chociaż MPlayer nie jest obsługiwany jako "dostawca video" dla DirectFB, ten sterownik wyjścia umożliwi odtwarzanie video poprzez DirectFB. Będzie ono - oczywiście - przyśpieszane. Na moim Matroksie G400 szybkość DirectFB była taka sama jak XVideo.
Zawsze próbuj używać najnowszej wersji DirectFB. Możesz używać opcji DirectFB w wierszu poleceń, używając opcji -dfbopts. Wyboru warstwy można dokonać metodą podurządzenia. Przykład: -vo directfb:2 (standardową jest warstwa -1 : autodetekcja)
Przeczytaj proszę główną sekcję DirectFB, znajdziesz tam ogólne informacje.
Ten sterownik wyjścia video włączy CRTC2 (na drugim wyjściu z karty) w kartach Matrox G400/G450/G550, wyświetlając obraz niezależnie od pierwszego wyjścia z karty.
Ville Syrjala ma na swojej stronie domowej README oraz HOWTO wyjaśniające, jak uruchomić wyjście TV DirectFB w kartach Matrox.
MPlayer obsługuje karty z układem Siemens DVB, od producentów takich, jak: Siemens, Technotrend, Galaxis czy Hauppauge. Najnowsze sterowniki DVB są dostępne na stronie Linux TV. Jeżeli chcesz programowego transkodowania, powinieneś dysponować procesorem o zegarem co najmniej 1GHz.
Configure powinien wykryć Twoją kartę DVB. Jeżeli tak się nie stało, możesz wymusić obsługę DVB używając
./configure --enable-dvb
Jeżeli Twoje nagłówki 'ost' znajdują się w niestandardowym miejscu, ustaw ścieżkę przy pomocy
./configure --with-extraincdir=katalog ze źródłami DVB
/ost/include
Po czym skompiluj i zainstaluj jak zwykle.
ZASTOSOWANIE. Sprzętowego dekodowania (odtwarzanie standardowych plików MPEG-1/2) można dokonać tą komendą:
mplayer -ao mpegpes -vo mpegpes plik.mpg|vob
Programowe dekodowanie oraz transkodowanie różnych formatów do MPEG-1 można uzyskać używając polecenia podobnego do:
mplayer -ao mpegpes -vo mpegpestwójplik.roz
mplayer -ao mpegpes -vo mpegpes -vf expandtwójplik.roz
Zauważ, że karty DVB obsługują tylko rozdzielczość pionową równą 288 i 576 dla PAL oraz 240 i 480 dla NTSC. Musisz przeskalować obraz, dodając opcję scale=szerokość:wysokość, gdzie szerokość i wysokość są takie jak dla opcji -vf. Karty DVB akceptują różne szerokości, takie jak 720, 704, 640, 512, 480, 352 itp i dokonują sprzętowego skalowania w kierunku horyzontalnym, więc w większości przypadków nie musisz skalować horyzontalnie. Dla MPEG-4 (DivX) 512x384 (format 4:3) wypróbuj:
mplayer -ao mpegpes -vo mpegpes -vf scale=512:576
Jeżeli masz film w formacie panoramicznym i nie chcesz go skalować do pełnej wysokości, możesz użyć filtru expand=szer:wys aby dodać czarne paski. Aby wyświetlić MPEG-4 (DivX) 640x384, wypróbuj:
mplayer -ao mpegpes -vo mpegpes -vf expand=640:576 plik.avi
Jeżeli twój CPU jest za wolny na pełnowymiarowy MPEG-4 (DivX) 720x576, spróbuj przeskalować w dół:
mplayer -ao mpegpes -vo mpegpes -vf scale=352:576 plik.avi
Jeżeli to nie poprawiło szybkości, spróbuj także pionowego skalowania w dół:
mplayer -ao mpegpes -vo mpegpes -vf scale=352:288 plik.avi
Dla OSD i napisów użyj cechy OSD filtru expand. Zamiast expand=wys:szer lub expand=wys:szer:x:y, użyj więc expand=wys:szer:x:y:1 (piąty parametr :1 na końcu umożliwi renderowanie (wyświetlanie) OSD). Możesz chcieć przesunąć obraz trochę w górę, aby zyskać więcej miejsca na napisy. Możesz także chcieć przesunąć napisy w górę, jeżeli znajdują się poza ekranem TV, użyj opcji -subpos <0-100>, aby to dopasować (-subpos 80 jest dobrym wyborem).
Aby odtwarzać filmy z liczbą klatek na sekundę inną niż 25 na telewizorze PAL lub na wolnym CPU, dodaj opcję -framedrop.
Zachowanie proporcji plików MPEG-4 (DivX) oraz optymalne parametry skalowania (sprzętowe poziome i programowe pionowe z zachowaniem odpowiednich proporcji), można uzyskać przy użyciu nowego filtru dvbscale:
dla TV 4:3: -vf dvbscale,scale=-1:0,expand=-1:576:-1:-1:1 dla TV 16:9: -vf dvbscale=1024,scale=-1:0,expand=-1:576:-1:-1:1
Cyfrowa telewizja (moduł wejścia DVB). Możesz użyć swojej karty DVB do oglądania cyfrowej telewizji.
Powinieneś mieć zainstalowane programy scan oraz szap/tzap/czap/azap; wszystkie są w paczce ze sterownikami.
Sprawdź czy Twoje sterowniki działają prawidłowo używając programu takiego jak dvbstream (jest on podstawą modułu wejścia DVB).
Teraz powinieneś skompilować plik ~/.mplayer/channels.conf zgodnie ze składnią akceptowaną przez szap/tzap/czap/azap lub kazać scan zrobić to za Ciebie.
Jeżeli masz kartę więcej niż jednego typu (np. ATSC, satelita, kablówka, z nadajnika naziemnego), to możesz zapisać swoje pliki kanałów jako: ~/.mplayer/channels.conf.sat (satelita), ~/.mplayer/channels.conf.ter (naziemna), ~/.mplayer/channels.conf.cbl (kablówka), oraz ~/.mplayer/channels.conf.atsc dając w ten sposób MPlayerowi wskazówkę aby używał tych plików zamiast ~/.mplayer/channels.conf, a Ty musisz tylko określić, której karty użyć.
Upewnij się, że w channels.conf masz tylko kanały niekodowane (Free to Air). W przeciwnym razie MPlayer będzie próbował przeskoczyć do następnego widzialnego kanału, lecz może to zająć trochę czasu jeżeli wystąpuje po sobie wiele kanałów kodowanych.
W polach audio i video możesz użyć rozszerzonej składni: ...:pid[+pid]:... (każdy maksymalnie dla 6 pidów); W tym przypadku MPlayer uwzględni w strumieniu wszystkie podane pidy, plus pid 0 (zawierający PAT). Zachęcamy do uwzględnienia w każdym wierszu pidu PMT (jeżeli go znasz) dla określanego kanału. Inne możliwe zastosowania: pid televideo, druga ścieżka dźwiękowa, itp.
Aby wyświetlić pierwszy z kanałów obecnych na Twojej liście, uruchom
mplayer dvb://
Jeżeli chcesz oglądać określony kanał, na przykład R1, uruchom
mplayer dvb://R1
Jeżeli masz więcej niż jedną kartę, będziesz musiał określić numer karty, na której jest widoczny kanał (np. 2), kożystając z następującej składni:
mplayer dvb://2@R1
Aby przełączać kanały używaj klawiszy h (następny) oraz k (poprzedni) lub skorzystaj z menu OSD (wymaga działającego podsystemu OSD).
Jeżeli Twój ~/.mplayer/menu.conf zawiera wpis
<dvbsel>
, taki jak ten w przykładowym pliku
etc/dvb-menu.conf (którego możesz użyć do nadpisania
~/.mplayer/menu.conf), w menu głównym pokaże się
podmenu, które zezwoli Ci na wybór jednego kanału z obecnych w Twoim
channels.conf, możliwe, że poprzedzone menu z listą
dostępnych kart, jeżeli więcej niż jedna jest używalna z
MPlayerem.
Jeżeli chcesz zapisać program (audycję) na dysku, użyj
mplayer -dumpfile r1.ts -dumpstream dvb://R1
Jeżeli chcesz nagrać go w innym formacie (przekodowując go), możesz zamiast tego użyć polecenia podobnego do
mencoder -o r1.avi -ovc xvid -xvidencopts bitrate=800 -oac mp3lame -lameopts cbr:br=128 -pp=ci dvb://R1
Na stronie man znajdziesz listę opcji, które możesz przekazać modułowi wejścia DVB.
PRZYSZŁOŚĆ. Jeżeli masz pytania lub chcesz otrzymywać przyszłe ogłoszenia, a także wziąć udział w dyskusjach na ten temat, przyłącz się do naszej listy dyskusyjnej MPlayer-DVB. Proszę pamiętaj, że językiem listy jest angielski.
W przyszłości możesz się spodziewać zdolności wyświetlania OSD i napisów przy użyciu natywnej cechy OSD kart DVB, a także bardziej płynnego odtwarzania filmów innych niż 25fps oraz transkodowania w czasie rzeczywistym MPEG-2 i MPEG-4 (częściowa dekompresja).
MPlayer obsługuje sprzętowo przyśpieszane odtwarzanie przy użyciu karty DXR2.
Przede wszystkim będziesz potrzebował poprawnie zainstalowanych sterowników DXR2. Sterowniki i instrukcję instalacji możesz znaleźć na stronie Centrum zasobów DXR2 (DXR2 Resource Center).
ZASTOSOWANIE
włącz wyjście TV
włącz wyjście nakładki w X11
Ta opcja używana jest do sterowania sterownikiem DXR2.
Układ nakładki (overlay chipset) używany w DXR2 jest dość kiepskiej jakości, ale standardowe ustawienia powinny działać u wszystkich. OSD może być użyte z nakładką (nie na TV) poprzez rysowanie go kolorem kluczowym (colorkey). Ze standardowymi ustawieniami koloru kluczowego możesz uzyskać różne rezultaty, zwykle będziesz widział kolor kluczowy dookoła znaków lub inny śmieszny efekt. Jeżeli dobrze dostosujesz ustawienia koloru kluczowego, powinieneś uzyskać akceptowalne wyniki.
Listę dostępnych opcji znajdziesz na stronie man.
MPlayer obsługuje sprzętowo przyśpieszane odtwarzanie na kartach Creative DXR3 oraz Sigma Designs Hollywood Plus. Obie te karty używają układu dekodującego em8300 firmy Sigma Designs.
Przede wszystkim będziesz potrzebował poprawnie zainstalowanych sterowników DXR3/H+ w wersji 0.12.0 lub nowszej. Sterowniki i instrukcję ich instalacji możesz znaleźć na stronie DXR3 & Hollywood Plus dla Linuksa. configure powinno wykryć Twoją kartę automatycznie, kompilacja powinna przebiec bez problemu.
ZASTOSOWANIE
device
overlay włącza nakładkę zamiast wyjścia TV.
Do działania wymaga poprawnie skonfigurowanych ustawień nakładki.
Najłatwiejszym sposobem konfiguracji nakładki jest odpalenie autocal.
Następnie uruchom MPlayera z wyjściem dxr3 oraz z
wyłączoną nakładką; uruchom dxr3view.
W dxr3view możesz dostrajać ustawienia nakładki i oglądać efekty na bieżąco,
być może będzie to w przyszłości obsługiwane przez GUI MPlayera.
Po poprawnym ustawieniu nakładki nie będziesz już musiał używać dxr3view.
prebuf włącza buforowanie z wyprzedzeniem (prebuffering).
Prebuffering jest możliwością układu em8300, która umożliwia przetrzymywanie
w pamięci więcej niż jednej ramki video na raz. Oznacza to, że
MPlayer
uruchomiony z włączonym prebufferingiem będzie próbował cały czas utrzymywać
wypełniony bufor. Jeżeli masz wolną maszynę, MPlayer
będzie używał prawie lub dokładnie 100% CPU. Jest to szczególnie powszechne
przy odtwarzaniu czystych strumieni MPEG (takich jak DVD, SVCD itd.).
MPlayer wypełni bufor bardzo szybko, ponieważ nie
będzie musiał przekodowywać strumienia do MPEG.
Z prebufferingiem odtwarzanie video jest dużo
mniej wrażliwe na inne programy wykorzystujące CPU. Nie będzie gubił ramek,
chyba że inne aplikacje będą wykorzystywały CPU przez dłuższy czas.
Uruchamiany bez prebufferingu, em8300 jest o wiele bardziej wrażliwy na
obciążenie CPU, włączenie opcji -framedrop jest więc wysoce
wskazane aby uniknąć dalszej utraty synchronizacji.
sync włączy nowy mechanizm synchronizacji (sync-engine). Jest
to na razie funkcja eksperymentalna. Z włączonym sync wewnętrzny zegar em8300
będzie cały czas monitorowany. Gdy zacznie się różnić od zegara
MPlayera zostanie zresetowany, czego skutkiem będzie
opuszczenie przez em8300 wszystkich opóźnionych
ramek. norm=x ustawi standard TV dla DXR3 bez potrzeby
używania zewnętrznych narzędzi, takich jak em8300setup. Poprawnymi
standardami są: 5 = NTSC, 4 = PAL-60, 3 = PAL. Specjalne standardy to
2 (automatyczne dostrojenie
używające PAL/PAL-60) oraz 1 (automatyczne dostrojenie używające PAL/NTSC);
decydują one, którego standardu użyć patrząc na ilość klatek na sekundę filmu.
norm = 0 (standardowe) nie zmienia bieżącego standardu.
device
= numer urządzenia, którego
możesz użyć, jeżeli masz więcej niż jedną kartę em8300.
Każda z tych opcji może być pominięta.
:prebuf:sync spisuje się doskonale przy odtwarzaniu filmów
MPEG-4 (DivX). Niektórzy miewają problemy podczas odtwarzania plików
MPEG-1/2 korzystając
z opcji prebuf. Spróbuj najpierw bez żadnych opcji. Jeżeli będziesz miał
problemy z synchronizacją lub z napisami DVD, wypróbuj :sync.
X
Ustawia wyjście audio, gdzie X
jest numerem
urządzenia (0 jeżeli pojedyncza karta).
xxxxx
em8300 nie potrafi odgrywać dźwięku o częstotliwości próbkowania niższej niż 44100Hz. Jeżeli częstotliwość próbkowania jest niższa niż 44100Hz wybierz 44100HZ lub 48000Hz w zależności, która bardziej pasuje. Na przykład jeżeli film używa 22050Hz - wybierz 44100Hz (44100 / 2 = 22050), jeżeli używa 24000Hz - wybierz 48000Hz (48000 / 2 = 24000) i tak dalej. Nie działa to z cyfrowym wyjściem audio (-ac hwac3).
Aby oglądać zawartość nie-MPEG na em8300 (np. MPEG-4 (DivX) lub RealVideo)
będziesz musiał określić filtr video MPEG-1 taki jak
libavcodec
(lavc) lub
libfame
(fame).
W tej chwili lavc jest szybszy i daje lepszą jakość obrazu. Sugerowane jest
użycie właśnie jego, chyba że masz z nim problemy. Spójrz na stronę man, aby
uzyskać więcej informacji o -vf lavc/fame. Używanie lavc jest
wysoce zalecane. Obecnie nie istnieje sposób ustawienia współczynnika fps dla
em8300, co oznacza, że jest on zablokowany na 30000/1001fps. Z tego powodu jest
bardzo wskazane abyś używał
-vf lavc=quality
:25. Szczególnie
jeżeli używasz buforowania z wyprzedzeniem. Dlaczego 25 a nie 30000/1001? Cóż,
przy 30000/1001 odtwarzanie staje się nieco skokowe. Powód tego nie jest nam znany.
Jeżeli ustawisz fps pomiędzy 25 a 27 obraz stanie się stabilny. W chwili obecnej
nie możemy zrobić nic poza zaakceptowaniem tego faktu.
Chociaż sterownik DXR3 może wstawić jakieś OSD w obraz MPEG-1/2/4, ma ono o wiele niższą jakość niż tradycyjne OSD MPlayera, ma także liczne problemy z odświeżaniem. Powyższy wiersz najpierw zamieni wejściowe video na MPEG-4 (jest to konieczne, przepraszamy), następnie nałoży filtr expand (rozszerzenie), który nic nie rozszerzy (-1: domyślne), ale doda normalne OSD do obrazu (robi to ta jedynka na końcu).
em8300 obsługuje odtwarzanie AC3 audio (dźwięk przestrzenny) poprzez cyfrowe wyjście karty. Spójrz na opcję -ao oss powyżej. Musi ona być użyta aby określić wyjście DXR3 zamiast tego z karty dźwiękowej.
Jest to sterownik wyświetlania (-vo zr) dla wielu kart
służących do przechwytywania/odtwarzania MJPEG (testowane z DC10+ i Buz,
powinien także działać dla LML33 oraz DC10). Sterownik koduje ramkę na JPEG i
wysyła ją do karty. Do konwersji na JPEG używany i wymagany jest
libavcodec
. Korzystając ze specjalnego
trybu cinerama
możesz oglądać filmy w formacie panoramicznym (wide screen), zakładając że masz
dwa ekrany i dwie karty MJPEG. W zależności od rozdzielczości i ustawień
jakości, sterownik ten może wymagać sporo mocy CPU. Pamiętaj, aby użyć
-framedrop, jeżeli Twoja maszyna jest zbyt wolna. Info: Mój AMD
K6-2 350MHz jest (z -framedrop) całkiem wystarczający do
oglądania materiałów o rozmiarach VCD, oraz przeskalowanych w dół filmów.
Sterownik ten "rozmawia" ze sterownikiem jądra dostępnym na http://mjpeg.sf.net, musisz więc go najpierw uruchomić. Obecność karty MJPEG jest wykrywana automatycznie przez skrypt configure. Jeżeli autodetekcja zawiedzie, wymuś wykrywanie używając
./configure --enable-zr
Wyjście można kontrolować licznymi opcjami. Obszerny opis opcji można znaleźć na stronie man, krótki poprzez wywołanie
mplayer -zrhelp
Rzeczy takie, jak skalowanie i OSD (wyświetlanie na ekranie) nie są obsługiwane przez ten sterownik, ale można je uzyskać poprzez filtry video. Załóżmy, że masz film w rozdzielczości 512x272 i chciałbyś go wyświetlić na pełnym ekranie, używając swojego DC10+. Istnieją trzy główne możliwości - możesz przeskalować film do szerokości 768, 384 lub 192. Ze względu na wydajność i jakość, wybrałbym przeskalowanie filmu do 384x204 używając szybkiego programowego skalowania w trybie bilinear. Polecenie wygląda w ten sposób:
mplayer -vo zr -sws 0 -vf scale=384:204 film.avi
Kadrowania można dokonać filtrem crop albo tym sterownikiem. Załóżmy, że Twój film jest zbyt szeroki, aby go wyświetlić na Twoim Buz i chcesz użyć -zrcrop, aby uczynić film mniej szerokim. Powinieneś użyć takiego polecenia:
mplayer -vo zr -zrcrop 720x320+80+0 benhur.avi
Jeżeli chcesz użyć filtru crop, wykonaj:
mplayer -vo zr -vf crop=720:320:80:0 benhur.avi
Dodatkowe wystąpienia -zrcrop wywołują tryb cinerama. Możesz na przykład rozdzielić obraz na kilka TV lub projektorów, uzyskując w ten sposób większy ekran. Powiedzmy, że masz dwa projektory, lewy podłączony do karty Buz na /dev/video1 a prawy do DC10+ na /dev/video0. Film jest w rozdzielczości 704x288. Załóżmy także, że chcesz, aby obraz z prawego projektora był czarno-biały oraz aby ramki jpeg wyświetlane z lewego projektora były jakości 10. Aby uzyskać taki efekt powinieneś wydać następujące polecenie:
mplayer -vo zr -zrdev /dev/video0 -zrcrop 352x288+352+0 -zrxdoff 0 -zrbw \
-zrcrop 352x288+0+0 -zrdev /dev/video1 -zrquality 10 \
film.avi
Jak pewnie zauważyłeś, opcje przed drugim -zrcrop odnoszą się tylko do DC10+, a opcje po drogim -zrcrop odnoszą się do Buz. Ilość kart uczestniczących w cinerama ograniczona jest do czterech, więc możesz zbudować ekran (ścianę video:) 2x2.
Na koniec - ważna uwaga: Nie włączaj ani nie wyłączaj XawTV na urządzeniu odtwarzającym - zawiesisz swój komputer. Można natomiast NAJPIERW włączyć XawTV, NASTĘPNIE włączyć MPlayera, poczekać, aż MPlayer zakończy działanie i POTEM wyłączyć XawTV.
Ten sterownik zdolny jest do odtwarzanie używając protokołu UDP Blinkenlights (mrugające światła - przyp. tłum.). Jeżeli nie wiesz, czym jest Blinkenlights lub jego następca - Arcade, dowiedz się. Pomimo, że prawdopodobnie jest to najrzadziej używane wyjście video, z pewnością jest najfajniejszym jakie MPlayer ma do zaoferowania. Po prostu pooglądaj kilka dokumentacyjnych filmów Blinkenlights. Na filmie Arcade możesz zobaczyć sterownik wyjściowy Blinkenlights w akcji w 00:07:50.
Pod Linuksem istnieją dwa sposoby uruchomienia wyjścia TV na karcie Matrox G400:
instrukcje dla Matrox G450/G550 znajdują się w następnej sekcji!
Używając sterownika oraz modułu HAL, dostępnego na stronie Matroksa. Będziesz miał X na TV.
Ten sposób nie daje Ci przyśpieszanego odtwarzania jak pod Windowsami! Drugie wyjście ma tylko bufor ramki YUV, BES (Back End Scaler, układ skalujący YUV na kartach G200/G400/G450/G550) tam nie działa. Windowsowy sterownik jakoś to obchodzi, prawdopodobnie używając silnika (engine) 3D do powiększania, a bufora ramki YUV do wyświetlania obrazu. Jeżeli na prawdę musisz używać X, użyj opcji -vo x11 -fs -zoom. Ostrzegam, że będzie to WOLNE i będzie miało włączone zabezpieczenie przed kopiowaniem Macrovision (Macrovision copy protection). (możesz "obejść" Macrovision używając tego skryptu perla).
Używając modułów matroxfb w jądrach 2.4. 2.2 nie obsługują wyjścia TV, więc są do tego celu bezużyteczne. Musisz włączyć WSZYSTKIE specyficzne dla matroxfb podczas kompilacji (poza MultiHead) i skompilować je w moduły! Będziesz także potrzebował włączonego I2C.
Wejdź do TVout i wpisz
./compile.sh. Zainstaluj
TVout/matroxset/matroxset w jakimś katalogu
znajdującym się w zmiennej PATH
.
Jeżeli nie masz zainstalowanego fbset, umieść
TVout/fbset/fbset gdzieś w
swojej zmiennej PATH
.
Jeżeli nie masz zainstalowanego con2fb, umieść
TVout/con2fb/con2fbgdzieś w
swojej zmiennej PATH
.
Następnie wejdź do katalogu TVout/ w źródłach MPlayera i uruchom ./modules jako root. Twoja konsola tekstowa wejdzie w tryb framebuffer (nie ma odwrotu!).
Następnie, WYEDYTUJ i uruchom skrypt ./matroxtv. Ukaże Ci się bardzo proste menu. Naciśnij 2 i Enter. Teraz powinieneś mieć ten sam obraz na monitorze i TV. Jeżeli na obrazie TV (standardowo PAL) są jakieś paski, znaczy to, że skrypt nie był w stanie poprawnie ustawić rozdzielczości (standardowo na 640x512). Wypróbuj inne rozdzielczości z menu i/lub poeksperymentuj z fbset.
Tiaa. Następnym zadaniem będzie sprawienie aby kursor na tty1 (lub innym) zniknął oraz aby wyłączyć wygaszanie ekranu. Wykonaj następujące polecenia:
echo -e '\033[?25l' setterm -blank 0
lub
setterm -cursor off setterm -blank 0
Możliwe, że chcesz umieścić to w skrypcie, a także wyczyścić ekran. Aby z powrotem włączyć kursor:
echo -e '\033[?25h'
lub
setterm -cursor on
Tiaa git. Rozpocznij odtwarzanie filmu przez:
mplayer -vo mga -fs -screenw 640 -screenh 512 nazwa_pliku
(Jeżeli używasz X, przełącz się teraz na matroxfb używając np.
Ctrl+Alt+F1.)
Zmień 640
oraz 512
, jeżeli chcesz
ustawić inną rozdzielczość...
Ciesz się ultra-szybkim ultra-bajernym wyjściem TV Matroksa (lepsze niż Xv)!
Konstruowanie kabla TV-out do Matroksów. Nikt nie bierze na siebie ŻADNEJ odpowiedzialności za zniszczenia spowodowane tą dokumentacją.
Kabel dla G400. W złączu CRTC2 na czwartej nóżce (pin) jest sygnał composite video. Ziemia (uziemienie) jest na szóstej, siódmej i ósmej nóżce. (info dostarczone przez Balázs Rácz)
Kabel dla G450. W złączu CTRC2 na pierwszej nóżce jest sygnał composite video. Ziemia jest na piątej, szóstej, siódmej i pietnastej (5, 6, 7, 15) nóżce. (info dostarczone przez Balázs Kerekes)
Obsługa wyjścia TV dla tych kart została dodana dopiero niedawno i nie należy jeszcze do głównego drzewa jądra. . Z tego, co wiem, moduł mga_vid nie może być obecnie użyty ponieważ sterownik G450/G550 pracuje tylko w jednej konfiguracji: pierwszy układ CRTC (z wieloma możliwościami) na pierwszym ekranie (monitor) i drugi CRTC (bez BES - po objaśnienia do BES sięgnij do sekcji wyżej) na TV. W chwili obecnej możesz więc używać tylko sterownika wyjścia fbdev MPlayera.
Obecnie pierwszy CRTC nie może być przekierowany na drugie wyjście. Autor sterownika jądra matroxfb - Petr Vandrovec - być może zrobi obsługę tego poprzez wyświetlanie wyjścia z pierwszego CRTC na obydwa złącza jednocześnie, jak to jest w tej chwili zalecane dla G400 (-> sekcja wyżej).
Potrzebną łatkę na jądro i dokładne HOWTO można ściągnąć z http://www.bglug.ca/matrox_tvout/
WSTĘP. Obecnie ATI nie chce obsługiwać pod Linuksem żadnego z układów TV-out, z powodu ich licencjonowanej technologii Macrovision.
STATUS KART ATI Z TV-OUT POD LINUKSEM
Na innych kartach używaj sterownika VESA, bez VIDIX. Potrzebny jest jednak potężny CPU.
Jedyna rzecz, którą musisz zrobić to: Mieć podłączony odbiornik TV przez uruchomieniem swojego PC, ponieważ video BIOS inicjalizuje się tylko podczas procedury POST.
Sprawdź ten URL.
Najpierw MUSISZ ściągnąć sterowniki o zamkniętych źródłach z http://nvidia.com. Nie będę tutaj opisywał procesu instalacji i konfiguracji ponieważ nie jest to celem tej dokumentacji.
Jeżeli XFree86, XVideo i przyśpieszanie 3D już działa prawidłowo, przerób sekcję Device swojej karty w pliku XF86Config zgodnie z poniższym wzorcem (dostosuj do swojej karty/TV):
Section "Device" Identifier "GeForce" VendorName "ASUS" BoardName "nVidia GeForce2/MX 400" Driver "nvidia" #Option "NvAGP" "1" Option "NoLogo" Option "CursorShadow" "on" Option "TwinView" Option "TwinViewOrientation" "Clone" Option "MetaModes" "1024x768,640x480" Option "ConnectedMonitor" "CRT, TV" Option "TVStandard" "PAL-B" Option "TVOutFormat" "Composite" EndSection
Oczywiście najważniejsza jest część TwinView.
Układ NeoMagic można znaleźć w rożnych laptopach, niektóre wyposażone są w prosty analogowy koder TV, inne mają bardziej zaawansowaną wersję.
Układ analogowy: Przetestowane na Toshiba Tecra 8000. Jego układ wyjścia TV jest żałosnym złomem. Unikaj tego jeśli tylko możesz.
Musisz używać -vo vesa. Testowany układ był zdolny do wyświetlania tylko obrazu o proporcjach 1.333333, musisz więc używać opcji -x, -y i/lub filtrów -vf scale,crop,expand jeżeli sprzęt nie pozwoli Ci włączyć wyjścia TV. Maksymalną rozdzielczością było 720*576 przy 16bpp.
Znane problemy: tylko VESA, ograniczenie do 1.33333, obraz nie zawsze jest wyśrodkowany, co 10 minut film zmienia się na 4bpp i tak zostaje. Częste twarde zwisy, problemy z wyświetlaczem LCD.
Układ kodujący Chrontel 70xx: Obecny w IBM thinkpad 390E, a możliwe, że także w innych Thinkpadach lub notebookach.
Dla trybu PAL musisz użyć -vo vesa:neotv_pal. Dla truby NTSC - -vo vesa:neotv_ntsc. Zapewni to funkcję wyjścia TV w następujących trybach 16 bpp i 8 bpp:
Tryb 512x384 nie jest obsługiwany przez BIOS. Musisz przeskalować obraz do innej rozdzielczości aby aktywować wyjście TV. Jeżeli widzisz obraz na ekranie w rozdzielczości 640x480 lub 800x600, lecz nie w 320x240, lub w innych mniejszych rozdzielczościach, to musisz zamienić dwie tabele w vbelib.c. Więcej sczegółów znajdziesz w kodzie funkcji vbeSetTV. W tym przypadku skontaktuj się z autorem.
Znane problemy: Tylko VESA, nie zaimplementowane ustawienia obrazu poza jasnością, kontrastem, poziomem czerni (blacklevel) i filtrem migotania (flickfilter).
Sterowniki kart dźwiękowych przeznaczone dla Linuksa mają problemy związane z kompatybilnością. Dzieje się tak, ponieważ MPlayer korzysta z wbudowanych właściwości poprawnie napisanych sterowników dźwięku, które prawidłowo obsługują synchronizację audio/video. Niestety, niektórzy autorzy sterowników nie uwzględniają tej cechy, ponieważ nie jest ona potrzebna do odtwarzania efektów dźwiękowych i plików MP3.
Inne odtwarzacze takie jak: aviplay czy xine prawdopodobnie działają od razu z tymi sterownikami, ponieważ używają "prostych" metod synchronizacji korzystających z wewnętrznego zegara. Testy pokazały, że ich metody nie są tak wydajne jak MPlayera.
Używanie MPlayera z poprawnie napisanym sterownikiem dźwięku, nigdy nie zaowocuje desynchronizacją A/V z powodu dźwięku, chyba że odtwarzany plik został utworzony w niewłaściwy sposób lub jest popsuty (na stronie man znajdziesz możliwe rozwiązania tego problemu).
Jeśli masz kiepski sterownik dźwięku, spróbuj użyć opcji -autosync. Powinna ona rozwiązać Twój problem. Dokładniejsze informacje znajdziesz na stronie man.
Kilka uwag:
Jeżeli posiadasz sterowniki ALSA w wersji 0.5, prawie zawsze konieczne będzie użycie -ao alsa5, ponieważ ich kod emulacji OSS jest wadliwy i spowoduje błąd MPlayera wyświetlając komunikat o treści podobnej do tej:
DEMUXER: Za dużo (945 w 8390980 bajtach) pakietów video w buforze! (DEMUXER: Too many (945 in 8390980 bytes) video packets in the buffer!)
Jeśli dźwięk przerywany jest krótkimi trzaskami podczas odtwarzania z CD-ROMu, włącz odmaskowywanie przerwań, tak jak opisano to w rozdziale dotyczącym CD-ROMu.
Sekcja ta opisuje jak oglądać/nagrywać obraz za pomocą tunera TV kompatybilnego z V4L. Zajrzyj do strony man by zobaczyć opis opcji TV i klawiszy sterujących.
Najpierw musisz przekompilować. ./configure wykryje automatycznie nagłówki jądra związane z V4L i obecność urządzeń /dev/video*. Jeśli istnieją, obsługa TV zostanie wbudowana (zobacz wynik działania ./configure).
Upewnij się, że Twój tuner działa z innymi programami do obsługi TV pod Linuksem, na przykład XawTV.
Kompletna lista opcji dostępna jest na stronie man. Tu jest tylko kilka wskazówek:
Używaj opcji channels. Przykład
-tv channels=26-MTV1,23-TV2
Wyjaśnienie: używając tej opcji, tylko kanały 23 i 26 będą dostępne oraz pojawi się fajny napis na OSD przy zmianie kanału, wyświetlający jego nazwę. Odstępy w nazwie kanału muszą zostać zastąpione znakiem "_".
Używaj rozsądnych rozmiarów obrazu. Rozmiary obrazu wynikowego powinny być podzielne przez 16.
Jeśli nagrywasz obraz video o pionowej rozdzielczości większej niż połowa rozdzielczości pełnej (np. 288 dla PAL lub 240 dla NTSC), upewnij się, że włączyłeś usuwanie przeplotu (deinterlacing). W przeciwnym wypadku dostaniesz film, który jest zniekształcony w trakcie scen o dużej dynamice, a wskazana szybkość prawdopodobnie nie będzie nawet mogła być utrzymana przez kontroler szybkości (bitrate controller), gdyż artefakty przeplotu tworzą duże ilości szczegółów, a co za tym idzie, potrzebują dużej przepustowości. Możesz włączyć usuwanie przeplotu za pomocą opcji -vf pp=TYP_DEINT. Zwykle pp=lb spisuje się dobrze, ale to kwestia gustu. Poczytaj o innych algorytmach usuwania przeplotu na stronie man i zacznij eksperymentować.
Usuwaj "martwe miejsca". Kiedy nagrywasz video, są pewnie miejsca przy brzegach, które są zazwyczaj czarne lub zawierają szum. Jak się łatwo domyślić, niepotrzebnie wymagają większej przepustowości (dokładniej, to nie same czarne miejsca, lecz ostre przejścia pomiędzy czarnym kolorem i jaśniejszym obrazem video, ale nie jest to akurat takie ważne). Zanim zaczniesz nagrywać, ustaw argumenty opcji crop by wszystkie "śmieci" na brzegach zostały wycięte. Oczywiście nie zapomnij o utrzymaniu prawidłowych wymiarów obrazu.
Uważaj na obciążenie CPU. Nie powinno ono przekroczyć granicy 90% przez większość czasu. Jeśli masz duży bufor nagrywania, MEncoder może przetrwać przeciążenie przez najwyżej kilka sekund i nic więcej. Lepiej więc wyłączyć wszystkie trójwymiarowe wygaszacze OpenGL i inne tego typu bajery.
Nie mieszaj z zegarem systemowym. MEncoder korzysta z niego do synchronizacji A/V. Jeśli zmodyfikujesz zegar systemowy (zwłaszcza wstecz), MEncoder się pogubi i utraci klatki. Jest to bardzo ważna sprawa jeśli jesteś podpięty do sieci i używasz do synchronizacji czasu różnych programów typu NTP. Musisz wyłączyć NTP w trakcie nagrywania, jeśli chcesz, by było ono przeprowadzone niezawodnie.
Nie zmieniaj opcji outfmt, chyba, że wiesz co robisz lub Twoja
karta/sterownik naprawdę nie obsługuje ustawienia domyślnego (przestrzeń
kolorów YV12). W poprzednich wersjach
MPlayera/MEncodera
konieczne było podanie formatu wyjścia.
Ten problem powinien być rozwiązany w aktualnych wydaniach i opcja
outfmt nie jest już wymagana, a ustawienie domyślne powinno
pasować każdemu. Na przykład, jeśli nagrywasz do formatu DivX używając
libavcodec
i podasz opcję outfmt=RGB24
aby zwiększyć jakość nagrywanego obrazu, zostanie on i tak później z
powrotem przekonwertowany do YV12, więc jedyne, co osiągniesz, to ogromna
strata mocy obliczeniowej.
By użyć przestrzeni kolorów I420 (outfmt=i420), musisz dodać opcję -vc rawi420 z powodu konfliktu fourcc z kodekiem Intel Indeo.
Jest kilka sposobów na nagrywanie audio. Możesz nagrywać dźwięk za pomocą Twojej karty dźwiękowej korzystając z zewnętrznego kabla pomiędzy kartą video i wejściem liniowym lub korzystając z wbudowanego w układ bt878 przetwornika ADC. W tym drugim przypadku musisz załadować sterownik btaudio. Przeczytaj plik linux/Documentation/sound/btaudio (w drzewie jądra, a nie MPlayera) by dowiedzieć się jak korzystać z tego sterownika.
Jeśli MEncoder nie może otworzyć urządzenia dźwiękowego, upewnij się, że jest ono rzeczywiście dostępne. Zdarzają się problemy z serwerami dźwięku typu aRts (KDE) lub ESD (GNOME). Jeśli masz kartę full-duplex (prawie wszystkie przyzwoite karty dostępne obecnie obsługują tę funkcję) i korzystasz z KDE, spróbuj zaznaczyć opcję "Działanie w pełni dupleksowe" ("full duplex") w konfiguracji serwera dźwięku.
Puste wyjście, do AAlib :)
mplayer -tv driver=dummy:width=640:height=480 -vo aa tv://
Wejście ze standardowego V4L:
mplayer -tv driver=v4l:width=640:height=480:outfmt=i420 -vc rawi420 -vo xv tv://
Bardziej skomplikowany przykład. Każe on MEncoderowi nagrać pełen obraz PAL, wykadrować go i usunąć przeplot korzystając z algorytmu liniowego zlewania (linear blend). Audio jest kompresowane ze stałą szybkością równą 64kbps, korzystając z kodeka LAME. To ustawienie jest dobre do nagrywania filmów.
mencoder -tv driver=v4l:width=768:height=576 \
-ovc lavc -lavcopts vcodec=mpeg4:vbitrate=900 \
-oac mp3lame -lameopts cbr:br=64 \
-vf crop=720:544:24:16,pp=lb -o wyjscie.avi
tv://
Ten przykład dodatkowo przeskaluje obraz do 384x288 i skompresuje video z szybkością 350kbps w trybie wysokiej jakości. Opcja vqmax uwalnia kwantyzator i pozwala kompresorowi video na osiągnięcie tak niskiej szybkości nawet kosztem jakości obrazu. Może być to używane do nagrywania długich seriali TV, kiedy jakość obrazu nie jest tak ważna.
mencoder -tv driver=v4l:width=768:height=576 \
-ovc lavc -lavcopts vcodec=mpeg4:vbitrate=350:vhq:vqmax=31:keyint=300 \
-oac mp3lame -lameopts cbr:br=48 \
-vf crop=720:540:24:18,pp=lb,scale=384:288 -sws 1 -o wyjscie.avi
tv://
Jest również możliwe podanie mniejszych wymiarów obrazu w opcji -tv i pominięcie programowego skalowania, ale to podejście wykorzystuje maksymalną ilość dostępnych informacji i jest trochę bardziej odporne na szum. Z powodu ograniczeń sprzętowych Układy bt878 mogą stosować uśrednianie pikseli jedynie w kierunku poziomym.
MPlayer używa skomplikowanego drzewa odtwarzania. Składa się on z opcji globalnych podanych na początku, na przykład:
mplayer -vfm 5
i opcji podanych po nazwach plików, które stosują się jedynie do podanego pliku/URLa/czegokolwiek, na przykład:
mplayer -vfm 5film1.avi
film2.avi
-vfm 4
Możesz pogrupować nazwy plików/URLe za pomocą {
oraz
}
. Przydaje się to przy opcji -loop:
mplayer { 1.avi -loop 2 2.avi } -loop 3
Powyższe polecenie odtworzy pliki w kolejności: 1, 1, 2, 1, 1, 2, 1, 1, 2.
Odtwarzanie pliku:
mplayer [opcje
] [ścieżka
/]nazwa_pliku
Kolejny sposób na odtworzenie pliku:
mplayer [opcje
]file:///zakodowana-ścieżka-uri
Odtwarzanie większej ilości plików:
mplayer [opcje domyślne
] [ścieżka
/]nazwa_pliku1
[opcje dla nazwa_pliku1
]nazwa_pliku2
[opcje dla nazwa_pliku2
] ...
Odtwarzanie VCD:
mplayer [opcje
] vcd://numer_ścieżki
[-cdrom-device/dev/cdrom
]
Odtwarzanie DVD:
mplayer [opcje
] dvd://numer_tytułu
[-dvd-device/dev/dvd
]
Odtwarzanie z WWW:
mplayer [opcje
] http://strona.com/plik.asf
(można użyć również playlist)
Odtwarzanie z RTSP:
mplayer [opcje
] rtsp://serwer.przyklad.com/nazwa_strumienia
Przykłady:
mplayer -vo x11/mnt/Films/Contact/contact2.mpg
mplayer vcd://2
-cdrom-device/dev/hdc
mplayer -afm 3/mnt/DVDtrailers/alien4.vob
mplayer dvd://1
-dvd-device/dev/hdc
mplayer -abs 65536 -delay -0.4 -nobps~/movies/test.avi
MPlayer posiada w pełni konfigurowalną, opartą na komendach warstwę sterowania, która pozwala na sterowanie MPlayera za pomocą klawiatury, myszki, joysticka lub zdalnego sterowania (za pomocą LIRC). Zajrzyj do strony man w celu przejrzenia pełnej listy skrótów klawiszowych.
MPlayer pozwala Ci przypisać dowolny klawisz/przycisk
do dowolnego polecenia za pomocą prostego pliku konfiguracyjnego. Składnia tego
pliku to nazwa klawisza, po której znajduje się komenda. Domyślny plik
konfiguracyjny znajduje się w $HOME/.mplayer/input.conf, ale
można podać także inny za pomocą opcji
-input plik
(ścieżki względne są względem $HOME/.mplayer).
Możesz uzyskać pełną listę uruchamiając mplayer -input keylist. i pełną listę dostępnych komend za pomocą mplayer -input cmdlist.
Linux Infrared Remote Control - użyj łatwego do własnoręcznego zbudowania odbiornika podczerwieni i (prawie) dowolnego pilota zdalnego sterowania i steruj nim swoim Linuksem! Więcej informacji na stronie domowej LIRC.
Jeśli zainstalowałeś LIRC, configure automatycznie go
wykryje. Jeśli wszystko pójdzie dobrze, MPlayer
wypisze "Setting up LIRC support...
" przy
starcie. Jeśli wystąpi błąd, powiadomi Cię o tym. Jeśli nic nie powie Ci na
temat LIRC, to znaczy, że jego obsługa nie została wkompilowana. Proste :-)
Nazwa aplikacji dla MPlayer to - niespodzianka -
mplayer. Możesz używać dowolnych komend
MPlayera, a nawet podać więcej niż jedną
komendę na raz oddzielając je za pomocą \n
.
Nie zapomnij o włączeniu flagi repeat w .lircrc jeśli
ma to sens (skoki, głośność itp). To jest fragment przykładowego
.lircrc:
begin button = VOLUME_PLUS prog = mplayer config = volume 1 repeat = 1 end begin button = VOLUME_MINUS prog = mplayer config = volume -1 repeat = 1 end begin button = CD_PLAY prog = mplayer config = pause end begin button = CD_STOP prog = mplayer config = seek 0 1\npause end
Jeśli nie lubisz standardowej lokalizacji pliku lirc-config
(~/.lircrc), użyj opcji -lircconf
nazwa_pliku
by podać inny plik.
Tryb sługi pozwala Ci na utworzenie prostej nakładki na MPlayera. Po uruchomieniu z opcją -slave MPlayer będzie czytał komendy oddzielone znakami nowego wiersza (\n) ze standardowego wejścia. Komendy zostały udokumentowane w pliku slave.txt
MPlayer potrafi odtwarzać pliki z sieci, używając protokołów HTTP, FTP, MMS lub RTSP/RTP.
Odtwarzanie następuje przez proste podanie URLa w wierszu poleceń.
MPlayer zwraca również uwagę na zmienną środowiskową
http_proxy
i używa proxy jeśli jest to możliwe. Korzystanie
z proxy może być również wymuszone za pomocą:
mplayer
http_proxy://proxy.micorsops.com:3128/http://micorsops.com:80/strumien.asf
MPlayer potrafi również czytać ze standardowego wejścia (nie z nazwanych potoków). Może to być wykorzystane np. do odtwarzania poprzez FTP:
wget ftp://micorsops.com/cokolwiek.avi
-O - | mplayer -
Zalecane jest również włączenie -cache przy odtwarzaniu z sieci:
wget ftp://micorsops.com/cokolwiek.avi
-O - | mplayer -cache 8192 -
Jak już uda Ci się zmusić MPlayera do odtwarzania Twojego ulubionego strumienia internetowego, możesz użyć opcji -dumpstream aby zapisać strumień do pliku. Na przykład:
mplayerhttp://217.71.208.37:8006
-dumpstream -dumpfilestrumien.asf
zapisze zawartość strumieniowaną z
http://217.71.208.37:8006
do pliku
stream.asf
.
Działa to ze wszystkimi protokołami obsługiwanymi przez
MPlayera, jak MMS, RSTP itd.
Jeśli chcesz zapisać jedynie audio lub video, użyj odpowiednio -dumpaudio
lub -dumpvideo, ale zwróć uwagę na to, że
MPlayer zignoruje wszystkie poza ostatnią
opcją -dump* podaną w linii poleceń.
Strumienie zdalne pozwalają na dostęp do większości strumieni obsługiwanych przez MPlayera ze zdalnego hosta. Głównym celem tej funkcji jest umożliwienie bezpośredniego korzystania z napędu CD lub DVD innego komputera w sieci (pod warunkiem posiadania odpowiedniej przepustowości). Niestety niektóre typy strumieni (aktualnie TV oraz MF) nie są dostępne zdalnie, gdyż są zaimplementowane na poziomie demultipleksera. Jest to przykre w przypadku MF, gdyż TV i tak by wymagało szalonej przepustowości.
Po kompilacji MPlayera wejdź do katalogu TOOLS/netstream i wpisz make by zbudować program serwera. Możesz wtedy skopiować program nestream do odpowiedniego miejsca w Twoim systemie (przeważnie /usr/local/bin pod Linuksem).
Najpierw musisz uruchomić serwer na komputerze, do którego masz zamiar mieć dostęp zdalny. Aktualnie serwer jest bardzo podstawowy i nie ma żadnych argumentów wiersza poleceń, więc po prostu wpisz netstream. Teraz możesz np. odtworzyć drugą ścieżkę VCD na serwerze za pomocą:
mplayer -cache 5000 mpst://nazwa_serwera/vcd://2
Masz również dostęp do plików na tym serwerze:
mplayer -cache 5000 mpst://nazwa_serwera//usr/local/movies/lol.avi
Zauważ, że ścieżki, które nie zaczynają się na "/" będą względne do katalogu, w którym uruchomiono serwer. Opcja -cache nie jest wymagana, lecz bardzo zalecana.
Miej na uwadze to, że aktualnie serwer nie ma żadnych zabezpieczeń. Nie narzekaj więc na liczne nadużycia, które są przez to możliwe. Zamiast tego wyślij jakąś (dobrą) łatkę, by stał się lepszy lub napisz swój własny serwer.
Decyzyjna lista edycji (EDL) pozwala na automatyczne omijanie, bądź wyciszanie fragmentów filmów podczas ich odtwarzania, na podstawie pliku konfiguracji EDL dla danego filmu.
Funkcja ta jest użyteczna dla osób, które zechcą obejrzeć film w "przyjaznym dla rodziny" trybie. Możesz usunąć z filmu przemoc, przekleństwa, Jar-Jar Binksa zgodnie z własnymi preferencjami. Ponadto istnieją także inne zastosowania, jak automatyczne pomijanie reklam w oglądanych filmach.
Format pliku EDL jest raczej "goły". Gdy system EDL osiągnie pewien stopień dojrzałości, prawdopodobnie zostanie zaimplamentowany format pliku bazujący na XML. (zachowując wsteczną kompatybilność z wcześniejszymi formatami EDL).
Użyj podczas uruchamiania MPlayera flagi -edl <nazwa pliku> z nazwą pliku EDL, który ma być zastosowany do filmu.
Aktualny format pliku EDL jest następujący:
[sekunda początkowa] [sekunda końcowa] [akcja]
gdzie liczby odpowiadające sekundom nie muszą być całkowite, zaś akcja może
przyjmować wartość 0
dla pominięcia bądź
1
dla wyciszenia.
Na przykład:
5.3 7.1 0 15 16.7 1 420 422 0
Oznacza to pominięcie filmu między 5,3 sekundą, a 7,1 sekundą filmu, następnie wyciszenie od 15-tej sekundy do 16,7 sekundy i wreszcie pominięcie filmu pomiędzy 420 a 422 sekundą Akcje te są wykonywane, gdy licznik czasu filmu osiągnie zadeklarowaną wartość.
Aby stworzyć plik EDL, będący punktem wyjścia do dalszej edycji, użyj flagi -edlout <nazwa pliku>. Następnie, podczas odtwarzania filmu, gdy zechcesz oznaczyć ostatnie dwie sekundy do pominięcia, naciśnij i. Odpowiedni wpis zostanie utworzony w pliku. Wtedy możesz wrócić do edycji i "dostrajania" wygenerowanego pliku EDL.
4.1. Rozwój | |
Pyt: | Jak mam stworzyć poprawną łatkę do MPlayera? |
Odp: | Przygotowaliśmy krótki dokument opisujący wszystkie potrzebne szczegóły. Kieruj się zawartymi w nim wskazówkami. |
Pyt: | Jak mogę przetłumaczyć MPlayera na nowy język? |
Odp: | Przeczytaj HOWTO tłumaczenia, powinno wszystko wyjaśnić. Dalszą pomoc uzyskasz na liście dyskusyjnej MPlayer-docs. |
Pyt: | Jak mogę wesprzeć rozwój MPlayera? |
Odp: | Jesteśmy bardziej niż szczęśliwi, gdy ofiarowujecie nam sprzęt i oprogramowanie w formie darów. Pomagają one nam ciągle ulepszać MPlayera. |
Pyt: | Jak mogę zostać deweloperem MPlayera? |
Odp: | Programiści i dokumentatorzy zawsze są mile widziani. Na początek przeczytaj dokumentację techniczną dla ogólnego zarysu. Następnie powinieneś zapisać się na listę dyskusyjną MPlayer-dev-eng i zacząć pisać. Jeżeli chcesz pomóc przy dokumentacji, zapisz się na listę dyskusyjną MPlayer-docs. |
Pyt: | Czemu nie używacie autoconf/automake? |
Odp: | Mamy modularny, ręcznie napisany system budowania. Sprawuje się on całkiem nieźle, więc po co zmieniać? Poza tym nie lubimy narzędzi auto* tak jak i inni ludzie. |
4.2. Kompilacja | |
| |
Pyt: |
Kompilacja nie udaje się z powodu błędu i gcc
wyskakuje z tajemniczą wiadomością zawierającą zwrot
|
Odp: | Natknąłeś się na błąd w gcc. Proszę zgłoś go zespołowi gcc ale nie nam. Z jakichś przyczyn MPlayer często wywołuje błędy kompilatora. Jednak nie możemy ich naprawić i nie dodajemy do naszych źródeł obejść błędów kompilatora. Żeby uniknąć problemu albo trzymaj się wersji kompilatora o której wiadomo że jest stabilna i pewna, albo często aktualizuj. |
Pyt: | Czy istnieją binarne (RPM/deb) paczki z MPlayerem? |
Odp: | Więcej informacji na ten temat znajdziesz w sekcjach Debian oraz RPM. |
Pyt: | Jak mogę zbudować 32 bitowego MPlayera na 64 bitowym Athlonie? |
Odp: | Zastosuj następujące opcje konfiguracyjne. ./configure --target=athlon_xp --cc="gcc -m32" --as="as --32" --with-extralibdir=/usr/lib
|
Pyt: | Kompilacja kończy się komunikatem błędu podobnym do tego: cfft.c: In function`passf2': cfft.c:556: unable to find a register to spill in class `FLOAT_REGS' cfft.c:556: this is the insn: (insn 235 233 246 (set (subreg:SF (reg/v:DI 29 rmm0 [110]) 0) (minus:SF (mem:SF (plus:SI (mult:SI (reg:SI 1 edx [112]) (const_int 8 [0x8])) (reg/v/f:SI 3 ebx [62])) [4 S4 A32]) (reg:SF 8 st(0) [132]))) 533 {*fop_sf_1_nosse} (insn_list 232 (nil)) (expr_list:REG_DEAD (reg:SF 8 st(0) [132]) (nil))) cfft.c:556: confused by earlier errors, bailing out
|
Odp: | Jest to znany problem z gcc 3.2, aby go rozwiązać zaktualizuj gcc do wersji 3.3. Sposób instalacji gcc opisany jest w sekcji gcc 2.96. Możesz również użyć zewnętrznaj biblioteki FAAD tak jak opisano w sekcji AAC. |
Pyt: | Kompilacja kończy się komunikatem błędu podobnym do tego: In file included from mplayer.c:34: mw.h: In function `mplMainDraw': mw.h:209: Internal compiler error in print_rtl_and_abort, at flow.c:6458 Please submit a full bug report, with preprocessed source if appropriate.
|
Odp: | Jest to znany problem z gcc 3.0.4, aby go rozwiązać zaktualizuj kompilator do wersji 3.1. Sposób instalacji gcc opisany jest w sekcji gcc 2.96. |
Pyt: | Konfiguracja kończy się takim komunikatem i MPlayer nie chce się skompilować! Your gcc does not support even i386 for '-march' and '-mcpu' (Twój gcc nie obsługuje nawet i386 dla '-march' oraz '-mcpu') |
Odp: | Twój gcc nie jest poprawnie zainstalowany. Sprawdź configure.log aby uzyskać szczegóły. |
Pyt: | Co jest nie tak z gcc 2.96? |
Odp: | Odradzamy używanie gcc 2.96! Przeczytaj ten dokument, aby dowiedzieć się dlaczego Red Hat wypuścił gcc 2.96 i jakie są z nim związane problemy. Jeżeli ciągle chcesz go używać, zdobądź najnowszą wersję i przekaż do skryptu configure opcję --disable-gcc-checking. Pamiętaj, że od tej pory zdany jesteś tylko na siebie. Nie zgłaszaj błędów, nie proś o pomoc na listach dyskusyjnych. Nie zapewniamy żadnego wsparcia w razie gdybyś napotkał jakieś problemy. |
Pyt: | Super, mam gcc 3.0.1 od Red Hata/Mandrake'a, więc wszystko jest w porządku! |
Odp: | Nie, ponieważ były/są problemy także z tymi kompilatorami. Status obsługiwanych przez MPlayera kompilatorów możesz sprawdzić w sekcji Instalacja. |
Pyt: | .. gcc 2.96 ... (Tak, niektórzy ludzie CIĄGLE rzucają się o gcc 2.96!) |
Odp: | Cytat z listu wysłanego przez A'rpiego na listę MPlayer-users (słowo "ideg" jest opisane poniżej):
|
Pyt: | Wyjście SDL nie działa lub się nie kompiluje. Problemem leży w... |
Odp: | Testy zostały przeprowadzone z SDL 1.2.x, może także działać z SDL 1.1.7+. Nie działa z jakimikolwiek wcześniejszymi wersjami. Jeżeli wybierzesz taką wersję, zdany jesteś na siebie. |
Pyt: | Ciągle mam problemy przy kompilacji z obsługą SDL. gcc mówi: undefined reference to `SDL_EnableKeyRepeat' Co teraz? |
Odp: |
Gdzie zainstalowałeś biblioteki SDL? Jeżeli zainstalowałeś w
/usr/local (domyślnie), wyedytuj
górnopoziomowy (top level) config.mak
i dodaj |
Pyt: | Mam Matroksa G200/G400/G450/G550, jak skompilować/używać sterownika mga_vid? |
Odp: | Przeczytaj sekcję mga_vid. |
Pyt: | Podczas 'make', MPlayer narzeka na biblioteki X11. Nie rozumiem, MAM zainstalowane X!? |
Odp: | ...ale nie masz zainstalowanej paczki X development lub jest ona źle zainstalowana. Nazywa się ona XFree86-devel* w Red Hacie i xlibs-dev w Debianie Woody, libx11-dev w Debianie Sarge. Sprawdź także czy istnieją dowiązania symboliczne do /usr/X11 oraz /usr/include/X11 (może to być problem w systemach Mandrake). Można je utworzyć następującymi poleceniami: # ln -sf /usr/X11R6 /usr/X11 # ln -sf /usr/X11R6/include/X11 /usr/include/X11 Układ katalogów w Twojej dystrybucji może odbiegać od Standardu Hierarchii Systemu Plików (FHS) . |
Pyt: | Nie mogę skompilować SVGAlib. Używam jądra 2.3/2.4... |
Odp: |
Musisz wyedytować z SVGAlib plik Makefile.cfg i
zakomentować |
Pyt: | Skompilowałem MPlayera z obsługą libdvdcss/libdivxdecore, lecz kiedy próbuję go uruchomić, mówi: error while loading shared libraries: lib*.so.0: cannot load shared object file: No such file or directory Sprawdziłem ten plik i JEST w /usr/local/lib... |
Odp: | Dodaj /usr/local/lib do /etc/ld.so.conf i uruchom ldconfig. |
Pyt: | Kompilacja MEncodera zwraca błąd na etapie linkowania! |
Odp: | To jest problem z linkerem (konsolidatorem). Aktualizacja binutils powinna pomóc (2.11.92.* lub nowsze powinny być dobre). Ponieważ nie jest to nasza wina, prosimy tego nie zgłaszać! |
Pyt: | MPlayer umiera z błędem segmentation fault przy sprawdzaniu pthread! |
Odp: | chmod 644 /usr/lib/libc.so |
Pyt: | Chiałbym skompilować MPlayera na Miniksie! |
Odp: | Ja też. :) |
4.3. Pytania ogólne | |
| |
Pyt: | Czy są jakieś listy dyskusyjne o MPlayerze? |
Odp: | Tak. Spójrz na sekcję listy dyskusyjne. |
Pyt: | Znalazłem paskudny błąd przy próbie odtworzenia mojego ulubionego filmu! Kogo powinienem poinformować? |
Odp: | Przeczytaj proszę wskazówki do zgłoszeń błędów i kieruj się zawartymi tam instrukcjami. |
Pyt: | Mam problemy z odtwarzaniem plików przy użyciu kodeka ... Czy mogę ich używać? |
Odp: | Sprawdź status kodeków, jeżeli nie zawiera on Twojego kodeka przeczytaj dokumentację kodeków, a w szczególności HOWTO importowania kodeków i skontaktuj się z nami. |
Pyt: | Gdy zaczynam odtwarzanie wyświetla się następujący komunikat lecz wszystko wydaje się być wporządku. Linux RTC init: ioctl (rtc_pie_on): Permission denied
|
Odp: | Potrzebujesz uprawnień roota lub specjalnie ustawionego jądra, aby używać nowego kodu synchronizacji czasu. Aby uzyskać szczegóły, spójrz do sekcji RTC w dokumentacji. |
Pyt: | Jak mogę zrobić zrzut ekranu? |
Odp: | Musisz skorzystać ze sterownika wyjścia video, który nie używa nakładki video. Pod X11 wystarczy użyć -vo x11, pod Windows działa -vo directx:noaccel |
Pyt: | W lewym górnym rogu jest licznik czasu. Jak mogę się go pozbyć? |
Odp: | Naciśnij o oraz wypróbuj opcję -osdlevel. |
Pyt: | Opcja -xy lub -fs nie działa ze sterownikiem x11 (-vo x11)... |
Odp: | Działa, lecz musisz osobno zażądać skalowania programowego (bardzo wolne) opcją -zoom. Lepiej skorzystaj z obsługi trybu XF86VidMode: musisz podać opcje -vm oraz -fs i to wszystko. Upewnij się, że masz odpowiednie definicje trybów graficznych (modelines) w swoim pliku XF86Config i spróbuj uruchomić sterownik DGA oraz sterownik SDL DGA. Jest o wiele szybszy. Jeżeli SDL DGA działa - używaj go. Działa jeszcze szybciej. |
Pyt: | Co oznaczają te liczby w wierszu stanu? |
Odp: | Przykład: A: 2.1 V: 2.2 A-V: -0.167 ct: 0.042 57/57 41% 0% 2.6% 0 4 49%
Większość z nich obecna jest dla celów odpluskwiania (debugging) i zostanie w pewnym momencie usunięta. |
Pyt: | A jeżeli nie chcę żeby się pojawiały? |
Odp: | Użyj opcji -quiet i przeczytaj stronę man. |
Pyt: | Dlaczego użycie procesora przez video_out wynosi zero (0%) dla niektórych plików? |
Odp: | Nie jest ono zerowe, ale pomiar jest wywołany z kodeka i poprzez to nie może być mierzone oddzielnie. Powinieneś spróbować odtworzyć plik używając -vo null a potem -vo ... i sprawdzić różnicę, aby zobaczyć prędkość video_out. |
Odp: | Używasz Bezpośredniego Renderowania, gdzie kodek renderuje wprost do pamięci video. W tym przypadku procent dekodowania zawiera także procent wyświetlania. |
Pyt: | Dostaję komunikaty błędów o nie znalezionym pliku /usr/local/lib/codecs/ ... |
Odp: | Ściągnij kodeki Win32 z naszej strony kodeków (paczka kodeków avifile ma inny zestaw DLL) i zainstaluj je. |
Pyt: | Umm, co to jest "Licznik Ideg (IdegCounter)"? |
Odp: | Kombinacja słowa węgierskiego (ideg) i angielskiego (counter). "Ideg" po węgiersku oznacza to samo co "nerve" (wkurzenie :) ) w angielskim. Wymawiane jest mniej więcej "ydaegh". Termin ten po raz pierwszy został użyty, aby zmierzyć zdenerwowanie A'rpiego po pewnym (umm) "tajemniczym" zniknięciu kodu z CVS ;) |
Pyt: | A co to jest "Faszom(C)ounter (licznik Faszom)"? |
Odp: | "Fasz" to węgierskie słowo, którego nie chcesz znać, reszta jest związana ze zboczonymi umysłami deweloperów MPlayera. |
Pyt: | Napisy są bardzo ładne, najpiękniejsze jakie widziałem, ale spowalniają odtwarzanie! Wiem, że to jest niezwykłe... |
Odp: |
Po odpaleniu ./configure, wyedytuj config.h
i zamień |
Pyt: |
Co to właściwie jest to |
Odp: |
Spójrz do sekcji |
Pyt: | Ale configure mówi mi Checking for libavcodec... no ! |
Odp: |
Musisz ściągnąć |
Pyt: | Nie mogę się dostać do menu GUI. Klikam prawym przyciskiem myszy lecz nie mogę dostać się do żadnych elementów menu! |
Odp: | Czy używasz FVWM? Spróbuj tego:
|
Pyt: | Jak uruchomić MPlayera w tle? |
Odp: | Użyj: mplayer
|
4.4. Problemy z odtwarzaniem | |
| |
Pyt: | Nie mogę zidentyfikować powodu dziwnego problemu z odtwarzaniem. |
Odp: | Czy masz jakiś zawieruszony plik codecs.conf w ~/.mplayer/, /etc/, /usr/local/etc/ lub podobnym miejscu? Usuń go, stary plik codecs.conf może powodować tajemnicze problemy i jest przeznaczony tylko dla deweloperów pracujących nad obsługą kodeków. Przesłania on wbudowane ustawienia MPlayera dotyczące kodeków, co spowoduje chaos jeśli w nowszych wersjach zostaną wprowadzone niekompatybilne zmiany. Jeśli nie jest używany przez ekspertów jest to przepis na katastrofę w postaci pozornie losowych i trudnych do zlokalizowania awarii i problemów z odtwarzaniem. Jeśli nadal masz go gdzieś w swoim systemie powinieneś go teraz usunąć. |
Pyt: | Jak mogę określić ścieżkę audio/napisów z pliku OGM, Matroska, NUT lub DVD? |
Odp: | Musisz użyć -aid (ID audio) lub -alang (język audio), -sid (ID napisów) lub -slang (język napisów), na przykład: mplayer przykład.mkv -alang eng -slang eng mplayer przykład.mkv -aid 1 -sid 1 Aby zobaczyć jakie są dostępne: mplayer -vo null -ao null -frames 0 -v
|
Pyt: | Próbuję odtworzyć jakiś strumień z internetu, ale nie udaje mi się. |
Odp: | Spróbuj otworzyć strumień korzystając z opcji -playlist. |
Pyt: | Ściągnąłem film z sieci P2P i nie chce się odtworzyć! |
Odp: | Prawdopodobnie plik jest uszkodzony lub jest to fałszywka. Jeżeli dostałeś go od znajomego i on mówi, że u niego działa, to spróbuj porównać skróty md5sum (md5sum hashes). |
Pyt: | Właśnie zainstalowałem MPlayera. W momencie gdy chcę otworzyć plik video wyskakuje błąd: Error opening/initializing the selected video_out (-vo) device. (Błąd przy otwarciu.inicjalizacji wybranego urządzenia video_out (-vo).) Jak mogę rozwiązać mój problem? |
Odp: | Po prostu zmień urządzenie wyjścia video. Aby uzyskać listę dostępnych sterowników wyjścia video wydaj następujące polecenie: mplayer -vo help Gdy juz wybierzesz odpowiedni sterownik wyjścia video, dodaj go do swojego pliku konfiguracyjnego. Dodaj
vo = do ~/.mplayer/config i/lub
vo_driver = do ~/.mplayer/gui.conf. |
Pyt: | Mam problem z wyświetlaniem napisów. Pomocy! |
Odp: |
Upewnij się, że poprawnie zainstalowałeś czcionki. Wykonaj jeszcze raz
krok po kroku instrukcje z części
OSD i napisy z sekcji traktującej o
instalacji. Jeżeli używasz czcionek TrueType, upewnij się, że masz zainstalowaną
bibliotekę |
Pyt: | Dlaczego MPlayer nie działa w Fedora Core? |
Odp: | Prelink, exec-shield i aplikacje używająca windowsowych DLLi (takie jak MPlayer) nie współdziałają ze sobą dobrze w Fedorze. Problem powoduje exec-shield, który ustawia losowy adres, pod który będą ładowane biblioteki systemowe. Dzieje się to podczas prelinkowania (raz na dwa tygodnie) MPlayer próbuje załadować windowsowy DLL pod określony adres (0x400000). Jeżeli znajduje się tam już ważna biblioteka systemowa, MPlayer się wykrzaczy. (Typowym objawem jest błąd naruszenia ochrony pamięci (segfault) przy próbie odtwarzania plików Windows Media 9.) Jeżeli napotkasz taki problem, masz dwa wyjścia:
|
Pyt: | ... działa z xine/vlc/... ale nie działa z MPlayerem. |
Odp: | MPlayer to nie xine/vlc/.... Chociaż te aplikacje mają trochę wspólnego kodu, zestaw kodeków (DLL), to synchronizacja, demultiplexing itp. są inne i nie powinny być porównywane. Jeżeli masz plik, którego MPlayer nie odtwarza poprawnie, lecz nie ma z nim problemów w innych odtwarzaczach, przeczytaj wskazówki do zgłaszania błędów i wgraj plik na nasz serwer FTP. |
Pyt: | Dźwięk gubi synchronizację przy odtwarzaniu pliku AVI. |
Odp: | Wypróbuj opcje -bps oraz -nobps. Jeżeli nic się nie poprawiło, przeczytaj wskazówki do zgłaszania błędów i wgraj plik na FTP. |
Pyt: | MPlayer kończy pracę z jakimś błędem przy korzystaniu z l3codeca.acm. |
Odp: | Sprawdź wynik ldd /usr/local/bin/mplayer. Jeżeli zawiera libc.so.6 => /lib/libc.so.6 (0x4???????) gdzie "?" jest jakąkolwiek liczbą to wszysto jest w porządku, błąd tkwi gdzie indziej. Jeżeli wygląda tak: libc.so.6 => /lib/libc.so.6 (0x00??????)
to świadczy o problemie z twoim jądrem/libc. Być może używasz jakiś łatek
związanych z bezpieczeństwem (na przykład łatka OpenWall Solar Designera), które
wymuszają ładowanie bibliotek pod bardzo niskie adresy. Poniewaź l3codeca.acm
jest nierelokowalną biblioteką DLL musi być ładowana pod |
Pyt: | Mój komputer odtwarza zbyt wolno pliki AVI MS DivX w rozdzielczości ~ 640x300 i z dźwiękiem mp3 stereo. Gdy użyję opcji -nosound, wszystko jest OK (lecz bez dźwięku). |
Odp: | Twój komputer jest zbyt wolny lub sterownik karty dźwiękowej jest zepsuty. Skonsultuj się z dokumentacją, aby zobaczyć, czy możesz poprawić wydajność. |
Pyt: | MPlayer przerywa działanie z komunikatem MPlayer interrupted by signal 4 in module: decode_video (MPlayer przerwany przez sygnał 4 w module: decode_video). |
Odp: | Spróbuj uruchamiać MPlayera na maszynie, na której go skompilowałeś. Albo przekompiluj z detekcją CPU podczas pracy. (./configure --enable-runtime-cpudetection). Nie używaj MPlayera na CPU innym niż ten, na którym był kompilowany, bez użycia przed chwilą wymienionej opcji. |
Pyt: | Mam problemy z [Twój manager okien] i pełnoekranowymi trybami xv/xmga/sdl/x11... |
Odp: | Przeczytaj wskazówki do zgłaszania błędów i wyślij nam poprawne zgłoszenie błędu. Popróbuj też poeksperymentować z opcją -fstype. |
Pyt: | Taki komunikat wyskoczył przy odtwarzaniu plików MPEG: Can't find codec for video format 0x10000001! |
Odp: | Masz starą wersję codecs.conf w ~/.mplayer/, /etc/, /usr/local/etc/ lub podobnym miejscu. Usuń go, nie jest już potrzebny. LUB masz opcję vc= albo coś podobnego w swoim pliku(ach) konfiguracyjnym(ch). |
Pyt: | Gdy uruchamiam MPlayera pod KDE, pojawia się czarny ekran i nic się nie dzieje. Po około minucie zaczyna się odtwarzanie filmu. |
Odp: | Arts - demon dźwięku KDE - blokuje urządzenie dźwiękowe. Albo czekaj aż rozpocznie się odtwarzanie lub wyłącz demona arts w centrum sterowania. Jeżeli chcesz używać dźwięku arts, określ wyjście audio przez nasz natywny sterownik dźwięku arts (-ao arts). Jeżeli próba się nie powiedzie lub sterownik nie jest wkompilowany, spróbuj użyć SDL (-ao sdl) i upewnij się, że twoje SDL poradzi sobie z dźwiękiem arts. Inną możliwością jest uruchomienie MPlayera z artsdsp. |
Pyt: | Mam plik AVI, który daje szary ekran, gdy odtwarzany jest przez -vc odivx oraz zielony gdy przez -vc divx4. |
Odp: | To nie jest plik DivX, lecz MS MPEG4v3. Jeżeli masz starą wesję codecs.conf w ~/.mplayer/, /etc/, /usr/local/etc/ lub podobnym miejscu, usuń go. |
Pyt: | Podczas odtwarzania filmu pojawia się brak synchronizacji video-audio i/lub MPlayer wywala się z następującym komunikatem: DEMUXER: Too many (945 in 8390980 bytes) video packets in the buffer!
|
Odp: | Może istnieć kilka powodów.
|
Pyt: | Mam plik MJPEG, który działa z innymi odtwarzaczami ale wyświetla czarny obraz w MPlayerze |
Odp: | Użyj innego kodeka do odtwarzania tego pliku, spróbuj -vc ffmjpeg. |
Pyt: | Gdy próbuję przechwytywać obraz z mojego tunera, działa lecz kolory są dziwne. Działa normalnie z innymi aplikacjami. |
Odp: | Twoja karta prawdopodobnie źle zgłasza obsługiwane przez siebie przestrzenie kolorów. Spróbuj z YUY2 zamiast standardowego YV12 (spójrz do sekcji TV). |
Pyt: | Mam problemy z synchronizacją A/V. Niektóre moje AVI są odtwarzane dobrze, a niektóre z podwójną szybkością. |
Odp: | Masz wadliwą kartę/sterownik dźwięku. Najwyraźniej jest ustawiona na stałe na 44100Hz i próbujesz odtwarzać plik z dźwiękiem 22050Hz. Wypróbuj filtr zmiany częstotliwości próbkowania audio (audio resample filter). |
Pyt: | Wszystkie pliki WMV (lub inne...), które odtwarzam, tworzą zielone/szare okno i dostaję tylko dźwięk! MPlayer wypisuje: Detected video codec: [null] drv:0 (NULL codec (no decoding))
|
Odp: | Jeżeli masz starą wersję codecs.conf w ~/.mplayer/, /etc/, /usr/local/etc/ lub podobnym miejscu, usuń go. |
Pyt: | Otrzymuję bardzo dziwne wartości procentowe (o wiele za duże) podczas odtwarzania plików na moim notebooku. |
Odp: | Jest to wpływ systemu zarządzania energią / oszczędzania energii Twojego notebooka (w BIOSie, a nie w jądrze). Podłącz zewnętrzne zasilanie przed włączeniem notebooka. Możesz także sprawdzić, czy cpufreq (interfejs SpeedStep dla Linuksa) Ci pomoże. |
Pyt: | Audio/video całkowicie traci synchronizację, gdy uruchamiam MPlayera jako root na moim notebooku. Działa normalnie, gdy uruchamiam go jako zwykły użytkownik. |
Odp: | To także jest efekt zarządzania energią (patrz wyżej). Podłącz zewnętrzne zasilanie przed włączeniem swojego notebooka lub użyj opcji -nortc. |
Pyt: | Podczas odtwarzania filmu nagle MPlayer zaczyna się dławić i dostaję następujący komunikat: Badly interleaved AVI file detected - switching to -ni mode...
|
Odp: | Pliki ze złym przeplotem i -cache nie działają razem zbyt dobrze. Spróbuj -nocache. |
Pyt: | Jak mogę odtwarzać pliki audio MPEG Layer 2 (mp2)? |
Odp: | Musisz użyć -rawaudio on:format=0x50. |
4.5. Problemy ze sterownikami wyjścia video/audio (vo/ao) | |
| |
Pyt: | Jak użyć dmix z MPlayerem? |
Odp: | Po ustawieniu asoundrc użyj -ao alsa:device=dmix. |
Pyt: | Podczas odtwarzania filmu nie ma dźwięku i dostaję komunikat podobny do tego: AO: [oss] 44100Hz 2ch Signed 16-bit (Little-Endian) audio_setup: Can't open audio device /dev/dsp: Device or resource busy couldn't open/init audio device -> NOSOUND Audio: no sound!!! Start playing...
|
Odp: | Czy masz uruchomione KDE lub GNOME z demonem dźwięku ARTS lub ESD? Spróbuj wyłączyć demona dźwięku lub użyj opcji -ao arts lub -ao esd, aby MPlayer używał ARTS lub ESD. Możliwe jest też że masz uruchomione ALSA bez emulacji OSD, spróbuj załadować moduły jądra ALSA OSS lub dodaj -ao alsa do wiersza poleceń żeby bezpośrednio używać sterownika wyjścia dźwięku ALSA. |
Pyt: | Co jest ze sterownikiem DGA? Nie mogę go znaleźć! |
Odp: | ./configure automatycznie wykrywa Twój sterownik DGA. Jeżeli -vo help nie wyświetla DGA to coś jest nie tak z Twoją instalacją X. Spróbuj ./configure --enable-dga i przeczytaj sekcję DGA. Możesz również wypróbować sterownik SDL DGA, używając opcji -vo sdl:dga. |
Pyt: | OK, -vo help wyświetla sterownik DGA, lecz narzeka na uprawnienia. Pomocy! |
Odp: | Sterownik działa tylko gdy uruchamiany jako root! Jest to ograniczenie DGA. Powinieneś stać się rootem (su -) i spróbować jeszcze raz. Innym rozwiązaniem jest ustawienia bitu SUID na MPlayerze ale nie jest to zalecane! chown root /usr/local/bin/mplayer chmod 755 /usr/local/bin/mplayer chmod +s /usr/local/bin/mplayer
OstrzeżenieJest to duże zagrożenie bezpieczeństwa! Nigdy nie rób tego na serwerze lub komuterze, którego nie jesteś w stanie całkowicie kontrolować, ponieważ inni użytkownicy mogą zdobyć uprawnienia roota poprzez SUID root MPlayera. Zostałeś ostrzeżony.
|
Pyt: | Podczas używania Xvideo mój Voodoo 3/Banshee mówi: X Error of failed request: BadAccess (attempt to access private resource denied) Major opcode of failed request: 147 (MIT-SHM) Minor opcode of failed request: 1 (X_ShmAttach) Serial number of failed request: 26 Current serial number in output stream:27
|
Odp: |
Sterownik |
Pyt: | Wyjście OpenGL (-vo gl) nie działa (zwis/czarne okno/błedy X11/...). |
Odp: | Twój sterownik OpenGL nie obsługuje dynamicznych zmian tekstur (glTexSubImage). Wiadomo, że nie działa z binarnym śmietnikiem nVidii. Działa z kartami Utah-GLX/DRI i Matrox G400, jak również z DRI i kartami Radeon. Nie będzie działać z DRI i innymi kartami. Z kartami 3DFX nie będzie działać z powodu ograniczenia rozmiaru tekstur do 256x256. |
Pyt: | Mam kartę nVidia TNT/TNT2. Mam pasek z dziwnymi kolorami zaraz pod filmem! Czyja to wina? |
Odp: | Jest to błąd w binarnych sterownikach X nVidii. Te błędy ujawniają się TYLKO przy kartach TNT/TNT2 i nie możemy nic z tym zrobić. Aby naprawić problem zaktualizuj binarne sterowniki do najnowszej wersji. Jeżeli ciągle jest źle, wyżalaj się nVidii! |
Pyt: | Mam kartę nVidia XYZ. Gdy klikam na okno wyświetlania GUI, aby włączyć panel GUI, pojawia się czarny kwadrat w miejscu, w którym kliknąłem. Mam najnowsze sterowniki. |
Odp: | Tak, nVidia naprawiła poprzedni błąd (powyżej) i przedstawiła nam nowy. Pogratulujmy im. AKTUALIZACJA: Według nVidii, błąd został już naprawiony. |
Pyt: |
Ależ ten świat okrutny...! SDL obsługuje |
Odp: |
Jeszcze raz spróbuj z |
4.6. Odtwarzanie DVD | |
| |
Pyt: | Co z nawigacją/menu DVD? |
Odp: | MPlayer nie obsługuje menu DVD ze względu na poważne ograniczenia konstrukcyjne, które uniemożliwiają poprawną obsługę stałych obrazów i treści interaktywnej. Jeżeli chcesz mieć fajne menu, będziesz musiał użyć innego odtwarzacza, takiego jak xine, vlc lub Ogle. Jeżeli chcesz nawigacji DVD w MPlayerze, to będziesz musiał sam ją zaimplementować. Bierz jednak pod uwagę, że jest to poważne przedsięwzięcie. |
Pyt: | Napotkałem na taki błąd przy odtwarzaniu DVD: mplayer: ifo_read.c:1143: ifoRead_C_ADT_internal: Assertion nfo_length / sizeof(cell_adr_t) >= c_adt->nr_of_vobs' failed.
|
Odp: | Jest to znany błąd libdvdread 0.9.1/0.9.2. Użyj libmpdvdkit2, który jest obecny w źródłach MPlayera i jest używany domyślnie. |
Pyt: | Czy mogę skompilować libdvdread oraz libdvdcss na moim słodkim SPARCu pod Solarisem? |
Odp: | Kto wie... Mówią, że działa, więc proszę przetestuj to i przyślij nam informacje. Zajrzyj do dokumentacji libdvdread oraz jego strony domowej. Nie jesteśmy autorami libdvdread. Używaj libmpdvdkit2, który jest obecny w źródłach MPlayera i jest używany domyślnie. |
Pyt: | Co z napisami? Czy MPlayer może je wyświetlać? |
Odp: | Tak. Spójrz do rozdziału DVD. |
Pyt: | Jak mogę ustawić kod regionu w moim napędzie DVD? Nie mam Windowsów! |
Odp: | Użyj narzędzia regionset. |
Pyt: | Czy muszę mieć uprawnienia użytkownika (setuid) root, aby móc odtwarzać DVD? |
Odp: | Nie. Jednakże musisz mieć poprawne prawa ustawione dla wpisu urządzenia DVD (w /dev/). |
Pyt: | Skąd mam wziąć paczki libdvdread oraz libdvdcss? |
Odp: | Nie ma takiej potrzeby. Użwaj libmpdvdkit2, który jest obecny w źródłach i używany jest domyślnie. Wspomniane paczki znajdują się na stronie Ogle. |
Pyt: | Czy jest możliwe odtwarzanie/kodowanie tylko wybranych rozdziałów? |
Odp: | Tak, spróbuj użyć opcji -chapter. |
Pyt: | Odtwarzanie DVD jest bardzo wolne! |
Odp: | Użyj opcji -cache (opisana na stronie man) i spróbuj włączyć DMA dla napędu DVD, używając narzędzia hdparm (opisane w rozdziale CD). |
Pyt: | Skopiowałem DVD używając vobcopy. Jak mogę je odtworzyć/zakodować z dysku twardego? |
Odp: | Użyj opcji -dvd-device aby odwołać się do katalogu zawierającego pliki: mplayer dvd://1 -dvd-device /ścieżka/do/katalogu
|
4.7. Prośby o wprowadzenie nowych możliwości | |
| |
Pyt: | Jeżeli MPlayer jest zatrzymany i próbuję przewijać lub nacisnę jakikolwiek klawisz, MPlayer z powrotem wraca do odtwarzania. Chciałbym móc przwijać zatrzymany film. |
Odp: | Zaimplementowanie tego bez utraty synchronizacji A/V jest bardzo podchwytliwe. Wszelkie próby do tej pory zakończyły się porażką. Łatki mile widziane. |
Pyt: | Chciałbym przewijać o +/- 1 ramkę zamiast 10 sekund. |
Odp: | Możesz przejść w przód o jedną klatkę przez naciśnięcie .. Film zostanie zatrzymany (po szczegóły zajrzyj do strony man). Wątpliwe jest, żeby przechodzenie w tył zostało zaimplementowane w najbliższym czasie. |
Pyt: | Jak mogę zmusić MPlayera aby zapamiętał opcje jakich użyłem dla danego pliku, n.p. film.avi? |
Odp: | Stwórz plik film.avi.conf z opcjami specyficznymi dla pliku i umieść go w ~/.mplayer lub w tym samym katalogu co plik. |
4.8. Kodowanie | |
| |
Pyt: | Jak mogę kodować? |
Odp: | Przeczytaj sekcję o MEncoderze. |
Pyt: | Jak mogę tworzyć VCD? |
Odp: | Wypróbuj skrypt mencvcd z podkatalogu TOOLS. Korzystając z niego, możesz kodować DVD lub inne filmy do formatu VCD lub SVCD, a nawet wypalać bezpośrednio na CD. |
Pyt: | Jak mogę połączyć dwa pliki video? |
Odp: | Przy odrobinie szczęścia zbiory MPEG można połączyć (zkonkatenować). Do zbiorów AVI możesz używać obsługi wielu zbiorów MEncodera w następujący sposób: mencoder -ovc copy -oac copy -o wyjście.avi plik1.avi plik2.avi Zadziała to tylko jeśli zbiory mają tę samą rozdzielczość i kodek. Możesz też spróbować avidemux i avimerge (część zestawu narzędzi transcode). |
Pyt: | Jak mogę naprawić pliki AVI z popsutym indeksem lub przeplotem? |
Odp: | Po prostu skopiuj strumienie audio i video do nowego zbioru, a MEncoder wygeneruje indeks. Oczywiście to nie może naprawić ewentualnych błędów w strumieniach audio i/lub video. Naprawia to też pliki z popsutym przeplotem, więc opcja ni nie będzie już potrzebna. mencoder -idx
|
Pyt: | Nie mogę zakodować napisów z DVD do AVI! |
Odp: | Musisz poprawnie określić opcję -sid! |
Pyt: | Jak mogę zakodować tylko wybrane rozdziały z DVD? |
Odp: | Użyj poprawnie opcji -chapter, na przykład: -chapter 5-7 |
Pyt: | Próbuję pracować z plikami 2GB+ na systemie plików VFAT. Czy to działa? |
Odp: | Nie, VFAT nie obsługuje plików 2GB+. |
Pyt: | Dlaczego zalecany bitrate wypisywany przez MEncodera jest ujemny? |
Odp: | Ponieważ bitrate (ilość bitów na sekundę) z którym zakodowałeś audio jest za duże, aby film się zmieścił na jakimkolwiek CD. Sprawdź czy libmp3lame jest zainstalowana poprawnie. |
Pyt: | Nie mogę zakodować pliku ASF do AVI/DivX, ponieważ ma on 1000 fps? |
Odp: | Ponieważ ASF używa zmiennego frame rate (ilość ramek na sekundę), a AVI używa ustalonej wartości, musisz ustawić ją ręcznie używając -ofps. |
Pyt: | Jak mogę wstawić napisy do pliku wynikowego? |
Odp: | Po prostu przekaż opcję -sub <nazwa_pliku> (lub odpowiednio -sid) do MEncodera. |
Pyt: | Jak zakodować wyłącznie dźwięk z teledysku? |
Odp: | Nie jest to możliwe bezpośrednio lecz możesz sprówować następującego sposobu (zwróć uwagę na znak & na końcu polecenia mplayer):
mkfifo encode
mplayer -ao pcm -aofile encode dvd://1 &
lame Ten sposób pozwala na użycie dowolnego kodera, nie tylko LAME. Po prostu zamień lame w powyższym poleceniu na swój ulubiony koder audio. |
Nowoczesne napędy CD-ROM osiągają bardzo duże prędkości. Niektóre z nich są dodatkowo zdolne do pracy przy zredukowanych prędkościach. Oto kilka powodów, dla których powinniśmy zastanowić się czy nie należy zredukować prędkości naszego napędu:
Istnieją doniesienia o błędach odczytu przy dużych prędkościach, szczególnie podczas używania uszkodzonych bądź wadliwie wytłoczonych/nagranych płyt CD. Redukcja prędkości odczytu może uchronić nas przed utratą danych w takich przypadkach.
Wiele napędów CD jest dokuczliwie głośnych. Redukcja prędkości może zmniejszyć natężenie hałasu.
Możesz zredukować prędkość napędu CD z interfejsem IDE korzystając z hdparm, setcd lub cdctl. Działają one w następujący sposób:
hdparm -E[prędkość]
[urządzenie cdrom]
setcd -x[prędkość]
[urządzenie cdrom]
cdctl -bS [speed]
Jeśli używasz emulacji SCSI, możesz musieć zastosować ustawienia do prawdziwego urządzenia IDE a nie emulowanego SCSI.
Jeżeli masz uprawnienia roota, to pomóc może także następująca komenda:
echo file_readahead:2000000 > /proc/ide/[urządzenie cdrom]
/settings
Ustawiamy w ten sposób wielkość bufora odczytu na 2MB, co pomaga przy odczycie porysowanych płyt. Jeżeli ustawimy zbyt dużą wielkość tego bufora, napęd będzie stale rozkręcał się i zwalniał, co spowoduje bardzo znaczny spadek wydajności. Zaleca się również dostrojenie napędu CD-ROM przy użyciu hdparm:
hdparm -d1 -a8 -u1 [urządzenie cdrom]
Włączamy w ten sposób dostęp DMA do dysku, czytanie z wyprzedzeniem i odmaskowanie IRQ (IRQ unmasking) (więcej przeczytasz na stronach man do hdparm)
Proszę sprawdzić "/proc/ide/urządzenie
cdrom
/settings"
dla dostrojenia swojego napędu CD-ROM.
Dla napędów SCSI nie istnieje jednolity sposób ustawiawiania tych parametrów (jeżeli znasz jakiś to napisz nam o nim). Istnieje narzędzie które działa z napędami SCSI Plextor.
Aby poznać pełną listę dostępnych opcji, proszę przeczytać odpowiednie strony man. Składnia dla standardowego DVD (Digital Versatile Disc) jest następująca:
mplayer dvd://<ścieżka>
[-dvd-device<urządzenie>
]
Przykład:
mplayer dvd://1
-dvd-device/dev/hdc
Domyślnym urządzeniem (device) DVD jest /dev/dvd. Jeżeli Twoje ustawienia są inne, stwórz odpowiedni symlink lub ustaw odpowiednie urządzenie (device) w linii polecenia korzystając z opcji -dvd-device.
Obsługa DVD - nowy sposób (mpdvdkit2).
MPlayer używa libdvdread
oraz libdvdcss
do dekodowania i odtwarzania DVD. Te
dwie biblioteki są zawarte w podkatalogu libmpdvdkit2/
w głównym drzewie katalogów MPlayera, nie trzeba
instalować ich osobno. Wybraliśmy tę opcję ponieważ musieliśmy poprawić błąd
libdvdread
i zastosować łatkę (patch), która dodaje
obsługę buforowania złamanych kluczy CSS do
libdvdcss
. Skutkuje to dużym wzrostem szybkości
ponieważ klucze nie muszą być łamane za każdym razem przed odtwarzaniem.
Jeśli występują problemy z dekodowaniem DVD, spróbuj wyłączyć supermount albo inne tego typu usługi.
MPlayer potrafi także używać bibliotek systemowych
libdvdread
oraz libdvdcss
, ale to rozwiązanie jest
nie zalecane, gdyż może powodować błędy,
niekompatybilności bibliotek oraz zmniejszenie prędkości.
W przypadku problemów z dekodowaniem DVD, spróbuj wyłączyć supermount, bądź inne tego typu udogodnienia.
Struktura dysku DVD. Dyski DVD mają po 2048 bajtów na sektor z ECC/CRC. Zwykle posiadają system plików UDF na pojedynczej ścieżce zawierającej różnorakie pliki (małe pliki .IFO i .BUK oraz duże (1GB) pliki .VOB). Są one rzeczywistymi plikami i mogą być kopiowane/odtwarzane z podmontowanego systemu plików niezakodowanego DVD.
Pliki .IFO zawierają informacje nawigacyjne filmu (rozdział/tytuł/mapa zaczepów/tablica języków, itp) i są konieczne do odczytu i interpretacji zawartości pliku .VOB (filmu). Pliki .BUK są kopiami zapasowymi plików .IFO. Używają sektorów wszędzie, więc aby zaimplementować nawigację na DVD lub rozszyfrować zawartość, należy używać adresowania sektorów dysku w trybie raw.
Z tego powodu obsługa DVD w starym stylu z użyciem
libcss
wymaga podmontowanego systemu plików DVD oraz
dostępu do urządzenia w trybie raw bazującym na sektorach. Niestety wymagane
jest (pod Linuksem) posiadanie uprawnień roota aby móc korzystać z sektorowego
adresowania pliku. Wybór jest następujący:
Posiadać uprawnienia roota lub używać programu wykonywalnego MPlayera posiadającego prawa suid-root.
Pozwolić MPlayerowi na uruchamianie owijacza
(wrapper) fibmap_mplayer w trybie suid-root w celu uzyskania dostępu do DVD
(używane przy odtwarzaniu DVD starą metodą poprzez
libcss
).
Wcale nie używać sterownika systemu plików zawartego w jądrze lecz korzystać
jedynie z narzędzi działających w przestrzeni użytkownika. Zajmują się tym
biblioteki libdvdread
0.9.x i
libmpdvdkit
(obsługa DVD nowym sposobem). Sterownik
systemu plików UDF zawarty w jądrze nie jest wymagany ponieważ wspomniane
biblioteki zawierają własny, wbudowany sterownik systemu plików UDF. DVD nie
musi być podmontowany, bowiem używany jest jedynie dostęp w trybie raw.
Czasami /dev/dvd nie może być czytany przez użytkowników,
zatem autorzy libdvdread
zaimplementowali emulację
warstwy, która przenosi adresowanie sektorowe na nazwy plików i offsety, aby już
u źródeł podmontowanego systemu plików emulować dostęp w trybie raw, na równi z
dostępem do dysku twardego.
libdvdread
równie dobrze akceptuje miejsce
podmontowania (mountpoint) jak i nazwę urządzenia przy dostępie w trybie raw i
sprawdza /proc/mounts w celu odnalezienia odpowiedniej
nazwy urządzenia (device). Zostało to napisane z myślą o systemie Solaris, gdzie
nazwy urządzeń są przydzielane automatycznie.
Domyślnym urządzeniem (device) DVD jest /dev/dvd. Jeżeli Twoje ustawienia są inne, stwórz odpowiedni symlink lub ustaw odpowiednie urządzenie w linii polecenia korzystając z opcji -dvd-device.
Autoryzacja DVD.
Metoda autoryzacji i rozszyfrowywania używana gdy korzystamy z DVD przy użyciu
nowego sposobu polega na korzystaniu ze zmodyfikowanej biblioteki
libdvdcss
(patrz wyżej). Ta metoda może być określona
poprzez zmienna środowiskową DVDCSS_METHOD
, która może być
ustawiona na "key", "disk" albo "title".
Jeżeli żadna wartość nie jest ustawiona, próbowane są następujące metody (domyślnie: "key", "title request"):
bus key: Ten klucz jest ustalany podczas autoryzacji (długa mieszanina ioctl'i i rozmaite wymiany kluczy, bajery kryptograficzne) oraz jest używany do szyfrowania tytułu i kluczy dyskowych przed wysłaniem ich nieszyfrowaną magistralą (by zapobiec podsłuchiwaniu). Bus key jest wymagany do pobrania i wstępnego rozszyfrowania zaszyfrowanego klucza dyskowego (disk key).
cached key: MPlayer wyszukuje już złamane klucze tytułów, które są przechowywane w katalogu ~/.mplayer/DVDKeys (szybkie ;) ).
key: Jeżeli żaden zbuforowany klucz nie jest dostępny, MPlayer próbuje rozszyfrować klucz dyskowy korzystając z garści kluczy zaszytych w odtwarzaczu.
disk: Jeżeli metoda "key" zawodzi (np. brak kluczy zaszytych w odtwarzaczu), MPlayer złamie klucz dyskowy używając algorytmu ataku brutalnego. Proces ten jest bardzo procesorochłonny i wymaga 64 MB pamięci (16777216 (16*2^20) 32-bitowych pól tabeli hash) do przechowywania tymczasowych danych. Ta metoda powinna zadziałać zawsze (niestety jest wolna).
title request: Mając klucz dyskowy
MPlayer pobiera zaszyfrowane klucze tytułowe (title
key), które są zawarte w ukrytych sektorach (hidden
sectors) używając ioctl()
. Ochrona
regionalna w napędach RPC-2 jest realizowana w tym kroku i może się nie udać na
tych napędach. Jeśli jednak się uda, klucze tytułowe zostają rozszyfrowane przy
użyciu magistrali i klucza dyskowego.
title: Ta metoda jest używana jeżeli zapytanie o tytuł zakończyło się niepowodzeniem i nie można polegać na żadnej wymianie kluczy z napędem DVD. Używa ona ataku kryptograficznego w celu odgadnięcia klucza tytułowego (title key) wprost (poprzez szukanie powtarzającego się ciągu znaków (wzoru) w rozszyfrowanej zawartości pliku VOB oraz poprzez zgadywanie, że czysty tekst odpowiadający pierwszym zaszyfrowanym bajtom jest kontynuacją wzoru). Metoda ta jest także znana jako "znany czysto-tekstowy atak (known plaintext attack)" bądź "DeCSSPlus". Rzadko zdarza się, ale się zdarza, że metoda ta może zawieść ponieważ jest niewystarczająco dużo zaszyfrowanych danych na dysku aby spełnić założenia statystycznego ataku lub ponieważ klucz zmienia się w trakcie tytułu. Jest to jedyna metoda, aby zdeszyfrować DVD przechowywane na twardym dysku lub DVD ze złym regionem na napędzie RPC2 (powolne).
Napędy DVD RPC-1 zabezpieczają ustawienia regionu jedynie poprzez oprogramowanie. Napędy RPC-2 mają sprzętowe zabezpieczenie, które pozwala na co najwyżej 5 zmian. Jeżeli posiadamy napęd DVD RPC-2 wymagana/zalecana jest aktualizacja firmware'u do RPC-1. Nowe wersje firmware'ów można znaleźć w internecie. Poszukiwania radzimy rozpocząć od forum firmware'ów. Jeżeli nie ma tam nowej wersji firmware'u dla naszego urządzenia, użyj regionset tool (narzędzia do zmiany regionów) aby ustawić kod regionu na swoim napędzie DVD (pod Linuksem). Ostrzeżenie: Możesz ustawić region tylko 5 razy.
Pełna lista dostępnych opcji znajduje się na stronie man. Składnia dla standardowego Video CD (VCD) jest następująca:
mplayer vcd://<ścieżka>
[-cdrom-device<urządzenie>
]
Przykład:
mplayer vcd://2 -cdrom-device /dev/hdc
Domyślnym urządzeniem VCD jest /dev/cdrom. Jeśli Twoje ustawienia są inne, utwórz dowiązanie symboliczne lub podaj prawidłowe urządzenie w linii poleceń za pomocą opcji -cdrom-device
Przynajmniej napędy CD-ROM SCSI firmy Plextor i niektóre modele Toshiby
mają beznadziejną wydajność przy odczycie VCD. Jest to spowodowane
niekompletną implementacją ioctl
'a CDROMREADRAW dla
tych urządzeń. Jeśli masz jakieś pojęcie o programowaniu SCSI,
pomóż nam zaimplementować ogólną
obsługę SCSI dla VCD.
W międzyczasie możesz wyciągać dane z VCD za pomocą readvcd i odtwarzać plik wynikowy za pomocą MPlayera
Struktura VCD. Video CD (VCD) składa się z sektorów CD-ROM XA, tzn. CD-ROM mode 2 form 1 i form 2 posiada ścieżki:
Pierwsza ścieżka jest w formacie mode 2 form 2, który oznacza użycie korekcji błędów L2. Ścieżka ta zawiera system plików ISO-9660 o gęstości 2048 bajtów/sektor. Ten system plików z kolei zawiera metainformacje VCD, a także nieruchome klatki, często używane w menu. Segmenty MPEG dla menu mogą także być składowane w tejże pierwszej ścieżce, ale MPEGi muszą być podzielone na kawałki po 150 sektorów. System plików ISO-9660 może zawierać inne pliki bądź programy, niekonieczne dla eksploatacji VCD.
Druga i pozostałe ścieżki są zwykle ścieżkami video MGEG typu raw o gęstości 2324 bajtów/sektor, zawierającymi jeden pakiet danych MGEG PS na sektor. Ścieżki te są w formacje mode 2 form 1, więc przechowują one więcej danych na sektor, w zamian za słabszą korekcję błędów. Możliwe są też ścieżki CD-DA na VCD poza pierwszą ścieżką. Niektóre systemy operacyjne używają pewnych trików aby ścieżki nie zawięrające systemu plików ISO-9660 były widoczne w systemie plików. W pozostałych systemach, jak na przykład w systemie GNU/Linux, nie ma takiej możliwości (jeszcze). W takim przypadku dane MPEG nie mogą być montowane. Jako że większość filmów znajduje się na tego typu ścieżce, powinieneś spróbować na początek opcji vcd://2.
Istnieją również płyty VCD bez pierwszej ścieżki (pojedyncza ścieżka i brak systemu plików w ogóle). Je również da się odtwarzać, ale nie da się ich montować.
Definicja standardu Video CD, nazywana "Białą Księgą" Phillipsa, generalnie nie jest dostępna online, musi być zakupiona u Phillipsa. Bardziej szczegółowe informacje na temat Video CD można znaleźć na stronie dokumentacji vcdimagera.
O plikach .DAT. Plik o rozmiarze ok. 600 MB widoczny na pierwszej ścieżce zamontowanego VCD nie jest prawdziwym plikiem ! Jest on tzw. bramką ISO, utworzoną by Windows mógł obsługiwać takie ścieżki (Windows w ogóle nie zezwala aplikacjom na dostęp do urządzeń w trybie raw). Pod Linuksem nie możesz kopiować ani odtwarzać tych plików (zawierają "śmieci"). Pod Windows jest to możliwe, gdyż jego sterownik iso9660 symuluje odczyt ścieżek w trybie raw za pomocą tego pliku. By móc odtwarzać pliki .DAT, musisz mieć sterownik do jądra, który dostarczany jest z linuksową wersją PowerDVD. Posiada on zmodyfikowany sterownik systemu plików iso9660 (vcdfs/isofs-2.4.X.o), który jest w stanie symulować odczyt ścieżek w trybie raw za pomocą pliku .DAT. Jeśli podmontujesz płytę używając ich sterownika, możesz kopiować, a nawet odtwarzać pliki .DAT za pomocą MPlayera. Ale nie będzie to działało za pomocą standardowego sterownika iso9660 dostarczonego z jądrem Linuksa! Zamiast tego użyj opcji vcd://. Alternatywą dla kopiowania VCD jest nowy sterownik: cdfs (nie jest częścią oficjalnego jądra), który wyświetla sesje CD jako pliki obrazów, oraz cdrdao, program do zgrywania płyt CD bit po bicie.
Główną platformą rozwojową jest Linux x86, chociaż MPlayer pracuje również na wielu innych portach tego systemu. Pakiety binarne są dostępne z kilku źródeł, jednakże żaden z nich nie jest przez nas obsługiwany. Zgłaszaj problemy do ich opiekunów, a nie do nas.
Aby zbudować pakiet dla Debiana, wywołaj poniższe polecenie w katalogu ze źródłami MPlayera:
fakeroot debian/rules binary
Jeśli chcesz przekazać własne opcje do skryptu configure, możesz ustawić zmienną
środowiskową DEB_BUILD_OPTIONS
. Na przykład, jeśli chcesz
obsługi menu i GUI, wyglądało by to tak:
DEB_BUILD_OPTIONS="--enable-gui --enable-menu" fakeroot debian/rules binary
Możesz przekazać również niektóre zmienne do Makefile. Na przykład, jeśli chcesz kompilować przy pomocy gcc 3.4, nawet jeśli nie jest to domyślny kompilator:
CC=gcc-3.4 DEB_BUILD_OPTIONS="--enable-gui" fakeroot debian/rules binary
Aby wyczyściś katalog ze źródłami wykonaj poniższa komendę:
fakeroot debian/rules clean
Jako superużytkownik możesz zainstalować pakiet .deb tak, jak zwykle:
dpkg -i ../mplayer_wersja
.deb
Christian Marillat buduje dla Debiana nieoficjalne paczki MPlayera, MEncodera i naszych czcionek bitmapowych już przez jakiś czas, możesz je pobrać (apt-get) z jego strony domowej.
Dominik Mierzejewski tworzy i opiekuje się oficjalnymi pakietami RPM MPlayera dla Red Hata i Fedora Core. Są one dostępne w jego repozytorium.
RPMy dla Mandrake/Mandriva są dostępne na P.L.F.. SuSE zawierał okrojoną wersję MPlayera w dystrybucji. Usunęli ją w swoich najnowszych wydaniach. W pełni funkcjonalne pakiety możesz pobrać z links2linux.de.
MPlayer działa również na PDA z procesorami ARM
działających pod kontrolą Linuksa, np. Sharp Zaurus, Compaq iPAQ.
Najprostszym sposobem, żeby uzyskać MPlayera,
jest pobranie go z odpowiedniego źródła pakietów (stable, testing, unstable)
z witryny OpenZaurus. Jeżeli chcesz
go skompilować samodzielnie, powinieneś przyjrzeć się katalogom
mplayera
i biblioteki
libavcodec
w głównym katalogu źródłowym OpenZaurusa. Zawierają one najświeższe łatki
i pliki Makefile, służące do samodzielnej kompilacji
MPlayera z libavcodec
.
Jeżeli potrzebujesz interfejsu GUI, możesz użyć xmms-embedded.
MPlayer działa na FreeBSD, OpenBSD, NetBSD, BSD/OS i Darwinie. Dostępne są wersje portów/pkgsrc/fink/itp., które prawdopodobnie są łatwiejsze w instalacji, niż kompilacja ze źródeł.
Do zbudowania MPlayera będziesz potrzebował GNU make (gmake - rdzenne make BSD nie zadziała) i najnowszej wersji binutils.
Jeżeli MPlayer nie może znaleźć /dev/cdrom lub /dev/dvd, stwórz odpowiednie dowiązanie symboliczne:
ln -s /dev/twoje_urządzenie_cdrom
/dev/cdrom
Aby używać bibliotek Win32 z MPlayerem, będziesz
potrzebował przekompilować jądro z opcją "USER_LDT
"
(chyba, że używasz FreeBSD-CURRENT, tam jest domyślnie włączona).
Jeżeli Twój procesor ma rozszerzenie SSE, przekompiluj jądro z opcją
"CPU_ENABLE_SSE
" (wymagany FreeBSD-STABLE lub łaty na jądro).
Ze względu na ograniczenia w różnych wersjach gas (GNU assemblera - przyp. tłumacza)
(dotyczące relokacji i MMX), będziesz musiał przeprowadzić kompilację w dwóch krokach:
Po pierwsze, upewnij się, że wersja nierdzenna występuje w zmiennej $PATH
i wykonaj gmake -k, a następnie upewnij się, że używana jest wersja rdzenna
i wykonaj gmake.
Powyższa metoda nie jest już potrzebna w OpenBSD 3.4.
Zobacz rozdział Mac OS.
MPlayer powinien działać na Solarisie 2.6 lub nowszym. Możesz skorzystać ze sterownika dźwięku SUN'a podająć opcję -ao sun.
Na UltraSPARCach,
MPlayer korzysta z rozszerzenia
VIS (odpowiednik MMX), obecnie tylko w
libmpeg2
,
libavo
i
libavcodec
,
ale nie w mp3lib
. Możesz oglądać plik VOB na
procesorze z taktowaniem 400MHz. Będziesz potrzebował do tego biblioteki
mLib
.
Aby zbudować pakiet, będziesz potrzebował GNU make (gmake, /opt/sfw/gmake), rdzenne make Solarisa nie zadziała. Typowy błąd jaki otrzymujesz, budując tym drugim zamiast GNU make, to:
% /usr/ccs/bin/make make: Fatal error in reader: Makefile, line 25: Unexpected end of line seen
W Solarisie przeznaczonym dla SPARC, potrzebujesz kompilatora GNU C/C++; nie ma znaczenia, czy jest on skonfigurowany z, czy bez GNU assemblera.
Na Solarisie x86, potrzebujesz GNU assemblera i kompilatora GNU C/C++, skonfigurowanego do używania GNU assemblera! Kod MPlayera, na platformie x86, w znaczący sposób korzysta z instrukcji MMX, SSE i 3DNOW!, które nie mogą być skompilowane przy pomocy assemblera Sun /usr/ccs/bin/as.
Skrypt configure stara się określić, jaki assembler
wywoływany jest przez komendę "gcc" (jeżeli próba zakończy się fiaskiem,
użyj opcji --as=/gdziekolwiek/zainstalowałeś/gnu-as
,
żeby określić gdzie skrypt configure może znaleźć GNU "as" w Twoim
systemie).
Błąd jaki wyświetli configure na Solarisie x86, używającym GCC bez GNU assemblera:
% configure ... Checking assembler (/usr/ccs/bin/as) ... , failed Please upgrade(downgrade) binutils to 2.10.1...
(Rozwiązanie: Zainstaluj i używaj gcc skonfigurowanego z opcją --with-as=gas)
Typowy błąd, jaki otrzymasz przy próbie budowy kompilatorem GNU C, który nie używa GNU as:
% gmake ... gcc -c -Iloader -Ilibvo -O4 -march=i686 -mcpu=i686 -pipe -ffast-math -fomit-frame-pointer -I/usr/local/include -o mplayer.o mplayer.c Assembler: mplayer.c "(stdin)", line 3567 : Illegal mnemonic "(stdin)", line 3567 : Syntax error ... more "Illegal mnemonic" and "Syntax error" errors ...
Ze względu na błędy występujące w Solarisie 8, możesz nie być w stanie odtwarzać płyt DVD o pojemności większej niż 4 GB:
Sterownik sd(7D) dla Solarisa 8 x86 ma błąd ujawniający się przy próbie dostępu do bloku dyskowego >4GB urządzenia korzystającego z logicznego rozmiaru bloku !=DEV_BSIZE (np. nośnik CD-ROM i DVD). Ze względu na przepełnienie 32bitowych liczb całkowitych, odczytywany jest adres dysku modulo 4GB (http://groups.yahoo.com/group/solarisonintel/message/22516). Ten problem nie występuje na Solarisie 8 przeznaczonym dla procesorów SPARC.
Podobny błąd występuje w kodzie systemu plików hsfs(7FS) (znanym jako ISO9660), hsfs może nie obsługiwać partycji/dysków większych niż 4GB, wszystkie dane są odczytywane z bloku modulo 4GB (http://groups.yahoo.com/group/solarisonintel/message/22592). Problem może być rozwiązany przy pomocy łatki 109764-04 (sparc) / 109765-04 (x86).
Możesz albo spróbować zainstalować program GNU install i (jeżeli nie umieściłeś go w globalnej ścieżce) wskazać go przez:
./configure --with-install=
/ścieżka/i/nazwa/programu/instalacyjnego
Albo użyć domyślnego programu instalacyjnego dostarczonego z IRIX 6.5, w tym wypadku należy ręcznie zmodyfikować plik Makefile w kilku miejscach. Zmień poniższe dwie linijki:
$(INSTALL) -c -m 644 DOCS/mplayer.1 $(MANDIR)/man1/mplayer.1 $(INSTALL) -c -m 644 etc/codecs.conf $(CONFDIR)/codecs.conf
na:
$(INSTALL) -m 644 mplayer.1 $(MANDIR)/man1/ $(INSTALL) -m 644 codecs.conf $(CONFDIR)/
A potem wykonaj (w katalogu źródłowym MPlayera):
cp DOCS/mplayer.1 . ; cp etc/codecs.conf .
i dalej skompiluj i zainstaluj.
Joe Page umieścił na swojej stronie domowej dokument HOWTO stworzony przez Martina Gansser'a dotyczący MPlayera na HP-UX. Korzystając z zawartych tam intrukcji program powinien się skompilować bez najmniejszych problemów. Poniższe informacje są zaczerpnięte z tego opracowania.
Do budowy będziesz potrzebował GCC 3.4.0, GNU make 3.80, i SDL 1.2.7 lub ich nowszych wersji. Kompilator HP cc nie wyprodukuje działającego programu, a wcześniejsze wersje GCC są pełne błędów. Aby moć skorzystać z OpenGL, musisz zainstalować biblioteki Mesa, wtedy sterowniki wyjścia video gl i gl2 powinny działać. Ich wydajność może być tragiczna, jednak zależne jest to od mocy obliczeniowej procesora. Dobrym zamiennikiem, raczej kiepskiego, systemu dźwiękowego HP-UX jest GNU esound.
Stwórz urządzenie DVD, przeskanuj magistralę SCSI komendą:
# ioscan -fn Class I H/W Path Driver S/W State H/W Type Description ... ext_bus 1 8/16/5 c720 CLAIMED INTERFACE Built-in SCSI target 3 8/16/5.2 tgt CLAIMED DEVICE disk 4 8/16/5.2.0 sdisk CLAIMED DEVICE PIONEER DVD-ROM DVD-305 /dev/dsk/c1t2d0 /dev/rdsk/c1t2d0 target 4 8/16/5.7 tgt CLAIMED DEVICE ctl 1 8/16/5.7.0 sctl CLAIMED DEVICE Initiator /dev/rscsi/c1t7d0 /dev/rscsi/c1t7l0 /dev/scsi/c1t7l0 ...
Z rezultatów działania komendy możemy odczytać, że na adresie 2 SCSI znajduje się Pioneer DVD-ROM. Instancja karty dla ścieżki sprzętowej 8/16 to 1.
Stwórz dowiązanie surowego urządzenia do urządzenia DVD.
# ln -s /dev/rdsk/c<instancja magistrali SCSI>
t<ID docelowego SCSI>
d<LUN>
/dev/<urządzenie>
Przykład:
# ln -s /dev/rdsk/c1t2d0 /dev/dvd
Poniżej znajdują się rozwiązania kilku najczęstszych problemów:
Wysypanie się programu przy uruchamianiu z komunikatem błędu:
/usr/lib/dld.sl: Unresolved symbol: finite (code) from /usr/local/lib/gcc-lib/hppa2.0n-hp-hpux11.00/3.2/../../../libGL.sl
Oznacza to, że funkcja .finite().
jest niedostępna
w standardowej bibliotece math HP-UX.
Zamiast niej dostępna jest .isfinite().
.
Rozwiązanie: Skorzystaj z najnowszego pliku składowego Mesa.
Wysypanie się programu przy odtwarzaniu z komunikatem:
/usr/lib/dld.sl: Unresolved symbol: sem_init (code) from /usr/local/lib/libSDL-1.2.sl.0
Rozwiązanie: Skorzystaj z opcji extralibdir skryptu configure --with-extralibdir="/usr/lib -lrt"
MPlayer powoduje błąd naruszenia ochrony pamięci (segfault) z komunikatem:
Pid 10166 received a SIGSEGV for stack growth failure. Possible causes: insufficient memory or swap space, or stack size exceeded maxssiz. Segmentation fault
Rozwiazanie:
Jądro HP-UX ma domyślnie zdefiniowany rozmiar stosu przeznaczonego na każdy
proces i jest to 8MB(?).(11.0 i nowsze łatki 10.20 pozwalają Ci zwiększyć
parametr maxssiz
do 350MB dla 32-bitowych programów).
Musisz rozszerzyć maxssiz
i przekompilować jądro
(i uruchomić ponownie komputer). Możesz wykorzystać do tego celu SAM. (Kiedy
w nim będziesz, sprawdź wartość maxdsiz
. Określa ona
maksymalny rozmiar danych, jaką program może użyć. To czy domyślne 64MB wystarczy
czy nie, zależy wyłącznie od wymagań Twoich aplikacji.)
Działa. Będziesz musiał ściągnąć bibliotekę SDL dla QNX i zainstalować ją. Wtedy uruchom MPlayera a opcją -vo sdl:photon i -ao sdl:nto, powinno działać szybko.
Wyjście -vo x11 będzie nawet wolniejsze niż na Linuksie, ponieważ QNX ma tylko emulację Xów, która jest bardzo wolna. Używaj SDL.
Tak, MPlayer działa na Windowsie pod Cygwinem i MinGW. Nie ma jeszcze oficjalnego interfejsu GUI, ale wersja dla wiersza poleceń jest już w pełni funkcjonalna. Powinieneś sprawdzić listę MPlayer-cygwin, aby uzyskać pomoc albo otrzymać najnowsze informacje. Oficjalne paczki z binariami dla Windowsa znajdziesz na stronie pobierania. Pakiety zawierające instalatory i proste nakładki GUI dostępne są z zewnętrznych źródeł, informacje o nich zebraliśmy w sekcji poświęconej Windowsowi na stronie projektów.
Jeżeli chcesz uniknąć korzystania z wiersza poleceń, prostym sposobem na jego ominięcie jest umieszczenie skrótu na pulpicie, który będzie zawierał podobny wpis w części odpowiedzialnej za wykonanie komendy:
c:\ścieżka\do\
mplayer.exe %1
Spowoduje to, że MPlayer będzie odtwarzał film, który zostanie przeciągnięty na jego skrót. Dodaj opcję -fs, aby korzystać z trybu pełnoekranowego.
Najlepsze wyniki są osiągane ze sterownikami wyjściowymi video DirectX (-vo directx) i rdzennym wyjściem dźwiękowym wave Windows (-ao win32). Możesz skorzystać również z OpenGL lub SDL, jednak wydajność OpenGL w znacznym stopniu zależy od systemu, a SDL może powodować powstanie zakłóceń w dźwięku i obrazie albo wywołać błąd, i zakończyć działanie programu. Jeżeli występują zakłócenia obrazu, spróbuj wyłączyć sprzętową akcelerację przez opcję -vo directx:noaccel. Ściągnij pliki nagłówkowe DirectX 7, żeby skompilować sterownik do wyjścia video DirectX. Co więcej, musisz mieć zainstalowany DirectX 7 lub nowszy, aby to wyjście zadziałało.
VIDIX działa teraz również pod Windowsem jako -vo winvidix, chociaż jego obsługa jest eksperymentalna i wymaga trochę ręcznego przygotowania. Pobierz dhahelper.sys lub dhahelper.sys (z obsługą MTRR) i skopiuj go do libdha/dhahelperwin w drzewie źródłowym MPlayera. Uruchom konsolę, następnie przejdź do tego katalogu i wykonaj
gcc -o dhasetup.exe dhasetup.c
i
dhasetup.exe install
jako Administrator. Będziesz musiał ponownie uruchomić komputer. Teraz, skopiuj wszystkie pliki
z rozszerzeniem .so
z katalogu
vidix/drivers do
mplayer/vidix
względem położnia pliku mplayer.exe.
Żeby osiągnąć najlepsze wyniki MPlayer powinien korzystać z przestrzeni kolorów, którą Twoja karta wspomaga sprzętowo. Niestety wiele sterowników graficznych Windowsa źle informuje o obsługiwanych przez kartę przestrzeniach. Aby sprawdzić które są źle obsługiwane, wykonaj poniższą komendę:
mplayer -benchmark -nosound -frames 100 -vf format=przestrzeń
film
gdzie przestrzeń
może być jakąkolwiek
wartością spośród tych uzyskanych przez opcję -vf format=fmt=help.
Jeśli któraś z nich działa szczególnie źle, opcja
-vf noformat=przestrzeń
zapobiegnie jej używaniu. Możesz to na stałe dodać do Twojego pliku konfiguracyjnego.
Dostępne są specjalne zbiory z kodekami przeznaczone dla systemu Windows, znajdziesz je na
stronie kodeków.
Pozwolą Ci one na odtwarzanie formatów, które nie są jeszcze bezpośrednio obsługiwane w
MPlayerze. Umieść je, gdzieś w swojej ścieżce (w katalogu podanym w
zmiennej PATH - przyp. tłumacza) lub przekaż opcję
--with-codecsdir=c:/ścieżka/do/Twoich/kodeków
(lub, tylko w środowkisku Cygwin,
--with-codecsdir=/ścieżka/do/Twoich/kodeków
)
do skryptu configure.
Mieliśmy doniesienia, że biblioteki Real, muszą być zapisywalne dla użytkownika, który
uruchamia MPlayera, ale tylko na niektórych systemach (NT4).
Spróbuj nadać im atrybut zapisywalności.
Możesz odtwarzać VCD, odtwarzając pliki .DAT lub .MPG, które Windows pokazuje na VCD. To działa mniej więcej tak (dopasuj literę dysku do Twojego CD-ROMu):
mplayer d:/mpegav/avseq01.dat
DVD również działa, podaj literę Twojego DVD-ROMu przez opcję -dvd-device:
mplayer dvd://<tytuł>
-dvd-deviced
:
Konsola Cygwin/MinGW jest raczej wolna. Zgłoszono, że przekierowywanie wyjścia albo używanie opcji -quiet poprawia wydajność na niektórych systemach. Bezpośrednie renderowanie (-dr) również może pomóc. Możesz zapobiec migotaniu OSD, włączając podwójne buforowanie opcją -double. Jeżeli odtwarzanie jest nierówne, spróbuj użyć -autosync 100. Jeżeli którakolwiek z tych opcji Ci pomogła, może będziesz chciał umieścić ją w swoim pliku konfiguracyjnym.
Aby skompilować MPlayera wymagana jest wersja Cygwina 1.5.0 lub późniejsza.
Pliki nagłówkowe DirectX muszą być rozpakowane do /usr/include/ lub /usr/local/include/.
Instrukcje i pliki potrzebne do kompilacji SDLa dla Cygwin są dostępne na stronie libsdl.
Zainstalowanie MinGW, który umożliwiłby kompilację MPlayera było zawiłe, ale teraz składa się tylko z trzech prostych kroków i niedługo powinno działać "prosto z pudełka". Zainstaluj MinGW 3.0.0 lub nowszy. Zainstaluj MSYS 1.0.9 lub nowszy i wskaż systemowi poinstalacyjnemu MSYSa, że MinGW jest zainstalowane.
Rozpakuj pliki nagłówkowe DirectX do /mingw/include/.
Do obsługi skompresowanych nagłówków MOV wymagana jest biblioteka zlib, która nie jest domyślnie dostępna w MinGW. Skonfiguruj ją z opcją --prefix=/mingw i zainstaluj przed kompilacją MPlayera.
Pełną instrukcję jak zbudować MPlayera i wszystkie potrzebne biblioteki znajdziesz w MPlayer MinGW HOWTO.
"Surowe" źródła MPlayera obsługują tylko Mac OS X w wersjach 10.2 i wyższych. Możesz spróbować umożliwić obsługę starszych wersji Mac OS oraz przysłać nam łaty! MPlayer powinien skompilować się bez problemu na systemie Mac OS X 10.2 i wyższym. Zalecanym kompilatorem jest GCC 3.x w wersji Apple, jeżeli masz Mac OS X 10.3.9 lub późniejszy i QuickTime 7, możesz skorzystać z wyjścia video macosx.
Możesz pobrać natywne GUI dla MPlayera razem z prekompilowanymi binariami MPlayera dla Mac OS X ze strony projektu MPlayerOSX, ale uwaga: projekt nie jest już aktywny.
Na szczęście, MPlayerOSX został przejęty przez członka załogi MPlayera. Wersje testowe są dostępne na stronie z materiałami do pobrania, a oficjalne wydanie powinno pojawić się już niedługo.
Aby zbudować MPlayerOSX bezpośrednio
ze źródeł, potrzebujesz modułu mplayerosx
,
main
i kopii modułu CVS
main
o nazwie
main_noaltivec
.
mplayerosx
to graficzna nakładka,
main
to MPlayer, a
main_noaltivec
to MPlayer zbudowany bez obsługi
AltiVec.
Aby pobrać moduł z repozytorium CVS wykonaj polecenia:
cvs -d:pserver:anonymous@mplayerhq.hu:/cvsroot/mplayer login cvs -z3 -d:pserver:anonymous@mplayerhq.hu:/cvsroot/mplayer co -P mplayerosx
W celu zbudowania MPlayerOSX będziesz musiał utowrzyć podobną strukturę katalogów:
katalog_źródłowy_MPlayera | |--->main (źródła MPlayera z CVS) | |--->main_noaltivec (źródła MPlayera z CVS skonfigurowane z opcją --disable-altivec) | |--->mplayerosx (źródła MPlayer OS X z CVS)
Najpierw musisz zbudować main i main_noaltivec.
Następnie ustaw globalną zmienną:
export MACOSX_DEPLOYMENT_TARGET=10.3
Potem skonfiguruj:
Jeżeli konfigurujesz dla maszyny G4 lub lepszej z obsługą AltiVec, postępuj jak poniżej:
./configure --with-termcaplib=ncurses.5 --disable-gl --disable-x11
Jeżeli konfigurujesz dla maszyny z procesorem G3 bez AltiVec, postępuj jak ponieżej:
./configure --with-termcaplib=ncurses.5 --disable-gl --disable-x11 --disable-altivec
Być może będziesz musiał wyedytować plik config.mak
i zmienić wartości -mcpu
-mtune
z -74XX
na
-G3
.
Następnie wykonaj
make
przejdź do katalogu mplayerosx i wpisz
make dist
Zostanie utworzony skompresowany obraz .dmg
zawierający gotowy do uruchomienia program.
Możes również skorzystać z projektu Xcode 2.1; stary projekt dla Xcode 1.x już nie działa.
Ludzie z www.amigasoft.net tworzą aktualne paczki z MPlayerem i MEncoderem.
Nicholas Det at Genesi stworzył potężny port MPlayera dla MorphOS. Niestety oparty jest on o serię 0.90.
Pobierz go z MorphZone:
libavcodec
Pełna lista dostępnych opcji MEncodera oraz przykłady znajdują się na stronie man. W pliku encoding-tips znajduje się dużo przykładów i przewodników skompletowanych z wielu wątków listy dyskusyjnej mplayer-users. W archiwum znajdziesz mnóstwo dyskusji o aspektach i problemach związanych z kodowaniem przy pomocy MEncodera.
Nazwa związana jest z faktem, iż przy użyciu tej metody plik kodowany jest dwa razy. Pierwsze kodowanie (dubbed pass) tworzy pliki tymczasowe (*.log) o rozmiarze kilku megabajtów, nie kasuj ich od razu (możesz natomiast skasować plik AVI). W drugim przebiegu przy pomocy danych o bitrate'cie z plików tymczasowych tworzony jest plik wyjściowy drugiego przebiegu. Plik końcowy będzie miał o wiele lepszą jakość w porównaniu ze standardowym 1-przebiegowym kodowaniem. Jeżeli pierwszy raz o tym słyszysz, powinieneś zajrzeć do któregoś z wielu przewodników dostępnych w sieci.
Przykład 7.1. kopiowanie ścieżki dźwiękowej
Dwu-przebiegowe kodowanie DVD do MPEG-4 ("DivX") AVI z kopiowaniem ścieżki dźwiękowej.
mencoder dvd://2 -ovc lavc -lavcopts vcodec=mpeg4:vpass=1 -oac copy -ofilm.avi
mencoder dvd://2 -ovc lavc -lavcopts vcodec=mpeg4:vpass=2 -oac copy -ofilm.avi
Przykład 7.2. kodowanie ścieżki dzwiękowej
Dwu-przebiegowe kodowanie DVD do MPEG-4 ("DivX") AVI z kodowaniem ścieżki dźwiękowej do MP3.
mencoder dvd://2 -ovc lavc -lavcopts vcodec=mpeg4:vpass=1 -oac mp3lame -lameopts vbr=3 -ofilm.avi
mencoder dvd://2 -ovc lavc -lavcopts vcodec=mpeg4:vpass=2 -oac mp3lame -lameopts vbr=3 -ofilm.avi
MEncoder może tworzyć pliki formatu MPEG (MPEG-PS).
Jest to prawdopodobnie użyteczne tylko z kodekiem mpeg1video
pochodzącym z libavcodec
, ponieważ odtwarzacze - za wyjątkiem
MPlayera - oczekują obrazu zakodowanego w MPEG-1 i
strumienia dźwiękowego w MPEG-1 warstwa (layer) 2 (MP2) w pliku MPEG.
Możliwość ta nie jest zbytnio przydatna w tej chwili, poza tym zawiera prawdopodobnie wiele błędów, ale najważniejsze jest to, że MEncoder w tej chwili nie może kodować 2 warstwy MPEG-1 (MP2) audio której oczekują wszystkie odtwarzacze w plikach MPEG.
Aby zmienić wyjściowy format plików MEncodera, użyj opcji -of mpeg.
Przykład:
mencoder -of mpeg -ovc lavc -lavcopts vcodec=mpeg1video -oac copyinne opcje
media.avi
-owyjscie.mpg
Często zachodzi potrzeba zmiany wielkości obrazu. Powodów tego może być wiele: zmniejszenie rozmiaru pliku, przepustowość sieci, itd. Większość ludzi stosuje ponowne skalowanie przy konwertowaniu płyt DVD, SVCD do DivX AVI. Jeżeli chcesz przeskalowywać, przeczytaj sekcję o zachowywaniu proporcji obrazu.
Proces skalowania obsługiwany jest przez filtr video scale
-vf scale=szerokość
:wysokość
.
Jego jakość może być ustawiona parametrem -sws.
Jeśli nie jest on podany MEncoder użyje wartości 2: bicubic.
Przykład:
mencoderwejscie.mpg
-ovc lavc -lavcopts vcodec=mpeg4 -vf scale=640:480 -owyjscie.avi
MEncoder obsługuje strumienie wejściowe na dwa sposoby: koduje lub kopiuje je. Ta sekcja jest o kopiowaniu.
Strumień video (opcja -ovc copy): można ładne rzeczy wyczyniać:) Jak wstawianie (nie konwertowanie) FLI, VIDO lub MPEG-1 video w plik AVI! Oczywiście tylko MPlayer potrafi odtwarzać takie pliki :) I prawdopodobnie nie ma dla tego żadnego sensownego zastosowania. Poważniej: kopiowanie strumieni video może być przydatne wtedy, gdy np. tylko strumień audio ma być zakodowany (np. PCM do MP3).
Strumień audio (opcja -oac copy):
prosto i przystępnie. Możliwe jest wmiksowanie zewnętrznego źródła (MP3, WAV) do strumienia wyjściowego.
Użyj opcji -audiofile nazwa_pliku
do tego celu.
Najprostsza sprawa. Po prostu kopiujemy strumień audio i video, a MEncoder generuje indeks. Oczywiście nie naprawi to możliwych błędów w strumieniu video i/lub audio, ale za to, naprawi pliki z zepsutym przeplotem, tak więc opcja -ni nie będzie tu już potrzebna.
Komenda:
mencoder -idxwejscie.avi
-ovc copy -oac copy -owyjscie.avi
Efektem ubocznym funkcji naprawiania zepsutych plików AVI jest możliwości łączenia 2 (lub więcej) plików AVI:
Komenda:
cat 1.avi 2.avi | mencoder -noidx -ovc copy -oac copy -o wyjscie.avi
-
Komenda ta oczekuje tego, żeby 1.avi i 2.avi używały tego samego kodeka, rozdzielczości, szybkości strumienia (stream rate), i przynajmniej 1.avi nie może być zepsute. Możliwe, że będziesz musiał naprawić pliki wejściowe, jak było opisane powyżej.
libavcodec
umożliwia proste kodowanie do wielu
interesujących formatów video i audio.
Możesz kodować do następujących kodeków (mniej lub bardziej aktualne)
Nazwa kodeka | Opis |
---|---|
mjpeg | Ruchomy JPEG |
ljpeg | Bezstratny JPEG |
h263 | H.263 |
h263p | H263+ |
mpeg4 | Standard ISO MPEG-4 (DivX 5, XVID kompatybilne) |
msmpeg4 | pierwotny wariant MPEG-4 od MS, v3 (DivX3) |
msmpeg4v2 | pierwotny wariant MPEG-4 od MS, v2 (używany w starych plikach asf) |
wmv1 | Windows Media Video, wersja 1 (WMV7) |
wmv2 | Windows Media Video, wersja 2 (WMV8) |
rv10 | Stary kodek RealVideo |
mpeg1video | MPEG-1 video |
mpeg2video | MPEG-2 video |
huffyuv | bezstratna kompresja |
asv1 | ASUS Video v1 |
asv2 | ASUS Video v2 |
ffv1 | bezstratny kodek video FFmpeg |
Pierwsza kolumna zawiera nazwę kodeka, która powinna być podana za opcją
vcodec
, np: -lavcopts vcodec=msmpeg4
Przykład z kompresją MJPEG:
mencoder dvd://2 -o title2.avi
-ovc lavc -lavcopts vcodec=mjpeg -oac copy
MEncoder jest w stanie stworzyć film z jednego lub wielu plików JPEG, PNG lub TGA. Poprzez proste kopiowanie ramek może stworzyć pliki MJPEG (Motion (ruchomy - przypis tłumacza) JPEG), MPNG (Motion PNG) lub MTGA (Motion TGA).
Jak to działa:
MEncoder dekoduje wejściowy obrazek/obrazki z pomocą biblioteki
libjpeg
(w przypadku dekodowania PNG, skorzysta z
libpng
).
Potem MEncoder kompresuje zdekodowane pliki podanym kompresorem (DivX4, XviD, FFmpeg msmpeg4, itd.).
Przykłady. Opis i sposób działania funkcji -mf znajdują się na stronie man.
Tworzenie pliku MPEG-4 ze wszystkich plików JPEG w aktualnym katalogu:
mencoder mf://*.jpg -mf w=800:h=600:fps=25:type=jpg -ovc lavc -lavcopts vcodec=mpeg4 -oac copy -o wyjscie.avi
Tworzenie pliku MPEG-4 z wybranych plików JPEG w aktualnym katalogu:
mencoder mf://*.jpg -mf type=jpg:w=800:h=600:fps=25 -ovc copy -oac copy -o wyjscie.avi
Tworzenie pliku Motion JPEG (MJPEG) ze wszystkich plików JPEG w aktualnym katalogu:
mencoder -mf on:w=800:h=600:fps=25 -ovc copy -o wyjscie.avi
\*.jpg
Tworzenie nieskompresowanego pliku ze wszystkich plików PNG w aktualnym katalogu:
mencoder -mf on:w=800:h=600:fps=25:type=png -ovc raw -o wyjscie.avi
\*.png
Szerokości musi być liczbą podzielną przez 4, takie są ograniczenia formatu RAW RGB AVI.
Tworzenie pliku Motion PNG (MPNG) ze wszystkich plików PNG w aktualnym katalogu:
mencoder mf://*.png -mf w=800:h=600:fps=25:type=png -ovc copy -oac copy -o wyjscie.avi
Tworzenie pliku Motion TGA (MTGA) ze wszystkich plików TGA w aktualnym katalogu:
mencoder mf://*.tga -mf w=800:h=600:fps=25:type=tga -ovc copy -oac copy -o wyjscie.avi
MEncoder jest w stanie wyciągnąć napisy z DVD do pliku w formacie VOBsub. Tworzy je para plików z rozszerzeniem .idx i .sub, które są zazwyczaj spakowane do pojedyńczego archiwum .rar. MPlayer może je odtwarzać z opcjami -vobsub i -vobsubid.
Podajesz nazwę bazową (tzn. bez rozszerzenia .idx lub .sub) pliku wyjściowego z -vobsubout oraz indeks dla tego pliku przez -vobsuboutindex.
Jeżeli źródłem nie jest DVD powinieneś użyć opcji -ifo, aby wskazać plik .ifo potrzebny do stworzenia pliku wynikowego .idx.
Jeżeli źródłem nie jest DVD i nie masz pliku .ifo, będziesz musiał użyć opcji -vobsubid, aby podać id języka, które będzie umieszczone w pliku .idx.
Każde uruchomienie dołączy do istniejących napisów, jeżeli pliki .idx i .sub istnieją. Więc powinieneś je usunąć przed uruchomieniem.
Przykład 7.3. Kopiowanie dwóch napisów z DVD podczas dwu-przebiegowego kodowania
rm subtitles.idx subtitles.sub mencoder dvd://1 -oac copy -ovc lavc -lavcopts vcodec=mpeg4:vpass=1 -vobsubout subtitles -vobsuboutindex 0 -sid 2 mencoder dvd://1 -oac copy -ovc lavc -lavcopts vcodec=mpeg4:vpass=2 -vobsubout subtitles -vobsuboutindex 1 -sid 5
Pliki DVD i SVCD (tzn. MPEG-1/2) zawierają wartość proporcji obrazu, która opisuje, jak odtwarzacz ma skalować strumień video, więc ludzie nie będą się męczyć (np.: 480x480 + 4:3 = 640x480). Jednak przy kodowaniu plików AVI (DivX) musisz być świadom, że nagłówek AVI nie przechowuje tej wartości. Przeskalowywanie jest obrzydliwe i czasochłonne, musi być jakiś lepszy sposób!
Jest
MPEG-4 posiada unikalną cechę: strumień video może posiadać swoją wartość proporcji obrazu. Tak, dokładnie jak pliki MPEG-1/2 (DVD, SVCD) i H.263. Niestety, nie ma żadnych odtwarzaczy video które by to wykorzystywały, oprócz MPlayera.
Możliwość ta może być jedynie używana z kodekiem mpeg4
z biblioteki libavcodec
.
Pamiętaj: chociaż MPlayer
poprawnie odtworzy stworzone pliki, inne odtwarzacze
użyją złych proporcji obrazu (aspect ratio).
Z pewnością powinieneś wyciąć czarne pasy nad i pod obrazem.
Zobacz jak używać filtrów cropdetect
i crop
na stronie man.
Sposób użycia:
mencoderprzykład-svcd.mpg
-ovc lavc -lavcopts vcodec=mpeg4:autoaspect -vf crop=714:548:0:14 -oac copy -owyjscie.avi
Ta cecha libavcodec
pozwala ustawić dowolne
inter (I-ramki/ramki kluczowe) i intra (P-ramki/predicted
frames) matryce. Funkcja ta jest obsługiwana przez wiele kodeków:
mpeg1video
i mpeg2video
zgłaszane są jako działające.
Typowy sposób użycia tej opcji to ustawienie matrycy na specyfikacje preferowane przez KVCD.
Matryca Kwantyzacji KVCD "Notch":
Intra:
8 9 12 22 26 27 29 34 9 10 14 26 27 29 34 37 12 14 18 27 29 34 37 38 22 26 27 31 36 37 38 40 26 27 29 36 39 38 40 48 27 29 34 37 38 40 48 58 29 34 37 38 40 48 58 69 34 37 38 40 48 58 69 79
Inter:
16 18 20 22 24 26 28 30 18 20 22 24 26 28 30 32 20 22 24 26 28 30 32 34 22 24 26 30 32 32 34 36 24 26 28 32 34 34 36 38 26 28 30 32 34 36 38 40 28 30 32 34 36 38 42 42 30 32 34 36 38 40 42 44
Sposób użycia:
$ mencoderwejscie.avi
-owyjscie.avi
-oac copy -ovc lavc -lavcopts inter_matrix=...:intra_matrix=...
$ mencoder wejscie.avi
-ovc lavc -lavcopts
vcodec=mpeg2video:intra_matrix=8,9,12,22,26,27,29,34,9,10,14,26,27,29,34,37,
12,14,18,27,29,34,37,38,22,26,27,31,36,37,38,40,26,27,29,36,39,38,40,48,27,
29,34,37,38,40,48,58,29,34,37,38,40,48,58,69,34,37,38,40,48,58,69,79
:inter_matrix=16,18,20,22,24,26,28,30,18,20,22,24,26,28,30,32,20,22,24,26,
28,30,32,34,22,24,26,30,32,32,34,36,24,26,28,32,34,34,36,38,26,28,30,32,34,
36,38,40,28,30,32,34,36,38,42,42,30,32,34,36,38,40,42,44 -oac copy -o svcd.mpg
Jednym z najczęsciej zadawanych pytań jest "Jak zripować DVD do najwyższej osiągalnej jakości? Nie interesuje mnie rozmiar pliku, chcę tylko najwyższą jakość".
To jest co najmniej źle sformułowane. W końcu jeżeli nie obchodzi Cię rozmiar pliku, to czemu nie skopiować po prostu całego strumienia video MPEG-2 z DVD? Pewnie, plik będzie miał 5GB, jak chcesz to nie pakuj się w to, ale jeżeli chcesz najwyższej jakości i nie martwi Cię rozmiar pliku, to jest na pewno najlepsze rozwiązanie.
Tak na prawdę, powodem dla którego chcesz przekodować DVD do pliku MPEG-4 jest właśnie to, że zależy Ci na rozmiarze pliku.
Trudno jest podać przepis krok-po-kroku jak stworzyć wysokiej jakości
ripa DVD. Trzeba uwzględnić kilka czynników, musisz je zrozumieć żeby
być zadowolonym z rezultatów jakie osiągniesz. Poniżej zbadamy kilka
z tych czynników i spojrzymy na przykłady. Zakładamy, że korzystasz z
libavcodec
do kodowania
video, teorii jednak można używać przy innych kodekach.
Głównym założeniem tego przewodnika jest to, iż nie masz konkretnego docelowego rozmiaru pliku i nie masz problemu w oddaniu kilku bitów w zamian za poprawę jakości. Wiele informacji tutaj zawartych jest przydatnych w każdej sytuacji, ale niektóre mogą działać na Twoją niekorzyść jeżeli masz obrany cel w postaci wielkości pliku wynikowego, na przykład zmieszczeniu video na CD.
Istnieją trzy podejścia do kodowania video: stały bitrate (CBR), stały kwantyzator i kodowanie dwu-przebiegowe (ABR, uśredniony bitrate).
W każdym z tych trybów, libavcodec
rozbija ramke na makroblok 16x16 pikseli i aplikuje kwantyzator do każdego makrobloku
Im niższy kwantyzator, tym lepsza jakość i wyższy bitrate.
Metoda jaką używa libavcodec
do zdeterminowania jaki kwantyzator użyć do danego makrobloku zależy od wielu
czynników i jest łatwo zmienialna. (Jest to bardzo ogólny opis prawdziwego procesu,
ale warto rozumieć podstawowy koncept.)
Kiedy ustawisz stały bitrate, libavcodec
zakoduje video, niszcząc najmniejszą ilość detali jaka jest potrzebna żeby pozostać
poniżej wyznaczonej wartości bitrate. Jeżeli naprawdę nie zależy Ci na rozmiarze pliku
mógłbyś użyć CBR i ustawić bitrate na nieskończoność. (W praktyce oznacza to liczbę
tak wysoką aby nie stawiała żadnego limitu, np. 10000Kbit.). Bez prawdziwych ograniczeń
libavcodec
użyje dla każdego makrobloku
możliwie najniższego kwantyzatora (zapisanego w zmiennej vqmin,
która domyślnie jest ustawiona na 2). Gdy tylko ustawisz niższy bitrate
libavcodec
będzie zmuszony do użycia
wyższego kwantyzatora, a więc i pogorszenia jakości video. Ogólnie, jeżeli zależy Ci na jakości
wogóle nie powinieneś używać CBR.
Ze stałym kwantyzatorem, libavcodec
używa kwantyzatora ustawionego przez opcję vqscale
na każdym makrobloku. Jeżeli chcesz najwyższej możliwej jakości, igonrując
bitrate, możesz użyć vqscale=2. Będzie to miało taki sam efekt
jak ustawienie vbitrate=nieskończoność i domyślnie
vqmin na 2 przy CBR.
Problemem przy stałym kwantyzowaniu jest to, iż używa on danego kwantyzatora czy makroblok potrzebuje go czy nie. To znaczy że można byłoby użyć wyższego kwantyzatora bez starty jakości obrazu. Po co tracić miejsce na niepotrzebnie niski kwantyzator? Twój procesor ma tyle cykli ile jest czasu, ale na twardym dysku jest ograniczona ilosć miejsca.
W dwu-przebiegowym kodowaniu, pierwszy przebieg zripuje film ze stałym bitratem (CBR), ale stworzy plik logujący właściwości każdej ramki. Te informacje są używane podczas drugiego przebiegu i na ich podstawie dobierany jest odpowiedni kwantyzator. Podczas szybkiej akcji lub scen z małą ilością detali, będzie użyty wysoki kwantyzator, a podczas wolnego ruchu lub scen z wieloma detalami niższy.
Jeżeli używasz vqscale=2, to tracisz miejsce. Jeżeli używasz vqscale=3, to nie dostaniesz najwyższej jakości. Przypuśćmy, że ripujesz DVD z opcją vqscale=3, a rezultatem jest 1800Kbit. Jeżeli zastosujesz dwu-przebiegowe kodowanie z vbitrate=1800, wyjściowe video będzie miało wyższą jakość dla tej samej wartości bitrate.
Ponieważ jesteś już przekonany, że dwu-przbiegowe kodowanie jest najlepszym rozwiązaniem, prawdziwym pytaniem jest jakiej użyć wartości bitrate? Nie ma jednoznacznej odpowiedzi. Idealna wartość jest najlepszym balansem między jakością a rozmiarem pliku. Zmienia się ona zależnie od źródłowego video.
Dobrym punktem startowym dla wysokiej jakości ripów jest 2000Kbit plus minus 200Kbit. Przy szybkiej akcji, wielu detalach lub poprostu gdy masz wysokie wymagania, możesz zdecydować się na 2400 lub 2600. Przy niektórych DVD, możesz nie zauważyć różnicy przy 1400KBit. Najlepiej jest troszkę poeksperymentować przy różnych wartościach bitrate.
Normalne DVD ma rozdzielczość 720x480 dla NTSC i 720x576 dla PAL, ale jest jeszcze flaga mówiąca czy jest to obraz pełno ekranowy (4:3), czy panoramiczny (16:9). Wiele (jeżeli nie wszystkie) panoramiczne DVD nie są dokładnie 16:9, tylko 1.85:1 lub 2.35:1 (kineskop). Oznacza to iż pojawią się czarne pasy którę będą musiały być wykadrowane.
W tym miejscu pojawia się MPlayer posiadający opcję ustalającą prostokąt kadrowania (-vf cropdetect). Ponieważ MPEG-4 używa makrobloków 16x16, będziesz chciał aby każdy wymiar obrazu był wielokrotnością 16, w innym wypadku pogorszy się jakość szczególnie przy niskich wartościach bitrate. Możesz osiągnąć to zaokrąglając prostokąt kadrowania do najbliższej wielokrotności 16. Przy kadrowaniu będziesz chciał zwiększyć przesunięcie w osi y o połowę różnicy między starą a nową wartością tak aby obraz brany był z środka ramki. Z powodu sposobu w jaki obraz jest próbkowany na DVD musi to być przysta liczba. (Tak naprawdę nigdy nie używaj nieparzystych wartości przy kadrowaniu ani skalowaniu.) Jeżeli nie chcesz wyrzucać kilku pikseli, może wolisz zeskalować obraz. Przyjrzyjmy sie skalowaniu w naszym następnym przykładzie.
Uważaj też na "miękkie" czarne piksele na brzegach. Wykadruj je też, bo inaczej będziesz tracił bity którę zostaną wykorzystane lepiej gdzie indziej.
Po wszytskim, dostaniesz najprawdopodobniej video którego piksele
nie są raczej ani 1.85:1 czy 2.35:1, tylko coś w pobliżu. Mógłbyś policzyć
nowe proporcje obrazu ręcznie, ale MEncoder
oferuje opcję biblioteki libavcodec
o nazwie autoaspect która zrobi to za Ciebie. W żadnym
wypadku nie skaluj pikseli w celu zrobienia z nich kwadratów, chyba że lubisz
tracić miejsce na twardym dysku. Skalowanie powinno odbywać się przy
odtwarzaniu, a odtwarzacz użyje proporcji zapisanych w nagłówku AVI, aby
zdeterminować prawidłową rozdzielczość.
Dźwięk jest o wiele prostszym problemem do rozwiązania.: zostaw go poprostu takim jakim jest. Nawet strumienie AC3 5.1 są najwyżej 448Kbit/s i są one warte każdego bitu. Kuszące może wydawać się zakodowanie dźwięku do wysokiej jakości Ogg Vorbis, ale to że nie posiadasz dzisiaj odbiornika A/V do AC3 nie oznacza że nie będziesz go miał jutro. Zabezpiecz swoje ripy DVD zostawiając im strumień AC3.
Prawie wszytskie filmy kręcone są z prędkością 24 fps. Ponieważ NTSC jest 29.97 fps, obraz 24 fps trzeba poddać działaniu kilku procesów aby mógł być on odtwarzany na szybkości NTSC. Proces ten nazywa się 3:2 pulldown, często wiązany z telecine (ponieważ pulldown jest często stosowany podczas procesu telecine), i naiwnie opisywany jako iż działa on przez zwalnianie filmu do 23.976 fps, i powtarzaniu co czwartej ramki.
Video w formacie PAL z DVD, o prędkość 25 fps nie jest poddawane żadnym specjalnym procesom. (Praktcznie, PAL może zostać poddany procesowi telcine, nazywanemu 2:2 pulldown, ale w praktyce to nie jest problemem.) Film 24 fps jest poprostu odtwarzany z prędkością 25 fps. W efekcie film leci trochę szybciej ale jeżeli nie jesteś kosmitą pewnie nie zauważysz różnicy. Większość DVD w PALu posiada poprawiony dźwięk, więc nawet przy odtwarzaniu z prędkością 25 fps będzie on brzmiał poprawnie, pomimo tego, iż ścieżka dźwiękowa (a wiec i cały film) jest odtwarzana 4% czasu krócej niż NTSC DVD.
Ponieważ video w PAL DVD nie zostało zmienione, nie musisz martwić się o tempo odtwarzania. Źródło jest 25 fps i Twoj rip będzie 25 fps. Jednakże, jeżeli ripujesz NTSC DVD, możliwe że będziesz musiał zastosować odwrócone telecine.
W filmach nakręconych w prędkości 24 fps, video na NTSC DVD jest albo ztelecinowane do 29.97 fps lub progresywne 24 fps i przeznaczone to telecine które ma zostać wykonane w locie przez odtwarzacz DVD. Z drugiej strony, seriale telewizyjne są zazwyczaj tylko przeplecione, nie ztelecionowane. Jednakże nie jest to regułą: niektóre seriale TV są przeplecione (jak Buffy Postrach Wampirów), a niektóre są miksturą progresywnego i przeplecionego video (jak Angel, lub 24 godziny).
Szczególnie polecamy do przeczytania sekcje o tym Jak sobie radzić z telecine i przeplotem w DVD w formacie NTSC.
Jeżeli, ripujesz tylko filmy, najprawdopodobniej musisz radzić sobie tylko z obrazem 24 fps progresywnym lub telecine. W takiej sytuacji możesz użyć fitru pullup (-vf pullup,softskip).
Ogólnie, chcesz filtrować jak najmniej aby pozostać najbliżej jak się da do źródłowego DVD. Kadrowanie jest zazwyczaj niezbędne (opisane powyżej), ale nie skaluj obrazu. Skalowanie w dół jest czasami preferowane zamiast wysokich kwantyzatorów, chcemy uniknąć obu tych rzeczy: pamiętaj co ustaliliśmy na początkum, że chcemy wymienać bity na jakość.
Również nie zmieniaj wartośći gamma, kontrastu, jasności, itd. To co wygląda dobrze na Twoim monitorze, może nie wyglądać dobrze na innych. Te ustawienia powinny być realizowane tylko przy odtwarzaniu.
Jedną rzeczą którą mógłbyś chcieć zrobić jest przepuszczenie obrazu przez lekki odszumiający filtr, tak jak np. -vf hqdn3d=2:1:2. Znów, jest to sprawa lepszego spożytkowania miejsca: po co tracić je na kodowanie szumów jeżeli możesz dodać je podczas odtwarzania? Zwiększenie parametrów hqdn3d zwiększy możliwości kompresji, ale jeżeli zwiększysz parametry za bardzo ryzykujesz utratę klarowności obrazu. Sugerowane powyżej wartości (2:1:2) są dość zachowawcze; spróbuj poeksperymentować z wyższmi wartościami i samemu porównać efekty.
Kupiłeś wieć nowiutką kopię Harrego Pottera i Komnaty Tajemnic (oczywiście wersję panoramiczną) i chcesz zripować to DVD aby dodać ją do swojego komputerowego kina domowego. Jest to DVD z regionu 1, a więc NTSC. Poniższy przykład będzie działał z fomratem PAL jeżeli pomiesz opcję -ofps 23.976 (ponieważ wejściowa szybkość jest taka sama jak wyjściowa), oczywiście paramtery kadrowania będą inne.
Po uruchomieniu mplayer dvd://1, podążamy opisem zawartym w sekcji Jak sobie radzić z telecine i przeplotem w DVD w formacie NTSC i odkrywamy, że jest to progresywne video 24 fps, co oznacza że nie musimy używać filtrów odwróconego telecine, jak pullup czy filmdint.
Następnie, chcemy zdeterminować odpowiedni prostokąt kadrowania, używamy fitru cropdetect:
mplayer dvd://1 -vf cropdetect
Przewniń do w pełni wypełnionej ramki (jasna scena), i zobaczysz wyjście MPlayera na konsoli:
crop area: X: 0..719 Y: 57..419 (-vf crop=720:362:0:58)
Teraz odtwarzamy film z tym fitrem aby sprawdzić jego poprawność:
mplayer dvd://1 -vf crop=720:362:0:58
I widzimy że wygląda świetnie. Teraz, upewniamy sie że wymiary śa wielokrotnością 16 . Szerokość jest w porządku, niestety wysokość nie. Ponieważ nie oblaliśmy matematyki w liceum, wiemy że najbliższą wielokrotnościa 16 mniejszą niż 362 jest 352.
Moglibyśmy poprostu użyć crop=720:352:0:58, ale ładniej byłoby wziąć trochę z góry i z dołu aby utrzymać się na środku. Zmneijszylismy wysokość o 10 pikseli, ale nie chcemy zwiększyć przesunięcia y o 5 pikseli ponieważ jest to liczba nieparzysta i pogorszyłaby jakość. Zwiększymy zatem przesunięcie na osi y o 4 piksele:
mplayer dvd://1 -vf crop=720:352:0:62
Innym powodem dla którego powinniśmy obcinać piksele równomiernie z góry i dołu są "połowy czarnych pikseli" które bezwzględnie powinniśmy obciąć jeżeli istnieją. Pamiętaj, jeżeli Twoje video jest ztelecinowane, upewnij się że filtr pullup (lub inny filtr odwróconego telecine który zdecydujesz się użyć) pojawia się w łańcuchu fitrów przed fitrem kadrowania. Jeżeli video posiada przeplot, usuń go przed kadrowaniem. (Jeżeli zdecydujesz się pozostawić przeplot, upewnij się że wertykalne przesunięcie kadrowania jest wielokrotnością 4.)
Jeżeli naprawdę jesteś przejęty utratą tych 10 pikseli, może wolisz przeskalować wymiary obrazu do najbliższej wielkortoności 16. Łańcuch fitrów powinen wyglądać tak:
-vf crop=720:362:0:58,scale=720:352
Skalowanie video w dół oznacza utratę małej ilości detali, która będzie najprawdopodobnie niezauważalna. Skalowanie w góre oznacza utratę jakości (chyba że zwiększysz bitrate). Kadrowanie wyrzuca te piksele. Jest to wymiana jaką trzeba rozważyć w każdym wypadku. Na przykłąd, jeżeli DVD było zrobione dla telewizji, możesz chcieć uniknąć wertykalnego skalowania, ponieważ zestawienie linii odpowiada temu jak obraz był oryginalnie nagrywany.
Przy insepkcji widzimy że nasz film ma dużo akcji i szczegółów, wybieramy więc 2400Kbit na nasze bitrate.
Jesteśmy gotowi do dwu-przebiegowego kodowania. Przebieg 1:
mencoder dvd://1 -ofps 23.976 -oac copy -vf crop=720:352:0:62,hqdn3d=2:1:2 -ovc lavc \ -o Harry_Potter_2.avi
Drugi przebieg jest taki sam, podajemy tylko opcję vpass=2:
mencoder dvd://1 -ofps 23.976 -oac copy -vf crop=720:352:0:62,hqdn3d=2:1:2 -ovc lavc \ -o Harry_Potter_2.avi
Opcje v4mv:mbd=2:trell ogromnie poprawią jakość
za cenę czasu kodowania. Opcje cmp=3:subcmp=3:mbcmp=3
wybierają funkcje porównywania które wybierają lepsza jakość niż te domyśłne.
Możesz poeksperymentować z tymi wartościami (skonsultuj stronę man co do
prawidłowych wartości) ponieważ różne funkcję mogą mieć duży wpływ na jakość
zależnie od matriału źródłowego. Na przykład, jeżeli libavcodec
produkuje za dużo artefaktów możesz spróbować wybrać eksperymentalną funkcję NSSE
jako funkcję porównującą przez *cmp=10.
Dla tego filmu, końcowe AVI będzie miało 138 minut i prawie 3GB. A ponieważ powiedziałeś że rozmiar nie ma znaczenia, to jest akceptowalna wielkość. Jednakże, jeżelli chciałbyś mniejszy plik, mógłbyś spróbować niższy bitrate. Zwiększanie wartości bitrate daje malejące rezultaty, więc jeżeli widać wyraźną róźnicę między 1800Kbit, a 2000Kbit, to nie znaczy że będzie lepiej powyżej 2000Kbit. Ekperymentuj aż będziesz zadowolony.
Ponieważ przepuściliśmy źródłowy obraz przez filtr odszumiający, możesz chcieć dodać go trochę podczas odtwarzania. To razem z fitrem postprocessingu spp, drastycznie poprawia odbiór obrazu i pomaga wyeliminować artefakty. W MPlayerze dostępna jest opcja autoq. W tym momencie możesz również poprawić gammę lub/i korekcję kolorów. Na przykład:
mplayer Harry_Potter_2.avi -vf spp,noise=9ah:5ah,eq2=1.2 -autoq 3
Wprowadzenie. Radzę abyś odwiedził poniższą stronę jeżeli nie za bardzo rozumiesz co jest napisane w tym dokumencie: http://www.divx.com/support/guides/guide.php?gid=10 Ten URL prowadzi do zrozumiałego i rozsądnej wielkości przewodnika traktującego o tym czym jest telecine.
Z przyczyn technicznych odnoszących się do wczesnych urządzeń telwizyjnych, każde video które miało być odtwarzane na telewizorze NTSC musiało być ustawione na 59,94 pola na sekundę. Filmy i programy nagrane dla telewizji są najczęściej ograniczone bezpośrednio do 59,94 pól na sekundę, ale większość filmów kinowych jest nagrywanych w 24 lub 23,976 klatkach na sekundę. Kiedy DVD z kinowym filmem jest odtwarzane, video jest konwertowane dla telewizji przy pomocy procesu nazywanego telecine.
Obraz na DVD, tak naprawdę nigdy nie jest przechowywany jako 59,94 pól na sekundę. Dla obrazu który oryginalnie był 59,94, każda para pól jest łączona w ramkę, co daje rezultat 29,97 ramek na sekundę. Sprzętowe odtwarzacze DVD odczytują flagę osadzoną w strumieniu video aby określić czy parzyste czy nieparzyste linie powinny formować pierwsze pole.
Zazwyczaj, informacja o 23,976 ramkach na sekundę mówi odtwarzaczowi DVD, że musi przeprowadzić telecine w locie. Czasami, jednak, proces telecine na obrazie przeprowadzony jest przed umieszczeniem go na DVD; Nawet jeżeli był on nagrany jako 23,976 ramek na sekundę, staje się on 59,94 pola na sekundę i jest przechowywany na dysku jako 29,97 ramek na sekundę.
Patrząc na indywidualne ramki uformowane z ztelecinowanego obrazu 59,94 pól na sekundę, przeplot jest wyraźnie widoczny przy ruchu, ponieważ jedno pole (powiedzmy parzyste linie) reprezentują moment w czasie o 1/59,94 sekundy później niż pozostałe. Odtwarzanie video z przeplotem na komputerze wygląda ohydnie, z dwóch przyczyn, ponieważ monitor jest większej rozdzielczości i obraz jest wyświetlany ramka-po-ramce zamiast pole-po-polu.
Notki:
Ta sekcja odnosi się tylko do NTSC DVD, nie do PAL.
Przykładowe komendy MEncodera w tym dokumencie
nie są przeznaczone do prawdziwego użycia.
Są one po prostu minimum do kodowania danej kategorii video. Jak zrobić dobre ripy DVD
lub precyzyjnie-ustawić libavcodec
dla
najlepszej jakości nie są zagadnieniami dla tego tego dokumentu.
Jest kilka przypisów do tego dokumentu, zaznaczonych tak: [1]
Progresywne video było oryginalnie filmowane przy 23.976 fps (ramek na sekundę - przyp. tłum.), i przechowywane na DVD bez zmian.
Kiedy odtwarzasz progresywne DVD w MPlayerze, MPlayer wyświetli nastepujący wiersz zaraz gdy film zacznie być odtwarzany:
demux_mpg: 24fps progressive NTSC content detected, switching framerate.
Od tego momentu, demux_mpg niepowinien nigdy powiedzieć iż znalazł "30fps NTSC content."
Kiedy oglądasz progresywne video, nie powinieneś zauważyć żadnego przeplotu. Bądź jednak czujny ponieważ jest tam czasami wmiksowany mały kawałek telecine, tam gdzie się go nie spodziewasz. Napotkałem DVD z programami telewizyjnymi w których przy każdej zmianie sceny i w losowych miejscach była jedna sekunda telecine. Raz oglądałem DVD który miał jedną połowę progresywną, a drugą ztelecinowaną. Jeżeli chcesz być naprawdę pewny, możesz przeskanować cały film:
mplayer dvd://1 -nosound -vo null -benchmark
Użycie opcji -benchmark przekazuje MPlayerowi aby odtwarzał film tak szybko jak tylko może; ciągle jednak, jako że jest zależny od Twojego sprzętu może to zając trochę czasu. Za każdym razem demux_mpg zgłasza zmianę liczby ramek na sekundę, pierwsza linia nad pokaże czas w którym nastąpiła ta zmiana.
Progresywne video jest czasami nazywane "miękkie-telecine" ponieważ jest ono stworzone aby odtwarzac DVD wykonał na nim proces telecine.
Obraz "ztelecinowany" był oryginalnie sfilmowany jako 23,976, ale został poddany procesowi telecine przed zapisaniem go na płycie DVD.
MPlayer (nigdy) nie zwraca żadnych zmian ilości ramek na sekundę kiedy odtwarza ztelecinowane video.
Podczas oglądania video poddanego procesowi telecine, zobaczysz artefakty przeplotu które wydają się "migać": szybko pojawiają się i znikają. Możesz się im bliżej przyjrzeć wpisując
mplayer dvd://1 -speed 0.1
Przewiń na dynamiczne sceny.
Popatrz na wzór przeploto-wyglądających i progresywnie-wyglądających ramek. Jeżeli wzór który widzisz wygąda jak PPPII,PPPII,PPPII,... wtedy video ztelecinowane. Jeżeli widzisz inny wzór, wtedy możliwe jest że video zostało niestandartowo poddane procesowi telecine i MEncoder nie może bezstratnie przekonwertować go do progresywnego video. Jeżeli nie widzisz żadnego wzoru, wtedy najprawdopodobniej video zawiera tylko przeplot.
Czasami video poddane procesowi telecine nazywane jest "twarde-telecine".
Przeplecione video było oryginalnie sfilmowane jako 59,94 pól na sekundę i przechowywane na DVD jako 29,97 fps. Przeplot to rezultat połączenia par pól w ramkę, ponieważ w każdej ramce, każde pole jest oddzielone o 1/59,94 sekundy.
Tak jak przy ztelecinowanym video, podczas odtwarzania filmu z przeplotem MPlayer nigdy nie powinien powiadamiać o zmianie ilości ramek na sekundę.
Kiedy z bliska oglądasz przeplecione video z -speed 0.1 zobaczysz, iż każda pojedyńcza klatka jest przepleciona.
Wszystkie "wymieszane progresywne i telecine" video były oryginalnie nagrane jako 23.976 ramek na sekundę, ale niektóre części skończyły jako ztelecinowane.
Kiedy MPlayer odtwarza tę kategorię, będzie on (zazwyczaj bardzo szybko) przełączał się tam i z powrotem między "30fps NTSC" i "24fps progresywne NTSC". Przyjrzyj się wyjściu MPlayera (na konsoli - przyp. tlum.) aby zobaczyć te wiadomości.
Powinieneś przyjrzeć się sekcji "30fps NTSC" aby upewnić się czy są one na pewno telecine a nie tylko przeplecione.
W "mieszanej progresywnej i przeplecionej" zawartości, progresywne i przeplecione video zostało połączone razem.
Ta kategoria wygląda zupełnie jak "mieszane progresywne i telecine", do momentu kiedy przyjrzysz się fragmentom 30fps i zobaczysz iż nie maja one wzoru telecine.
Jak już wspomniałem na początku, przykładowe polecenia MEncodera poniżej nie są przewidziane do rzeczywistego użycia; demonstrują one tylko minimalne parametry potrzebne do prawidłowego zakodowanie danej kategorii.
Progresywne video nie wymaga żadnego specjalnego filtrowania do kodowania. Jedynym koniecznym paramterem jaki musisz użyć jest -ofps 23.976. Inaczej, MEncoder będzie próbował kodować przy prędkości 29,97 i duplikować ramki.
mencoder dvd://1 -nosound -ovc lavc -ofps 23.976
Proces telecine może zostać odwrócony, aby odzyskać oryginalną zawartość 23,976, przy użyciu metody o nazwie odwrócone-telecine. MPlayer zawiera dwa filtry które są w stanie dokonać tego: detc i ivtc. Możesz przeczytać stronę man aby dowiedzieć się co je różni, ale jeżeli chodzi o DVD to nigdy nie miałem problemu z ivtc. Pamiętaj, że przed przeskalowywaniem powinieneś zawsze odwrócić telecine; odwróć telecine także przed cropowaniem, chyba że naprawdę wiesz co robisz [1].
mencoder dvd://1 -nosound -vf ivtc=1 -ovc lavc -ofps 23.976
Dla większości praktycznych przypadków nie jest możliwe całkowite odzyskanie progresywnego video z przeplecionej zawartości. Jedynym sposobem bez gubienia połowy pionowej rozdzielczości jest podwojenie ilości ramek na sekundę i "zgadnięcie" co powinno zastąpić odpowiadające linie każdego pola (ma to pewne wady - zobacz trzecią metodę).
Kodowanie video z przeplotem. Normalnie, przeplot niszczy szanse enkodera
na dobre zakodowanie, lecz libavcodec
posiada dwie opcje pozwalające przechowywać video z przeplotem ciut lepiej:
ildct i ilme.
Użycie mbd=2 jest także zalecane [2]
ponieważ zakoduje on makrobloki bez przeplotu w miejscach gdzie nie ma ruchu
Zauważ iż opcja -ofps NIE jest tu potrzebna.
mencoder dvd://1 -nosound -ovc lavc -lavcopts ildct:ilme:mbd=2
Użycie filtru likwidującego przeplot przed kodowaniem. Jest kilka takich filtrów, każdy ma swoje wady i zalety. Skonsultuj mplayer -pphelp aby zobaczyć co jest dostępne (grepuj "deint") i przeszukaj listy dyskusyjne MPlayera aby znaleźć wiele dyskusji na temat różnych filtrów. Ilość ramek na sekundę znów się nie zmienia, więc nie używamy -ofps. Likwidowanie przeplotu powinno zostać zrobione po kadrowaniu [1] i przed skalowaniem.
mencoder dvd://1 -nosound -vf pp=lb -ovc lavc
Niestety ta opcja zawiera błędy w MEncoderze; Będzie działać w MEncoder G2, którego jeszcze nie ma. Na razie możesz doświadczyć nieoczekiwanych wywaleń. Celem opcji -vf tfields jest stworzenie pełnej klatki z każdego pola, co w efekcie daje framerate 59,94. Zaletą tego podejścia jest zerowa utrata danych; jednak ze względu na to, iż każda ramka pochodzi od jednego pola pozostałe linie muszą być jakoś zinterpolowane. Są niezbyt dobre metody generowania brakujących danych, a rezultaty będą podobne do tych jakie otrzymamy przy filtrach likwidujących przeplot. Generowanie brakujących linii tworzy kolejne problemy, po prostu ilość danych się podwaja. Więc, aby zachować jakość potrzebny jest większy kodujący bitrate i większa cześć mocy procesora jest używana do kodowania jak i dekodowania. tfields posiada kilka różnych opcji do generowania brakujących linii. Jeżeli używasz tej metody, odwołaj się do manuala i wybierz opcję która najbardziej odpowiada Twojemu materiałowi. Zauważ, że gdy używasz tfields musisz podać i -fps i -ofps aby podwoić ilość ramek na sekundę Twojego źródła.
mencoder dvd://1 -nosound -vf tfields=2 -ovc lavc -fps 59.94 -ofps 59.94
Jeżeli planujesz drastyczne zmniejszenie rozdzielczości możesz odciąć i zakodować tylko jedno z dwóch pól. Oczywiście stracisz połowę pionowej rozdzielczości, ale jeśli chcesz zeskalować do mniej niż połowy pionowej rozdzielczości, strata nie będzie miała dużego znaczenia. Rezultatem będzie progresywny plik o prędkości 29,97 ramek na sekundę. Procedura wymaga użycia -vf field, potem wykadrowania [1] i wyskalowania. Pamiętaj, iż będziesz musiał skompensować połowę pionowej rozdzielczości odpowiednią skalą.
mencoder dvd://1 -nosound -vf field=0 -ovc lavc
W celu zmienienia zmieszanego video w całkowicie progresywne, części ztelecinowane będą musiały być poddane procesowi odwróconego telecine. Są dwa filtry które tego dokonają natywnie, ale najlepszym sposobem jest użycie ich obu połączonych (czytaj dalej aby dowiedzieć się więcej).
Obecnie najbardziej niezawodną metodą na poradzenie sobie z tym typem video, jest nie odwracanie telecine ztelecinowanych części, ale ztelecinować nie-ztelecinowane części i odwrócić telecine całego video. Brzmi skomplikowanie? softpulldown jest filtrem który zamienia całe video na telecine. Jeżeli po softpulldown nastąpi detc lub ivtc, końcowym rezultatem będzie w całości progresywne video. Kadrowanie i skalowanie powinno być zrobione po operacjach odwracających telecine z opcją -ofps 23.976.
mencoder dvd://1 -nosound -vf softpulldown,ivtc=1 -ovc lavc -ofps 23.976
-vf pullup jest zaprojektowane aby odwracać telecine ztelecinowanego materiału, a progresywne dane zostawiać w spokoju. Pullup nie działa za dobrze z obecnym MEncoderem, ale będzie działał z MEncoder G2 (kiedy ten będzie tylko gotowy). Działa dobrze bez opcji -ofps, ale -ofps jest potrzebne aby zapobiec poszatkowanemu wyjściu . Z -ofps pullup czasami zawodzi. Problem wywodzi się z zachowania MEncodera który zrzuca ramki aby zachować synchronizację między dźwiękiem i obrazem: zrzuca ramki raczej przed wysłaniem ich przez łańcuch filtrów, niż po. W rezultacie pullup jest czasami pozbawiony danych których potrzebuje.
Jeżeli MEncoder zrzuca za dużo ramek pod rząd, zagładza bufor pullupa i powoduje jego nieoczekiwane zamknięcie.
Jeżeli nawet MEncoder zrzuca jedną ramkę, pullup wciąż nie widzi jej i operuje na złej sekwencji ramek. Nawet jeśli to nie powoduje nieoczekiwanego zakończenia, pullup nie będzie w stanie podjąć właściwych decyzji jak połączyć progresywne ramki i albo będzie niewłaściwie dopasowywał do siebie pola albo zrzucał parę pól aby skompensować.
Nie używałem -vf filmdint osobiście, ale zobacz co ma do powiedzenia na ten temat D Richard Felker III:
To jest w porządku, ale IMO (MZ - Moim zdaniem - przyp. tłum.) to raczej próbuje usunąć przeplot niż odwrócić telecine (podobnie jak odtwarzacze DVD settop & progresywne TV) czego skutkiem jest ohydne miganie i inne artefakty. Jeżeli zamierzasz używać tego, musisz chociaż spędzi trochę czasu na dopasowaniu opcji i oglądaniu rezultatów aby upewnić się, że się nie kaszani.
Są dwie metody na poradzenie sobie z tą kategorią, każda jest pewnym kompromisem. Powinieneś zdecydować na podstawie czasu trwania/miejsca każdego typu.
Traktuj video jak progresywne. Części z przeplotem będą wyglądały jak z przeplotem i niektóre przeplecione pola będą musiały być zrzucone, czego rezultatem będzie niemiarowe skakanie. Jeśli chcesz możesz użyć filtrów postprocessingu, ale może to nieznacznie zdegradować progresywne części.
Ta opcja na pewno nie powinna być używana jeśli docelowo masz zamiar wyświetlać video na urządzeniu wykorzystującym przeplot (np. z kartą TV) Jeżeli masz ramki z przeplotem 23,937 fps, będą one ztelecinowane razem z progresywnymi ramkami. Połowa "ramek" z przeplotem będzie wyświetlona w czasie wyświetlania trzech pól (3/59.94 sekund), co w rezultacie da migający "skok wstecz w czasie" efekt który kiepsko wygląda. Jeżeli próbowałeś tego musisz użyć filtru likwidującego przeplot jak lb lub l5.
To może być również zły pomysł dla progresywnego obrazu. Zrzuci to pary nieprzerwanych przeplecionych pól, dając w rezultacie nieciągłość która może być bardziej widoczna niż w drugim przypadku który pokazuje niektóre ramki dwa razy. Video z przeplotem 29,97 fps jest już trochę poszatkowane ponieważ powinno być wyświetlanie z prędkością 59,94 pól na sekundę, więc zduplikowane pola nie są aż tak widoczne.
W każdym przypadku najlepiej jest rozpatrywać materiał i to gdzie masz zamiar go wyświetlać. Jeśli video jest w 90% progresywne i nie masz zamiaru nigdy go wyświetlać na TV, powinieneś faworyzować progresywne podejście. Jeżeli jest tylko w połowie progresywne, będziesz pewnie chciał je kodować tak jakby było w całości z przeplotem.
Traktuj video jakby było z przeplotem. Niektóre klatki z progresywnych części będą musiały być zduplikowane, dając w rezultacie niemiarowe skoki. Znów filtry likwidujące przeplot mogą nieznacznie zdegradować progresywne części.
O kadrowaniu: Video na DVD jest przechowywane w formacie nazywanym YUV 4:2:0. W video YUV luma ("jasność") i chroma ("kolor") są przechowywane osobno. Ponieważ ludzkie oczy są mniej wrażliwe na kolor niż na jasność, w obrazie YUV 4:2:0 na cztery piksele luma przypada jeden piksel chroma. W progresywnym obrazie, każdy kwadrat czterech pikseli luma (dwa na każdym boku) ma jeden wspólny piksel chroma. Musisz wykadrować progresywne video YUV 4:2:0 do parzystych rozdzielczości, i używać parzystych przesunięć. Na przykład crop=716:380:2:26 jest OK ale crop=716:380:3:26 nie jest.
Kiedy masz do czynienia z YUV 4:2:0 z przeplotem, sytuacja jest trochę bardziej skomplikowana. Zamiast każdych czterech pikseli luma w ramce dzielących jeden piksel chroma, każde cztery piksele w polu dzielą jeden piksel chroma. Kiedy pola są przeplatane aby stworzyć ramkę, każda linia skanująca jest wysokości jednego piksela. Teraz, zamiast czterech pikseli luma w kwadracie, są dwa bok-przy-boku i dwa następne bok-przy-boku dwie linie skanujące niżej. Całe to zamieszanie powoduje, że pionowe rozmiary kadru i przesunięcia muszą być wielokrotnościami czterech. Wymiary poziome mogą pozostać parzyste.
Dla telecinowanego video, zalecam kadrować po procesie odwracania telecine. Kiedy video jest już progresywne wymagane jest tylko kadrowanie do parzystych wymiarów. Jeśli naprawdę potrzebujesz lekkiego przyspieszenia jakie da kadrowanie najpierw musisz kadrować pionowo do wielokrotności czterech, inaczej filtr odwracający telecine nie będzie otrzymywał prawidłowych danych.
Przy video z przeplotem (nie telecine), musisz zawsze kadrować pionowo do wielokrotności czwórki, chyba że używasz opcji -vf field przed kadrowaniem.
O parametrach i jakości kodowania:
Tylko to, że poleciłem mbd=2 tutaj nie znaczy że
nie może być on używany gdzie indziej. Razem z trell,
mbd=2 jest jedną z dwóch najbardziej podnoszących jakość opcji
biblioteki libavcodec
, których zawsze
powinieneś używać, chyba że spadek szybkości kodowania jest niedopuszczalny
(np. kodowanie w czasie rzeczywistym). Biblioteka libavcodec
ma wiele opcji umożliwiających zwiększenie jakości wyjściowej kodowania (i zmniejszyenie
prędkości) ale ten temat jest poza zakresem tego dokumentu.
Istnieją publiczne listy dyskusyjne o MPlayerze. Jeśli nie jest to wyraźnie zaznaczone, językiem obowiązującym na nich jest angielski. Proszę nie przysyłać wiadomości w innym języku, ani w formacie HTML! Jeśli wiadomość zostanie odrzucona z powodu zbyt dużego załącznika, proszę ulokować go w miejscu przeznaczonym do publicznego ściągania. Żeby się zapisać, należy kliknąć na poniższych odnośnikach. Na tych listach obowiązują te same zasady Netykiety odnośnie pisania i cytowania, co w Usenecie. Prosimy o ich przestrzeganie, ułatwia to życie tym, którzy czytają Wasze e-maile. Można się z nimi zaznajomić na stronie Jak pisać listy.
Wysyłane są na nią ogłoszenia związane z bezpieczeństwem i o nowych wersjach programu.
Ogólna lista pomocy i odpowiedzi na pytania związane z MPlayerem. Proszę przeczytać całą dokumentację przed wysłaniem tutaj swoich problemów i próśb o nowe funkcje. Zgłoszenia błędów w MPlayerze należy wysyłać tutaj, ale proszę najpierw przeczytać sekcje znane błędy i zgłaszanie błędów.
MPlayer-felhasznalok (Węgierska)
Lista w języku węgierskim. Temat? Jeszcze zobaczymy... Na razie głównie flame'y i pytania typu RTFM :(
Pytania dotyczące kart graficznych Matrox, np. na temat mga_vid, oficjalnych sterowników beta Matroxa (dla XFree86 4.x.x), czy o matroxfb-TVout.
Sprawy związane ze sprzętowym dekoderem zwanym DVB (nie DXR3!).
Ogólna lista pomocy i odpowiedzi na pytania związane z MEncoderem. Proszę przeczytać całą dokumentację przed wysłaniem tutaj swoich problemów i próśb o nowe funkcje. Zgłoszenia błędów w MEncoderze należy wysyłać tutaj, ale proszę najpierw przeczytać sekcje znane błędy i zgłaszanie błędów.
To lista dotycząca rozwoju MPlayera! Jest to miejsce na rozmowy o zmianach interfejsu/API, nowych bibliotekach, optymalizacji kodu i zmianach w konfiguracji. Aby utrzymać mały ruch na liście, można przysyłać tu łatki, ale nie zgłoszenia błędów, pytania użytkowników, prośby o nowe możliwości czy flame'y.
Na tę listę wysyłane są automatycznie wszystkie zmiany w kodzie MPlayera. Dozwolone są tu tylko pytania o te zmiany (prośby o wyjaśnienie, dlaczego dana zmiana jest konieczna, lepsze rozwiązania, możliwe problemy związane z tą zmianą).
To lista na dyskusje o dokumentacji i stronie domowej MPlayera. Przesyłane są też na nią logi CVS dotyczące dokumentacji i strony domowej.
To lista na dyskusje o tłumaczeniu dokumentacji i strony domowej MPlayera. Przesyłane są też na nią logi CVS dotyczące dokumentacji i strony domowej.
Lista poświęcona dyskusjom o przenoszeniu MPlayera do środowiska Cygwin i MinGW.
Lista poświęcona dyskusjom o MPlayer G2, odtwarzaczu filmów nowej generacji.
Lista poświęcona dyskusjom o strukturze serwerów lustrzanych MPlayera
MPlayer-MWN (NIEAKTYWNA)
Lista poświęcona dyskusjom o MPlayer Weekly News.
MPlayer-os2 (NIEAKTYWNA)
Lista poświęcona dyskusji o przenoszeniu MPlayera do środowiska OS/2.
MPlayer-qt-codecs-porting (NIEAKTYWNA)
Lista poświęcona dyskusjom o obsłudze kodeków QuickTime.
Wyszukiwanie w archiwach list jest dostępne pod adresem http://www.mplayerhq.hu/cgi-bin/s-arch.cgi.
Dobre raporty błędów stanowią bardzo istotny wkład w rozwój każdego projektu. Jednak tak jak pisanie dobrych programów wymaga sporo pracy, tak dobre zgłoszenia problemów wymagają trochę wysiłku. Prosimy wziąć pod uwagę to, że większość deweloperów jest bardzo zajęta i odbiera nieprzyzwoitą wręcz ilość listów. Wsparcie ze strony użytkownika jest naprawdę ważne w procesie rozwoju MPlayera. Należy jednak pamiętać, że trzeba dostarczyć wszystkie informacje o które poprosimy i postępować dokładnie według instrukcji zawartej w tym dokumencie.
Jeżeli uważasz, że posiadasz wystarczające umiejętności, namawiamy Cię do samodzielnego poprawiania błędów. A może już to zrobiłeś? Przeczytaj ten krótki dokument, żeby dowiedzieć się w jaki sposób dodać swoją łatę do źródeł MPlayera. Jeżeli będziesz miał jakieś pytania, pomogą Ci ludzie z listy MPlayer-dev-eng (tylko w języku angielskim -przyp. tłumacza).
Po pierwsze sprawdź najnowszą wersję CVS MPlayera, ponieważ dany błąd może być już w niej naprawiony. Rozwój MPlayera przebiega naprawdę szybko, większość problemów występujących w oficjalnych wydaniach jest zgłaszana w ciągu kilku dni albo nawet godzin. Dlatego też prosimy używać tylko wersji z CVSu do zgłaszania błędów. Dotyczy to głównie pakietów binarnych MPlayera. Instrukcje dotyczące CVSu znajdują się na dole tej strony lub w pliku README. Jeżeli problem dalej występuje prosimy sprawdzić listę znanych błędów i resztę dokumentacji. Jeżeli problem nie jest znany lub rozwiązany przez naszą dokumentację prosimy zgłosić błąd.
Nie należy wysyłać zgłoszeń do deweloperów. MPlayer jest dziełem dużej grupy, więc więcej osób może być zainteresowanych tym problemem. Czasami inni użytkownicy spotkali się już z danym problemem i wiedzą, jak go rozwiązać, nawet jeżeli jest to błąd w kodzie MPlayera.
Prosimy opisywać problem tak dokładnie, jak to tylko możliwe. Należy sprawdzić w jakich dokładnie okolicznościach pojawia się błąd. Czy występuje on tylko w określonych sytuacjach? Czy ma związek z konkretnym plikiem lub typem plików? Czy dotyczy tylko danego kodeka, czy też jest niezależny od kodeków? Czy możesz go powtórzyć z każdym wyjściem wideo? Im więcej informacji dostarczysz, tym większe są szanse na rozwiązanie zgłoszonego problemu. Nie należy również zapominać o dołączeniu wartościowych informacji wymienionych poniżej. W przeciwnym wypadku nie będziemy w stanie prawidłowo zdiagnozować zgłoszonego problemu.
Doskonałym i dobrze napisanym przewodnikiem dotyczącym zadawania pytań jest dokument "Jak mądrze zadawać pytania" napisany przez Erica S. Raymonda (Polskie tłumaczenie tego dokumentu można znaleźć +tutaj -przyp. tłum.). Istnieje także inny dokumentem tego typu zatytułowany Jak efektywnie zgłaszać błędy stworzony przez Simona Tathama (Polskie tłumaczenie tego dokumentu można znaleźć tutaj -przyp. tłum.). Jeśli będziesz postępował zgodnie z tymi przewodnikami, powinieneś uzyskać pomoc. Prosimy jednak pamiętać, że śledzimy listę jako ochotnicy, poświęcając nasz wolny czas. Jesteśmy bardzo zajęci i nie potrafimy zagwarantować, że pomożemy rozwiązać zgłoszony problem, ani nawet tego, że odpowiemy na Twoje zgłoszenie.
Zapisz się na listę MPlayer-users: http://mplayerhq.hu/mailman/listinfo/mplayer-users i wyślij swoje zgłoszenie błędu na mailto:mplayer-users@mplayerhq.hu, gdzie będzie można je omówić.
Jeżeli wolisz, możesz zamiast tego skorzystać z naszej nowej Bugzilli (systemu zgłaszania błędów - przyp. tłum.)
Językiem obowiązującym na tej liście jest angielski. Prosimy trzymać się zasad standardowej netykiety (Polską wersję netykiety można przeczytać np. tutaj - przyp. tłum.) i nie wysyłać listów w HTMLu na żadną z naszych list. W przeciwnym wypadku zostaniesz zignorowany lub wyrzucony z listy. Jeżeli nie wiesz czym jest list w HTMLu albo dlaczego jest on zły, przeczytaj ten świetny dokument (znów tylko po angielsku - przyp. tłum.). Wyjaśnia on wszystkie szczegóły i zawiera instrukcje wyłączania HTMLu. Zauważ również, że nie wysyłamy kopii listów do użytkowników, więc dobrym pomysłem jest zapisanie się na listę w celu uzyskania odpowiedzi.
Może zajść potrzeba dołączenia logu, konfiguracji lub przykładowego pliku w Twoim zgłoszeniu błędu. Jeżeli któryś z nich ma duży rozmiar, lepiej załadować go na nasz serwer FTP w skompresowanej postaci (gzip i bzip2 są preferowanymi formatami) i załączyć tylko ścieżkę i nazwę pliku do zgłoszenia błędu. Nasza lista ma ustawiony limit rozmiaru każdej wiadomości na 80k. Jeżeli potrzebujesz wysłać coś większego, musisz to skompresować albo załadować na serwer.
Nazwa Twojej dystrybucji Linuksa albo system operacyjny. Np.:
Red Hat 7.1
Slackware 7.0 + pakiety rozwojowe z 7.1 ...
wersja jądra (kernela):
uname -a
wersja biblioteki libc:
ls -l /lib/libc[.-]*
wersja gcc i ld:
gcc -v ld -v
wersja binutils:
as --version
Jeżeli masz problem z trybem pełnoekranowym:
Menadżer okien i wersja
Jeżeli masz problem z XVIDIXem:
głębia barw Xów (colour depth):
xdpyinfo | grep "depth of root"
Jeżeli tylko GUI zawiera błędy:
wersja GTK
wersja GLIB
wersja libpng
Sytuacja w której pojawia się błąd GUI
informacje o procesorze (CPU) (to działa tylko pod Linuksem):
cat /proc/cpuinfo
Producent karty graficznej i model. Np.:
ASUS V3800U chip: nVidia TNT2 Ultra pro 32MB SDRAM
Matrox G400 DH 32MB SGRAM
Typ sterownika wideo i wersja, np:
wbudowane sterowniki X
nVidia 0.9.623
Utah-GLX CVS 2001-02-17
DRI z X 4.0.3
Typ karty dźwiękowej i sterownik, np:
Creative SBLive! Gold ze sterownikiem OSS z oss.creative.com
Creative SB16 ze sterownikiem OSS z kernela
GUS PnP z emulacją ALSA OSS
Jeżeli masz wątpliwości, załącz wyjście linuksowego polecenia lspci -vv.
Jeżeli ./configure zwraca błąd albo automatyczne wykrywanie czegoś zawiedzie, przeczytaj configure.log. Możliwe, że znajdziesz tam odpowiedź, na przykład kilka połączonych wersji tej samej biblioteki w Twoim systemie albo że zapomniałeś zainstalować pakietów rozwojowych (tych z przyrostkiem -dev albo -devel). Jeżeli wydaje Ci się, że istnieje jednak błąd, załącz configure.log w twoim raporcie.
Prosimy załączyć następujące pliki:
config.h
config.mak
Tylko jeżeli kompilacja się nie powiedzie w którymś z tych katalogów, załącz następujące pliki:
Gui/config.mak
libvo/config.mak
libao2/config.mak
Prosimy załączyć wyjście MPlayera w trybie gadatliwym na poziomie pierwszym (opcja -v - przyp. tłum.), ale pamiętając o nie skracaniu wyniku polecenia podczas kopiowania go do Twojego listu. Deweloperzy potrzebują wszystkich informacji do prawidłowego zdiagnozowania problemu. Możesz przekierować wyjście bezpośrednio do pliku w ten sposób:
mplayer -vopcje
nazwa_pliku
> mplayer.log 2>&1
Jeżeli Twój problem jest specyficzny dla jednego albo wielu plików, załaduj winowajcę(ów) na: ftp://mplayerhq.hu/MPlayer/incoming/
Załaduj także mały plik tekstowy nazwany tak samo jak Twój plik, ale z rozszerzeniem .txt. Opisz w nim problem, który masz z zawartym plikiem i załącz swój adres email oraz wyjście MPlayera w trybie gadatliwym na poziomie pierwszym. Zazwyczaj pierwsze 1-5 MB pliku jest wystarczające do odtworzenia problemu, ale żeby być pewnym prosimy wykonać:
dd if=twój_plik
of=mały_plik
bs=1024k count=5
To polecenie weźmie pierwsze pięć megabajtów 'twojego_pliku' i zapisze je do 'małego_pliku'. Następnie spróbuj odtworzyć mały plik i jeśli błąd wciąż się pojawia plik ten jest dla nas wystarczający. Prosimy w żadnym wypadku nie wysyłać plików poprzez pocztę elektroniczną! Załaduj je na serwer FTP i wyślij tylko ścieżkę/nazwę pliku. Jeżeli plik jest dostępny w sieci, wyślij dokładny adres pod którym jest on dostępny.
Musisz uruchomić MPlayera wewnątrz gdb i wysłać nam kompletne wyjście, albo jeżeli posiadasz zrzut core (ang. core dump) utworzony w wyniku awarii, wyciągnąć z niego użyteczne informacje. Oto jak to zrobić:
Przekompiluj MPlayera z opcją debugowania kodu:
./configure --enable-debug=3 make
i uruchom MPlayera używając gdb:
gdb ./mplayer
Jesteś teraz wewnątrz gdb. Wpisz:
run -vopcje-mplayera
nazwa_pliku
i odtwórz swoją awarię. Gdy tylko to zrobisz, gdb przeniesie cię z powrotem do linii poleceń, gdzie należy wpisać
bt disass $pc-32 $pc+32 info all-registers
Jeżeli utworzyłeś właściwy raport błędu kierując się powyższymi wskazówkami i jesteś pewien że to błąd MPlayera, nie kompilatora albo uszkodzonego pliku, przeczytałeś dokumentację i nie możesz znaleźć rozwiązania, Twoje sterowniki dźwięku są w porządku, możesz chcieć zapisać się na listę MPlayer-advusers (tylko po angielsku - przyp. tłum.) i wysłać tam swoje zgłoszenie błędu, aby uzyskać lepszą i szybszą odpowiedź.
Wiedz, że jeśli zadasz trywialne pytanie albo odpowiedź na nie znajduje się na stronie man, zamiast dostać odpowiedź zostaniesz zignorowany albo obrzucony wyzwiskami. Dlatego też nie obrażaj nas i zapisz się na listę -advusers tylko jeżeli naprawdę wiesz co robisz i czujesz się zaawansowanym użytkownikiem lub deweloperem. Jeżeli spełniasz te kryteria, nie powinno Ci sprawić problemu znalezienie sposobu zapisania się na listę (pamiętaj, że musisz biegle znać j. angielski - przyp. tłum.)
SIGILL (sygnał 4) na P3 przy jądrze 2.2.x:
Problem: jądro 2.2.x nie ma prawidłowej (działającej) obsługi SSE
Rozwiązanie: aktualizacja jądra do 2.4.x
Obejście: ./configure --disable-sse
Ogólny SIGILL (sygnał 4):
Problem: skompilowałeś i próbowałeś uruchomić MPlayera na dwóch różnych maszynach (np. skompilowałeś na P3, a próbowałeś uruchomić na Celeronie)
Rozwiązanie: kompiluj MPlayera na tej samej maszynie, na której chcesz go używać!
Obejście: Możesz o tym wszystkim zapomnieć, jeśli skonfugurujesz MPlayera z opcją --enable-runtime-cpudetection lub możesz wyłączyć pewnie zestawy instrukcji procesora za pomocą odpowiednich opcji (np. --disable-mmx, --disable-3dnow, itd.).
"Niespójność wewnętrznego bufora" ("Internal buffer inconsistency") w trakcie działania MEncodera:
Problem: znany problem przy lame < 3.90 skompilowanym za pomocą GCC 2.96 lub 3.x.
Rozwiązanie: używaj lame'a >=3.90.
Obejście: skompiluj lame za pomocą GCC 2.95.x i usuń już zainstalowane pakiety lame'a, gdyż mogły one zostać skompilowane za pomocą GCC 2.96.
Zepsuty dźwięk MP2/MP3 na PPC:
Problem: znany błąd złej kompilacji kodu przez GCC dla platformy PPC, na razie bez rozwiązania.
Obejście: użyj (powolnego) dekodera MP1/MP2/MP3 z FFmpeg (-ac ffmpeg)
SIGSEGV (sygnał 11) w libmpeg2, przy skalowaniu i kodowaniu:
Problem: znany błąd MMX w GCC 2.95.2 MMX.
Rozwiązanie: aktualizacja GCC do 2.95.3.
Zwisy podczas zapisywania strumieni:
Problem: zrzut pamięci
Rozwiązanie: Nie panikuj. Upewnij się, że wiesz, gdzie jest ręcznik.
najczęściej: zepsuty sterownik dźwięku! - spróbuj użyć innych sterowników, np. emulacji OSS ALSY 0.9 za pomocą opcji -ao oss. Spróbuj także -ao sdl. Opcje te czasem pomagają. Jeśli Twój plik odtwarza się bez problemów z opcją -nosound, to możesz być pewien, że to wina karty dźwiękowej lub jej sterownika.
problemy z buforem audio (źle wykryty rozmiar bufora)
Obejście: opcja MPlayera -abs
problemy z częstotliwością próbkowania - być może Twoja karta nie obsługuje częstotliwości próbkowania użytych w Twoich plikach - spróbuj filtru resample (-af resample=...)
powolna maszyna (procesor lub karta graficzna)
spróbuj opcji -vo null, jeśli odtwarza dobrze, oznacza to, że masz zbyt wolną kartę graficzną lub jej sterownik
Obejście: kup szybszą kartę lub poczytaj tę dokumentację by dowiedzieć się jak przyspieszyć odtwarzanie
Spróbuj również opcji-framedrop
zły plik
Obejścia:
opcje -ni lub -nobps (dla plików bez przeplotu lub uszkodzonych)
i/lub
opcja -mc 0 (wymagana dla plików ze złym przeplotem dźwięku VBR)
i/lub
opcja -delay lub klawisze +/- w trakcie odtwarzania do regulacji opóźnienia
Jeśli żadne z wymienionych rozwiązań nie przynoszą efektu, przyślij nam plik, a my to sprawdzimy (i naprawimy).
Twoja karta dźwiękowa nie obsługuje próbkowania 48kHz
Obejście: kup lepszą kartę... lub spróbuj zmniejszyć liczbę klatek na sekundę o 10% (używając opcji -fps 27 dla filmu o 30 klatkach na sekundę) lub użyj filtru resample
powolna maszyna (jeśli A-V nie jest w okolicach 0 i ostatnia liczba w statusie zwiększa się)
Obejście: opcja -framedrop
Twój plik używa nieobsługiwanego kodeka audio
Obejście: poczytaj dokumentację i pomóż nam dodać jego obsługę
Twój plik używa nieobsługiwanego kodeka video
Obejście: poczytaj dokumentację i pomóż nam dodać jego obsługę
automatycznie wybrany kodek nie potrafi dekodować pliku, spróbuj użyć innego za pomocą opcji -vc lub -vfm
próbujesz odtwarzać plik DivX 3.x za pomocą kodeka OpenDivX lub XviD (opcja -vc odivx) - zainstaluj DivX4Linux i przekompiluj odtwarzacz
Pierwsza uwaga: opcje -fs -vm i -zoom są jedynie zaleceniami, nieobsługiwanymi (jeszcze) przez wszystkie sterowniki. Nie jest to więc błąd, jeśli nie działają. Tylko niektóre sterowniki obsługują skalowanie/powiększanie i nie oczekuj tego od x11 lub dga.
Migotanie OSD/napisów.
sterownik x11: przykro nam, ale nie da się tego teraz naprawić
sterownik xv: użyj opcji -double
Zielony obraz przy użyciu mga_vid (-vo mga / -vo xmga).
mga_vid źle wykrył ilość pamięci RAM na Twojej karcie, przeładuj go używając opcji mga_ram_size.
Celem tego dokumentu jest opisanie formatu skórki MPlayera. Informacje zawarte tutaj mogą być niedokładne, ponieważ:
To nie ja napisałem GUI.
GUI nie jest ukończone.
Mogę się mylić.
A więc nie bądź zaskoczony, jeśli coś nie będzie działać tak, jak przedstawiono to tutaj.
Podziękowania dla Zoltána Ponekkera za jego pomoc.
András Mohari <mayday@freemail.hu>
W zasadzie nie ma to żadnego związku z formatem skórki, ale powinieneś wiedzieć, że MPlayer nie ma wbudowanej skórki, w związku z tym co najmniej jedna skórka musi być zainstalowana, abyś miał możliwość korzystania z GUI.
Skórki są szukane w następujących katalogach (w kolejności):
$(DATADIR)/Skin/
$(PREFIX)/share/mplayer/Skin/
~/.mplayer/Skin/
Zauważ, że pierwsza ścieżka może się różnić, w zależności od sposobu w jaki MPlayer został skonfigurowany (zobacz argumenty --prefix oraz --datadir w skrypcie configure).
Każda skórka jest instalowana w swoim własnym katalogu, w jednej z wyżej wymienionych lokacji, na przykład:
$(PREFIX)/share/mplayer/Skin/default/
Obrazki muszą być zapisane w formacie PNG (paleta truecolor - 24 lub 32 bpp).
W głównym oknie oraz na panelu odtwarzania (zobacz niżej) możesz użyć obrazków z 'przezroczystością': obszary wypełnione kolorem #FF00FF (magenta) są w pełni przezroczyste dla MPlayera. Oznacza to, że możesz mieć okna o różnych kształtach jeśli Twój X Server ma rozszerzenie XShape.
Skórki są całkowicie konfigurowalne (w odróżnieniu od skórek np. Winampa/XMMS), a więc zależy to wyłącznie od Ciebie, czy stworzysz coś wspaniałego.
W chwili obecnej mamy cztery okna, które można ozdobić: okno główne (main window), okno ekranu (subwindow), panel odtwarzania (playbar), menu skórki (skin menu) (które może być aktywowane prawym przyciskiem myszy).
Okno główne i/lub panel odtwarzania to miejsca, gdzie możesz sterować MPlayerem. Tłem tego okna jest obrazek. Różne elementy mogą (i muszą) być umieszczone w tym oknie: przyciski, potencjometry (suwaki) i etykiety. Dla każdego elementu musisz określić ich pozycję oraz rozmiar.
Przycisk ma trzy stany (wciśnięty, zwolniony, nieaktywny), zatem jego obrazki muszą być podzielone na trzy części w pionie. Zobacz sekcję button, by dowiedzieć się więcej.
Potencjometr (suwak) (wykorzystywany głównie jako pasek przewijania i kontrolka głośności/balansu) może składać się z każdej liczby stanów poprzez podzielenie jego obrazka na wiele części, z których jedna jest pod drugą. Zobacz hpotmeter oraz potmeter, by dowiedzieć się więcej.
Etykiety są nieco specyficzne: Znaki potrzebne do ich narysowania są pobierane z pliku graficznego, a znaki umieszczone w pliku graficznym są opisane przez plik opisu czcionek. Jest to plik, który za pomocą czystego tekstu określa współrzędne x, y oraz wielkość każdego znaku umieszczonego na obrazku (plik graficzny i jego plik opisu tworzą razem czcionkę). Zobacz dlabel oraz slabel, by dowiedzieć się więcej.
Wszystkie obrazki mogą być całkowicie przezroczyste - tak, jak to opisano w sekcji formaty plików graficznych. Jeżeli X Server nie obsługuje rozszerzenia XShape, to elementy oznaczone jako przezroczyste będą czarne. Jeśli chciałbyś wykorzystać taką możliwość, szerokość obrazka tła głównego okna musi być podzielna przez 8.
Okno ekranu to miejsce, gdzie odtwarzany jest film. Może ono wyświetlać określony obrazek, jeśli żaden film nie jest uruchomiony (to dość nudne mieć puste okno :-)) Uwaga: przezroczystość nie jest tutaj dostępna.
Menu skórki to po prostu jeden ze sposobów na kontrolowanie MPlayera poprzez wpisy w menu. Dwa obrazki są do tego potrzebne: pierwszy z nich jest obrazkiem podstawowym, który pokazuje zwykły stan menu, drugi zaś służy do wyświetlenia zaznaczonych obszarów. Gdy uaktywnisz menu, zostanie pokazany pierwszy obrazek. Jeśli przesuniesz mysz nad któryś z jego wpisów, wówczas zaznaczony element jest kopiowany z drugiego obrazka w miejsce, na które wskazuje kursor myszy (drugi obrazek nigdy nie jest wyświetlany w całości).
Wpis w menu jest określony przez jego pozycję oraz rozmiar na obrazku (zobacz sekcję menu skórki by dowiedzieć się więcej).
Jedna ważna sprawa, która nie została jeszcze powiedziana: MPlayer musi wiedzieć co zrobić w momencie kliknięcia na przyciski, potencjometry i wpisy w menu, aby zadziałały. Zostało to zrobione za pomocą sygnałów (zdarzeń). Dla tych elementów musisz zdefiniować sygnały, które mają być wysłane podczas kliknięcia na nie.
Potrzebujesz następujących plików do stworzenia skórki:
Plik konfiguracyjny o nazwie skin mówi MPlayerowi jak połączyć różne części skórki w jedną całość i co zrobić, gdy kliknie się gdzieś na obszarze okna.
Plik graficzny tła w oknie głównym.
Obrazki dla elementów w głównym oknie (zawierające jeden lub więcej plików opisu czcionek potrzebnych do rysowania etykiet).
Obrazek wyświetlany w oknie ekranu (opcjonalnie)
Dwa obrazki dla menu skórki (potrzebne są tylko wtedy, gdy chcesz stworzyć takie menu).
Za wyjątkiem pliku konfiguracyjnego skórki, możesz nazwać wszystkie pliki tak, jak tego chcesz (ale weź pod uwagę, że pliki opisu czcionek muszą mieć rozszerzenie .fnt ).
Jak zostało powiedziane wcześniej, plik ten jest plikiem konfigurującym skórkę.
Obsługuje różne rodzaje wierszy; komentarze zaczynają wiersz znakiem
';
' (tylko spacje i znaki tabulacji są dopuszczone przed
';
').
Plik podzielony jest na sekcje. Każda sekcja opisuje skórkę dla każdej aplikacji i ma następującą formę:
section = nazwa sekcji
.
.
.
end
Obecnie jest tylko jedna aplikacja, a więc potrzebujesz tylko jedną sekcję 'section' - jej nazwa to movieplayer.
Wewnątrz tej sekcji każde z okien jest opisane przez blok następującej postaci:
window = nazwa okna
.
.
.
end
gdzie nazwa okna
może być jednym z poniższych łańcuchów:
main - dla okna głównego
sub - dla okna ekranu
menu - dla menu skórki
playbar - dla panelu odtwarzania
(Bloki sub i menu są opcjonalne - nie musisz tworzyć menu czy elementów skórki dla okna ekranu)
Wewnątrz bloku 'window' możesz definiować każdy element okna, wpisując linijkę tej postaci:
item = parametr
Gdzie item
jest łańcuchem, kóry identyfikuje typ elementu
GUI, parametr
jest wartością numeryczną lub tekstową (lub
listą takich wartości oddzielonych od siebie znakiem przecinka).
Złożenie powyższych elementów razem tworzy plik, który wygląda mniej więcej tak:
section = movieplayer window = main ; ... elementy okna głównego ... end window = sub ; ... elementy okna ekranu ... end window = menu ; ... elementy menu skórki ... end window = playbar ; ... elementy panelu odtwarzania ... end end
Nazwa pliku graficznego musi zostać podana bez żadnych nazw katalogów - obrazki
są szukane w katalogu Skin.
Możesz (ale nie musisz) określić rozszerzenia tego pliku. Jeśli plik taki nie
istnieje, MPlayer
spróbuje wczytać plik <nazwa pliku>.<rozszerzenie>,
gdzie png
oraz PNG
są brane jako
<rozszerzenie> (w tej właśnie kolejności). Pierwszy
pasujący plik będzie użyty.
Na koniec kilka słów na temat pozycjonowania. Okno główne oraz okno ekranu możesz
umieścić w różnych narożnikach ekranu poprzez ustawienie współrzędnych
X
i Y
. 0
to góra lub
lewa strona, -1
to środek, -2
to strona
prawa, lub dół, tak jak przedstawiono na poniższej ilustracji:
(0, 0)----(-1, 0)----(-2, 0) | | | | | | (0,-1)----(-1,-1)----(-2,-1) | | | | | | (0,-2)----(-1,-2)----(-2,-2)
Oto przykład wyjaśniający to lepiej. Przypuśćmy, że masz obrazek nazwany main.png, który został użyty dla okna głównego:
base = main, -1, -1
MPlayer spróbuje wczytać pliki main, main.png, main.PNG.
Poniżej znajduje się lista wpisów, które mogą być użyte w blokach
'window = main
'...'end
'
oraz 'window = playbar
' ... 'end
'.
base = obrazek, X, Y
Możesz określić obrazek tła, który będzie używany w oknie głównym.
Okno będzie widoczne na ekranie na współrzędnych X, Y
. Okno
będzie wielkości tego obrazka.
Współrzędne te nie działają na razie dla okna ekranu.
Obszary przezroczystości obrazka (kolor #FF00FF) będą widoczne jako czarne pod X serwerami niemającymi rozszerzenia XShape. Szerokość obrazka musi być podzielna przez 8.
button = obrazek, X, Y, szerokość, wysokość, sygnał
Umieści przycisk o rozmiarze szerokość
*
wysokość
na pozycji X
,
Y
. Określony sygnał
jest generowany
podczas kliknięcia na przycisk. Obrazek ten opisany przez
obrazek
musi składać się z trzech części jedna pod drugą
(stosownie do możliwych stanów przycisku), w ten oto sposób:
+---------------+ | wciśnięty | +---------------+ | zwolniony | +---------------+ | nieaktywny | +---------------+
decoration = enable|disable (włączona|wyłączona)
Włącza lub wyłącza dekorację menedżera okna w oknie głównym. Domyślnie jest wyłączona.
Nie działa to w oknie ekranu, gdyż nie ma takiej potrzeby.
hpotmeter = przycisk, szer_przycisku, wys_przycisku, faza, liczba_faz, domyślny, X, Y, szerokość, wysokość, sygnał
vpotmeter = przycisk, szer_przycisku, wys_przycisku, fazy, liczba_faz, domyślny, X, Y, szerokość, wysokość, sygnał
Umieszcza poziomo (hpotmeter) lub pionowo (vpotmeter) suwak o rozmiarze
szerokość
* wysokość
i pozycji
X,Y
. Obrazek może być podzielony na różne części dla różnych
faz suwaka (np. możesz mieć suwak głośności, który w zależności od położenia
zmienia kolor z zielonego (minimum) na czerwony (maksimum)).
hpotmeter
może być przyciskiem umieszczonym poziomo.
Jego parametry to:
przycisk
- obrazek użyty do przycisku
(musi posiadać trzy części jedna pod drugą tak, jak w przypadku
przycisku)
szer_przycisku
,wys_przycisku
- wielkość przycisku
fazy
- obrazek używany do określenie faz
dla hpotmeter. Wartość specjalna NULL
może być użyta,
jeśli nie chcesz żadnego obrazka. Obrazek musi być podzielony w pionie
na fragmenty poszczególnych faz
tak, jak poniżej:
+------------+ | faza #1 | +------------+ | faza #2 | +------------+ ... +------------+ | faza #n | +------------+
liczba_faz
- liczba faz znajdująca się na obrazku z fazami
domyślny
- domyślne ustawienie dla hpotmeter
(zakres od 0
do 100
)
X
,Y
- pozycja dla hpotmeter
szerokość
,wysokość
- szerokość i wysokość dla
hpotmeter
sygnał
- sygnał generowany podczas zmiany wartości hpotmeter
potmeter = fazy, liczba_faz, domyślny, X, Y, szerokość, wysokość, sygnał
hpotmeter
bez przycisku. (domyślam się, że chodzi o to, aby
nim kręcić, ale reaguje on tylko na poziome przesuwanie). Opis parametrów znajdziesz w części o
hpotmeter.
Parametr fazy
może mieć wartość NULL
, ale
jest to zupełnie bezużyteczne, gdyż nie widać wtedy położenia potencjometru.
font = plik_czcionek, id_czcionki
Definiuje czcionkę. plik_czcionek
jest nazwą pliku opisu
czcionki z rozszerzeniem .fnt (nie podawaj rozszerzenia w
tym miejscu). id_czcionki
jest używany do wskazywania
konkretnej czcionki (zobacz dlabel
oraz slabel). Można zdefiniować do 25
czcionek.
slabel = X, Y, id_czcionki, "tekst"
Umieszcza statyczną etykietę w pozycji X,Y
.
tekst
jest wyświetlany za pomocą czcionki wskazywanych przez
id_czcionki
. Tekst jest po prostu zwykłym łańcuchem znaków
(zmienne $x
nie działają), któru musi być umieszczony
pomiędzy podwójnym cudzysłowem (znak " nie może być częścią tekstu).
Etykieta wyświetlana jest za pomocą czcionki, na którą wskazuje
id_czcionki
.
dlabel = X, Y, długość, wyrównanie, id_czcionki, "tekst"
Umieszcza dynamiczną etykietę w pozycji X,Y
. Etykieta jest
nazywana dynamiczną, ponieważ jej tekst jest cyklicznie odświeżany. Maksymalną
długość etykiety określa parametr długość
(jej wysokość
określa wysokość czcionki). Jeśli tekst jest szerszy niż zdefiniowana długość,
będzie on przewijany, w przeciwnym wypadku będzie wyrównany w miejscu określonym
przez wartość parametru wyrównanie
: 0
oznacza do prawej, 1
to wyśrodkowanie, 2
to wyrównanie do lewej.
Wyświetlany tekst jest określony przez zmienną tekst
: musi
być zawarty pomiędzy podwójnymi cudzysłowami (znak " nie może być częścią
tekstu). Etykieta wyświetlana jest za pomocą czcionki, na którą wskazuje
parametr id_czcionki
. Możesz użyć następujących zmiennych w
tekście:
Zmienna | Znaczenie |
---|---|
$1 | czas odtwarzania w formacie hh:mm:ss |
$2 | czas odtwarzania w formacie mmmm:ss |
$3 | czas odtwarzania w formacie (godziny) hh |
$4 | czas odtwarzania w formacie (minuty) mm |
$5 | czas odtwarzania w formacie (sekundy) ss |
$6 | długość filmu w formacie hh:mm:ss |
$7 | długość filmu w formacie mmmm:ss |
$8 | długość filmu w formacieh:mm:ss |
$v | format głośności w %xxx.xx |
$V | format głośności xxx.xx format |
$b | format balansu w %xxx.xx |
$B | format balansu xxx.xx |
$$ | znak $ |
$a | oznaczenie zgodne z rodzajem typu pliku audio (nic: n ,
mono: m , stereo: t ) |
$t | numer ścieżki (na liście odtwarzania) |
$o | nazwa pliku |
$f | nazwa pliku pisana małymi literami |
$F | nazwa pliku pisana wielkimi literami |
$T | oznaczenie zgodne z rodzajem strumienia (plik: f ,
Video CD: v , DVD: d , URL: u ) |
$p | znak p (gdy film jest odtwarzany i czcionka ma znak p) |
$s | znak s (gdy film jest zatrzymany i czcionka ma znak s) |
$e | znak e (gdy film jest wstrzymany (pauza) i czcionka ma znak e) |
$x | rozdzielczość filmu (szerokość) |
$y | rozdzielczość filmu (wysokość) |
$C | nazwa używanego kodeka |
Zmienne $a, $T, $p, $s
oraz $e
zwracają znaki, które powinny być wyświetlane jako znaki specjalne (na przykład
e jest symbolem pauzy, która z reguły wygląda mniej więcej tak
||). Powinieneś mieć czcionkę dla zwykłych znaków oraz osobną czcionkę dla symboli.
Zobacz sekcję na temat symboli,
by dowiedzieć się więcej.
Poniższe wpisy mogą być użyte w bloku
'window = sub
' . . . 'end
' .
base = obrazek, X, Y, szerokość, wysokość
Wyświetla obrazek w oknie. Okno będzie widoczne na ekranie w miejscu oznaczonym
przez współrzędne X
, Y
(0,0
to lewy górny narożnik). Możesz użyć
-1
dla środka, -2
dla prawej strony
(X
) i dołu (Y
). Okno będzie mieć wielkość
obrazka. szerokość
oraz wysokość
oznaczają
wielkość okna; są one opcjonalne (jeśli nie są określone, okno będzie wielkości
takiej, jak obrazek).
background = R, G, B
Pozwala ustawić kolor tła. Jest to użyteczne jeśli obrazek jest mniejszy niż
okno. R
, G
oraz B
określają składniki kolorów czerwonego, zielonego i niebieskiego (każdy z nich
jest reprezentowany przez liczbę dziesiętną w zakresie od 0 do
255).
Jak wspomniano wcześniej, menu jest wyświetlane przy użyciu dwóch obrazków.
Zwykłe obszary menu są pobierane z obrazka określonego przez element
base
, podczas gdy obszary zaznaczone są pobierane z obrazka
wskazywanego przez element selected
. Musisz zdefiniować
pozycję i rozmiar każdego obszaru menu poprzez element menu.
Poniższe wpisy mogą być użyte w bloku:
'window = menu
'. . .'end
' .
base = obrazek
Obrazek dla zwykłych obszarów menu.
selected = obrazek
Obrazek pokazujący w menu wszystkie zaznaczone obszary.
menu = X, Y, szerokość, wysokość, sygnał
Definiuje pozycję i rozmiar obszarów menu na obrazku przy pomocy
X,Y
. sygnał
to zdarzenie wygenerowane
podczas zwolnienia przycisku myszy nad obszarem.
Jak wspomniano w sekcji na temat fragmentów skórki, czcionka jest definiowana przez obrazek i plik opisujący. Możesz umieścić znaki gdziekolwiek na obrazku, ale miej pewność, żeich pozycja i rozmiar jest dokładnie podana w pliku opisującym.
Plik opisujący czcionkę (o rozszerzeniu .fnt) może posiadać
linie komentarzy zaczynające się znakiem ';
'. Plik musi
zawierać linie w postaci:
image = obrazek
Gdzie
jest nazwą pliku
graficznego, który zawiera czcionkę (nie musisz dopisywać jego rozszerzenia).
obrazek
"char" = X, Y, szerokość, wysokość
X
oraz Y
określają pozycję znaku
char
na obrazku (0,0
to górny lewy narożnik).
szerokość
i wysokość
to rozmiar znaku
w pikselach.
Przykład: definiujemy znaki A, B, C przy użyciu pliku font.png.
; Może być "font" zamiast "font.png". image = font.png ; Trzy znaki wystarczą do tej demonstracji :-) "A" = 0,0, 7,13 "B" = 7,0, 7,13 "C" = 14,0, 7,13
Niektóre znaki mają specjalne znaczenie, gdy są zwracane przez pewne zmienne
używane w dlabel. Znaki te mogą być
wyświetlane jako symbole w ten sposób, że np. podczas odtwarzania strumienia DVD
widoczne jest ładne logo zamiast znaku 'd
'.
Poniższa tablica zawiera znaki używane do wyświetlania symboli (wymagają one oddzielnych czcionek).
Znak | Symbol |
---|---|
p | odtwarzanie |
s | stop |
e | pauza |
n | bez dźwięku |
m | dźwięk mono |
t | dźwięk stereo |
f | strumień z pliku |
v | strumień z Video CD |
d | strumień z DVD |
u | strumień z URL |
Tutaj znajdują się sygnały, które mogą być generowane przez przyciski, suwaki i elementy menu.
Niektóre sygnały mogą nie działać w oczekiwany sposób (lub nie działać w ogóle). Jak wiadomo, GUI jest jeszcze w fazie rozwoju.
Kontrola odtwarzania :
Przejdź do następnej pozycji na liście odtwarzania.
Tworzy przełącznik razem z evPlaySwitchToPause
.
Mogą być użyte do utworzenia wspólnego przycisku odtwarzania/pauzy.
Oba sygnały powinny być powiązane z przyciskami wyświetlonymi na tej samej
pozycji w oknie. Sygnał ten wstrzymuje odtwarzanie i wyświetla obrazek dla
przycisku evPlaySwitchToPause
(aby zaznaczyć,
że przycisk ten może być użyty do kontynuowania odtwarzania).
Rozpocznij odtwarzanie.
Przeciwieństwo evPauseSwitchToPlay
. Ten sygnał zaczyna
odtwarzanie oraz wyświetla obrazek dla przycisku
evPauseSwitchToPlay
(aby zaznaczyć, że przycisk ten może być
użyty ponownie do wstrzymania odtwarzania).
Przejdź do poprzedniej pozycji na liście odtwarzania.
Zatrzymaj odtwarzanie.
Przewijanie:
Przewiń do tyłu o 10 sekund.
Przewiń do tyłu o 1 minutę.
Przewiń do tyłu o 10 minut.
Przewiń do przodu o 10 sekund.
Przewiń do przodu o 1 minutę.
Przewiń do przodu o 10 minut..
Przewiń do pozycji (może być wykorzystane przez suwak; użyte są względne wartości (0-100%) suwaka).
Kontrola video:
Ustawia okno filmu na połowę rozmiaru.
Ustaw podwójny rozmiar okna z filmem.
Włącz/wyłącz tryb pełnoekranowy.
Ustaw typowy rozmiar okna z filmem.
Kontrola dźwięku:
Zmniejsz opóźnienie bufora dźwięku.
Zmniejsz balans.
Zmniejsz głośność
Zwiększ opóźnienie bufora dźwięku.
Zwiększ balans.
Zwiększ głośność.
Wycisz/przywróć dźwięk.
Ustawi balans (może być używane przez suwak; używana jest wartość względna (0-100%)).
Ustaw głośność (może być używane przez suwak; używana jest wartość względna (0-100%)).
Różne:
Otwórz okno "o programie".
Wyłącz aktualnie używane napisy.
Włącz/wyłącz korektor.
Wyłącz program.
Minimalizuj okno.
Wczytaj plik (poprzez otwarcie okna przeglądarki plików, gdzie możesz wybrać plik).
Tto samo co evLoad
, ale zacznij automatycznie odtwarzać
zaraz po wyborze pliku.
Wczytaj plik z napisami (z przeglądarki plików).
Wczytaj plik dźwiękowy (z przeglądarki plików).
Sygnał pusty - nic nie robi (może za wyjątkiem wersji z CVS:-)).
Otwórz/zamknij okno listy odtwarzania.
Spróbuj odczytać płytę ze wskazanego czytnika DVD.
Spróbuj odczytać płytę ze wskazanego czytnika CD.
Otwórz okno z ustawieniami.
Ustaw proporcje obrazu.
Wyświetl okienko dialogowe URL.
Otwórz okno przeglądarki skórek.
Zarys historyczny: GCC z serii 2.95 jest oficjalnym wydaniem GNU, a jego wersja 2.95.3 jest najbardziej wolna od błędów. Nigdy nie odnotowaliśmy problemów przy kompilacji, które moglibyśmy przypisać gcc-2.95.3. Zaczynając od Red Hat Linuksa 7.0, Red Hat dołączył poważnie zmodyfikowaną wersję CVS GCC do swojej dystrybucji i nazwał ją 2.96. Stało się tak, ponieważ GCC 3.0 nie było jeszcze ukończone, a potrzebowano kompilatora, który współdziałałby dobrze z wszystkimi platformami jakie były obsługiwane, włączając w to IA64 i s390. Dystrybutor Mandrake (teraz Mandriva) również poszedł w ślady Red Hata i zaczął dołączać GCC 2.96 do serii Linux-Mandrake 8.0.
Oświadczenie: Zespół GCC wyparł się jakichkolwiek powiązań z GCC 2.96 i wystosował oficjalną odpowiedź na GCC 2.96. Wielu developerów ze świata zaczęło mieć problemy z tym kompilatorem i kilka projektów, między innymi avifile zaczęło rekomendować inne rozwiązania. Inne interesujące linki: Krótka wiadomość o jądrze 2.4.17 i Forum Voy. MPlayer również ucierpiał z powodu okresowych problemów, które zostały rozwiązane przez przesiadkę na inną wersję GCC. Kilka projektów rozpoczęło implementację obejść dla pewnych spraw związanych z 2.96, ale my postanowiliśmy nie naprawiać błędów innych, szczególnie, że niektóre obejścia mogą ujemnie wpływać na wydajność.
GCC 2.96 nie pozwala na użycie symbolu |
(pipe - potok) w
komentarzu assemblera, ponieważ obsługuje zarówno składnię Intela jak i
AT&T, a symbol |
jest stosowany w wariancie Intela.
Problem polega na tym, że cały blok assemblera jest
po cichu ignorowany. Rzekomo zostało to już naprawione i
GCC wyświetla ostrzeżenie zamiast pomijania tego bloku.
Teraźniejszość: Red Hat twierdzi, że GCC 2.96-85 i kolejne zostały już poprawione. Sytuacja rzeczywiście poprawiła się, ciągle jednak dostajemy raporty o błędach na nasze listy dyskusyjne, które znikają wraz z przejściem na inny kompilator. W każdym razie, nie ma to już znaczenia. Mamy nadzieję, że dojrzewające GCC 3.x na dobre zakończy tę sprawę. Jeżeli chcesz kompilować z 2.96, przekaż flagę --disable-gcc-checking skryptowi configure. Pamiętaj, że możesz wtedy liczyć tylko na siebie i nie zgłaszaj żadnych błędów. Jeżeli to zrobisz, zostanie odebrany Ci dostęp do naszej listy dyskusyjnej, ponieważ mamy już bardziej niż dość bezsensownych kłótni na temat GCC 2.96. Proszę, zostaw tę sprawę w spokoju.
Jeżeli masz problemy z GCC 2.96, możesz pobrać paczki 2.96-85 z serwera ftp Red Hat lub skorzystać z pakietów 3.0.4, oferowanych z wersją 7.2 i kolejnymi. Możesz również ściągnąć pakiety gcc-3.2.3-37 (nieoficjalne, ale działają dobrze) i zainstalować je razem z gcc-2.96, które już masz. MPlayer wykryje je i użyje 3.2 zamiast 2.96. Jeżeli nie chcesz albo nie możesz użyć binarnych paczek, poniżej znajdziesz informacje, jak skompilować GCC 3 ze źródeł:
Wejdź na stronę z
serwerami lustrzanymi GCC
i ściągnij
gcc-core-XXX
.tar.gz, gdzie
XXX
to numer wersji. W pliku znajduje się kompletny
kompilator C, który wystarczy dla MPlayera. Jeżeli
chcesz mieć również C++, Java albo inne z zaawansowanych możliwości GCC,
gcc-XXX
.tar.gz może bardziej
pasować do twoich potrzeb.
Rozpakuj archiwum, wykonując
tar -xvzf gcc-core-XXX
.tar.gz
GCC nie jest budowane w katalogu źródłowym jak większość programów, ale potrzebuje katalogu kompilacji poza katalogiem ze źródłami. Będziesz musiał stworzyć katalog przez
mkdir gcc-build
Dalej możesz przejść do procedury konfiguracyjnej i katalogu budowy, ale musisz skonfigurować z katalogu źródłowego:
cd gcc-build
../gcc-3.XXX
/configure
Skompiluj GCC, wykonując tę komendę w katalogu kompilacji:
make bootstrap
Teraz możesz zainstalować GCC (jako superużytkownik), wpisując
make install
MPlayer zawierał wcześniej źródła z projektu OpenDivX, który zabrania redystrybucji binariów. Kod ten został usunięty w wersji 0.90-pre1, a pozostawiony plik divx_vbr.c, który pochodzi ze źródeł OpenDivX, został objęty licencją GPL przez jego autorów w wersji 0.90pre9. Możesz teraz bez obaw tworzyć pakiety binarne.
Kolejną przeszkodą przy redystrybucji binariów była optymalizacja dla konkretnej architektury CPU podczas kompilacji. MPlayer obsługuje wykrywanie CPU podczas uruchamiania (podaj opcję --enable-runtime-cpudetection dla skryptu configure). Jest ona domyślnie wyłączona, ponieważ wymaga poświęcenia małej części mocy obliczeniowej procesora. Jednak możliwe jest teraz tworzenie binariów, które będą działały na różnych typach procesorów kompatybilnych z Intelem.
Nie podoba nam się fakt, że nVidia dostarcza wyłącznie sterowniki binarne (dla XFree86), które często zawierają błędy. Dostaliśmy wiele zgłoszeń na mplayer-users o ich błędach, marnej jakości, braku stabilności oraz słabym wsparciu dla użytkownika i eksperta. Wiele z tych problemów/kwestii pojawia się ciągle. nVidia skontaktowała się z nami ostatnio i stwierdziła, że te błędy nie istnieją, a przyczyną braku stabilności są wadliwe układy AGP, nie otrzymali również żadnych zgłoszeń o błędach w sterowniku (takich jak purpurowa linia). Jeżeli masz problem ze swoją kartą nVidia, radzimy zainstalować najnowszą wersję sterowników nVidia i/lub kupno nowej płyty głównej lub poprosić nVidię o otwarte sterowniki. W każdym razie, jeżeli używasz sterowników binarnych nVidia i stajesz przed problemami z nimi związanymi, bądź świadom, że nie otrzymasz zbyt dużej pomocy z naszej strony, ponieważ nie mamy dużej możliwości jej udzielenia.
Joe Barr stał się mało popularny w grudniu 2001, pisząc niezbyt pochlebną recenzję MPlayera zatytułowaną MPlayer: Projekt z piekła rodem. Miał problemy z jego instalacją. Stwierdził również, że developerzy byli mało przyjaźni, a dokumentacja niekompletna i ubliżająca. Sam oceń. Następnie negatywnie pisał o Arpim w swoich 10 prognozach dla Linuksa na rok 2002. W podobnej recenzji xine zatytułowanej Strumieniowy odtwarzacz mediów dla reszty z nas ciągle wzbudzał kontrowersje. Jak na ironię, pod koniec swojego artykułu cytuje krótką wymianę zdań między nim a Günterem Bartschem, twórcą xine, która idealnie podsumowuje całą sprawę:
Jednak powiedział też, że był "zaskoczony" moim artykułem o Mplayerze i uważa go za niesprawiedliwy, przypominając, że jest to projekt wolnego oprogramowania. "Jeśli Ci się nie podoba," powiedział Bartsch, "nie ma przeszkód, żebyś go nie używał."
Prawie 2 lata później w październiku 2003 napisał kolejną recenzję zatytułowaną Mplayer raz jeszcze (umyślnie zachowana zła pisownia). Zawarty jest w niej następujący wniosek:
Muszę przyznać, że znacznie zwiększyła się liczba możliwości, poprawiła się wydajność i dokumentacja. Ciągle instalacja nie jest najłatwiejsza na świecie, szczególnie dla początkujących, ale jest trochę lepiej niż było.
i
Ale co najważniejsze, nie dochodzą do mnie komentarze o oburzeniu użytkowników. Myślę, że należy mi się za to uznanie, nawet jeżeli tylko ja tak twierdzę. Arpi i reszta zespołu pracującego nad projektem muszą uważać tak samo, ponieważ zatroszczyli się o wzmiankę o mnie w specjalnym rozdziale ich dokumentacji dołączonej w pliku tar. Jak mówiłem na początku, niektóre rzeczy się nie zmieniają.
Nie możemy sprecyzować naszego stanowiska wobec Joe Barr'a lepiej: "Ciągle nie jest to najuczciwszy i najlepiej opracowany artykuł na świecie, ale jest lepszy niż kiedyś." Mamy nadzieję, że kiedyś przypadniemy sobie do gustu. Jednak uznanie za dojrzałość możemy tylko przypisać starzeniu się i po części zmęczeniu bezsensownymi kłótniami.