2.1. Obsługiwane formaty
Poprzedni | Rozdział 2. Możliwości | Następny

## 2.1. Obsługiwane formaty

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 MPEG1.

Widzisz, kodek to nie to samo, co format pliku. Przykłady kodeków video: MPEG1, MPEG2, 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 MPEG1 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 MPEG1 w pliku AVI. FFmpeg i MEncoder potrafią tworzyć takie pliki.

### 2.1.1. Formaty video

#### 2.1.1.1. Pliki MPEG

Pliki MPEG spotykamy w różnych kształtach:

- MPG: To jest najbardziej podstawowa forma plików MPEG. Zawiera video MPEG1 i audio MP2 (MPEG-1 warstwa 2) lub rzadziej MP1.
- DAT: To dokładnie ten sam format, co MPG, tylko z innym rozszerzeniem. Jest on używany na płytach Video CD. W związku ze sposobem tworzenia płyt VCD i struktury Linuksa, pliki DAT nie mogą być odtwarzane ani kopiowane z VCD jak zwykłe pliki. Musisz użyć opcji `vcd://` by odtworzyć Video CD.
- VOB: To format pliku MPEG na płytach DVD. Jest to to samo, co MPG, plus możliwość umieszczenia w nim napisów lub dźwięku nie-MPEG (AC3). Zawiera zakodowany strumień obrazu MPEG2 i przeważnie dźwięk AC3, lecz dozwolone są także DTS, MP2 i nieskompresowane LPCM. Przejrzyj sekcję DVD!

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`

#### 2.1.1.2. Pliki AVI

Zaprojektowane przez Microsoft pliki AVI (Audio Video Interleaved) to szeroko stosowany wielofunkcyjny format aktualnie używany głównie dla video 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.

### Notatka

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:

- Z przeplotem: Zawartość audio i video jest przepleciona. Jest to standardowy typ - zalecany i przeważnie używany. Niektóre narzędzia tworzą przeplatane pliki AVI ze złą synchronizacją. MPlayer wykrywa je jako przeplatane, ale powoduje to utratę synchronizacji A/V (najczęściej przy skokach). Pliki te powinny być odtwarzane jako bez przeplotu (opcja `-ni`).
- Bez przeplotu: Najpierw umieszczony jest cały strumień video, a potem cały strumień audio. Wymaga to więc dużo "chodzenia" po pliku, co powoduje, że trudno jest je odtwarzać z sieci lub z CD-ROMów.

MPlayer obsługuje dwie metody synchronizacji dla plików AVI:

- oparte na bps (bitach na sekundę): Oparta jest na liczbie bitów/próbek na sekundę strumieni audio/video. Metoda ta jest stosowana przez większość odtwarzaczy, włączając w to avifile oraz Windows Media Player. Pliki z uszkodzonymi nagłówkami i pliki z dźwiękiem VBR (Variable Bitrate - zmienne tempo bitowe) utworzone za pomocą niekompatybilnego z VBR programu kodującego spowodują desynchronizację A/V przy tej metodzie (głównie przy skokach).
- oparte na przeplocie: Nie korzysta z informacji o tempie bitowym z nagłówka, lecz zamiast tego używa względnej pozycji przeplecionych fragmentów audio i video, dzięki czemu źle zakodowane pliki z dźwiękiem VBR można normalnie odtwarzać.

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.

#### 2.1.1.3. Pliki ASF/WMV

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`.

#### 2.1.1.4. Pliki QuickTime/MOV

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 MPEG4 wybrała QuickTime jako zalecany format pliku dla MPEG4, 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`).

### Notatka

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.

#### 2.1.1.5. Pliki VIVO

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.

#### 2.1.1.6. Pliki FLI

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.

#### 2.1.1.7. Pliki RealMedia (RM)

Tak, MPlayer potrafi czytać (demultipleksować) pliki RealMedia (`.rm`). Skoki działają, ale musisz dodatkowo podać opcję `-forceidx` (format obsługuje klatki kluczowe). Tu znajdziesz listę obsługiwanych kodeków RealVideo i RealAudio.

#### 2.1.1.8. Pliki NuppelVideo

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) wszystkie. Działają również skoki.

#### 2.1.1.9. pliki yuv4mpeg

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.

#### 2.1.1.10. Pliki FILM

Format ten jest używany przez stare gry CD-ROM na Sega Saturn.

#### 2.1.1.11. Pliki RoQ

Pliki RoQ to pliki multimedialne używane w niektórych grach ID, np. Quake III czy Return to Castle Wolfenstein.

#### 2.1.1.12. Pliki OGG/OGM

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ć.

#### 2.1.1.13. Pliki SDP

SDP to standardowy format IETF dla opisu strumieni RTP audio i/lub video. (Wymagane jest "LIVE.COM Streaming Media".)

#### 2.1.1.14. Pliki PVA

PVA to format MPEGo-podobny używany przez oprogramowanie kart DVB (np.: MultiDec lub WinTV pod Windows).

Specyfikacje PVA są do pobrania pod następującym adresem: http://www.technotrend.de/download/av_format_v1.pdf

#### 2.1.1.15. Pliki GIF

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.

### 2.1.2. Formaty audio

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.

#### 2.1.2.1. Pliki MP3

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.

#### 2.1.2.2. Pliki WAV

#### 2.1.2.3. Pliki OGG/OGM (Vorbis)

Wymaga poprawnie zainstalowanych bibliotek `libogg` i `libvorbis`.

#### 2.1.2.4. Pliki WMA/ASF

#### 2.1.2.5. Pliki MP4

#### 2.1.2.6. CD audio

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.

#### 2.1.2.7. XMMS

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`

Poprzedni | Początek rozdziału | Następny
Rozdział 2. Możliwości | Spis treści | 2.2. Wspierane kodeki