8.3. Dekodery MPEG

8.3.1. Wejście i wyjście DVB

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 z 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 mpegpes twójplik.roz
mplayer -ao mpegpes -vo mpegpes -vf expand twó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 scale=szerokość:wysokość, z wybraną wysokością i szerokością do 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 (proporcje 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ś ułożyć 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.

Jeśli MPlayer często uskarża się na

Too many video/audio packets in the buffer

(za dużo pakietów video/audio w buforze) albo jeśli zauważysz rosnący brak synchronizacji między audio a video spróbuj użyć demuksera MPEG-TS z libavformat, dodając -demuxer lavf -lavfdopts probesize=128 do wiersza poleceń.

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), korzystają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).

Jeżeli Twój ~/.mplayer/menu.conf zawiera wpis <dvbsel>, taki jak ten w przykładowym pliku etc/dvb-menu.conf (którym możesz nadpisać ~/.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 nadaje się do użytku 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 wbudowanej obsługi OSD przez karty 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).

8.3.2. DXR2

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

-vo dxr2

Włącz wyjście TV.

-vo dxr2:x11 lub -vo dxr2:xv

Włącz wyjście nakładki w X11.

-dxr2 <opcja1:opcja2:...>

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.

8.3.3. DXR3/Hollywood+

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

-vo dxr3:prebuf:sync:norm=x: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.

-ao oss:/dev/em8300_ma-X

Ustawia wyjście audio, gdzie X jest numerem urządzenia (0 jeżeli pojedyncza karta).

-af resample=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).

-vf lavc

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). Spójrz na stronę man, aby uzyskać więcej informacji o -vf lavc. 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.

-vf expand=-1:-1:-1:-1:1

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

-ac hwac3

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.