Copyright © 2000-2022 MPlayer team
License
MPlayer is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.
MPlayer is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with MPlayer; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
libcaca
– Barevná ASCII Art knihovna
libavcodec
Xvid
x264
kodekemVideo For Windows
Pokud instalujete poprvé: měli byste si přečíst celou dokumentaci odtud až do konce kapitoly Instalace a následovat linky, které naleznete. Pokud máte jiné dotazy, vraťte se zpět na Obsah a vyhledejte si příslušnou část. Přečtěte si FAQ, nebo zkuste grep na souborech. Odpovědi na většinu otázek by měly být někde tady, zbytek byl pravděpodobně probrán v některé z našich e-mailových konferencí.
MPlayer je multimediální přehrávač pro Linux (běží na mnoha jiných Unixech a ne-x86 CPU, viz Ports). Přehraje většinu MPEG, VOB, AVI, OGG/OGM, VIVO, ASF/WMA/WMV, QT/MOV/MP4, FLI, RM, NuppelVideo, yuv4mpeg, FILM, RoQ, PVA, Matroska souborů s podporou mnoha nativních XAnim, RealPlayer a Win32 DLL kodeků. Můžete sledovat VideoCD, SVCD, DVD, 3ivx, RealMedia, Sorenson, Theora a také MPEG-4 (DivX) filmy. Další skvělou vlastností MPlayeru je velké množství podporovaných výstupních rozhraní. Pracuje s X11, Xv, DGA, OpenGL, SVGAlib, fbdev, AAlib, libcaca, DirectFB, rovněž můžete použít GGI a SDL (a takto i jejich ovladače) a také některé nízkoúrovňové ovladače konkrétních karet (pro Matrox, 3Dfx a Radeon, Mach64, Permedia3)! Většina z nich podporuje softwarové nebo hardwarové škálování (změna velikosti obrazu), takže si můžete užít video na celé obrazovce. MPlayer podporuje zobrazování přes některé hardwarové MPEG dekódovací karty, jako je DVB a DXR3/Hollywood+. A což teprve velké krásné vyhlazené a stínované titulky (14 podporovaných typů) spolu s Evropskými/ISO 8859-1,2 (Bulharskými, Anglickými, Českými, atd), Cyrilickými a Korejskými fonty a displej na obrazovce (OSD)?
Přehrávač je pevný jako skála při přehrávání poškozených MPEG souborů (použitelné pro některá VCD), také přehrává špatné AVI soubory, které nelze přehrávat ani věhlasným windows media playerem. Dokonce lze přehrávat i AVI bez indexu a navíc můžete jejich indexy dočasně obnovit pomocí volby -idx, nebo trvale pomocí MEncoderu, což umožní převíjení! Jak vidíte, kvalita a stabilita jsou těmi nejdůležitějšími vlastnostmi, rychlost je ovšem také skvělá. Rovněž máme účinný systém filtrů pro manipulaci s videem i se zvukem.
MEncoder (MPlayerův Filmový
Enkodér) je jednoduchý filmový enkodér, navržený k enkódování
MPlayerem přehrávatelných filmů
(AVI/ASF/OGG/DVD/VCD/VOB/MPG/MOV/VIV/FLI/RM/NUV/NET/PVA)
do jiných MPlayerem přehrávatelných formátů (viz níže).
Může enkódovat různými kodeky, třeba MPEG-4 (DivX4)
(jedním nebo dvěma průchody), libavcodec
,
PCM/MP3/VBR MP3
audia.
Vlastnosti MEncoderu
Enkódování ze široké řady formátů souboru a dekodérů MPlayeru
Enkódování pomocí všech FFmpeg
libavcodec
kodeků
Video enkódování z V4L kompatibilních TV tunerů
Enkódování/multiplexování do prokládaných AVI souborů se správným indexem
Tvorba souborů z externího audio proudu
1, 2 nebo 3 průchodové enkódování
VBR MP3 zvuk
VBR MP3 zvuk není vždy přehráván dobře přehrávači pro windows!
PCM zvuk
Kopírování datového proudu
Vstupní A/V synchronizace (založená na PTS, lze ji vypnout pomocí volby -mc 0)
Korekce snímkové rychlosti pomocí volby -ofps (užitečné při enkódování 30000/1001 fps VOB do 24000/1001 fps AVI)
Používá výkonný systém filtrů (ořez, expanze, postproces, rotace, škálování (změna velikosti), konverze rgb/yuv)
Umí enkódovat DVD/VOBsub A textové titulky do výstupního souboru
Umí ripovat DVD titulky do VOBsub formátu
MPlayer a MEncoder mohou být distribuovány za podmínek stanovených v GNU General Public License Version 2.
Jednoduchý návod na instalaci naleznete v souboru README. Přečtěte si nejprve tento soubor a poté se vraťte zde pro další podrobnosti.
V této části vás provedeme procesem kompilace a konfigurace programu MPlayer. Není to snadné, ale nemusí to být nutně těžké. Pokud zaznamenáte rozdílné chování, než zde popisuji, prostudujte si prosím tuto dokumentaci a naleznete své odpovědi.
binutils – doporučená verze je 2.11.x.
gcc – doporučené verze jsou 2.95 a 3.4+. 2.96 a 3.0.x jsou známy generováním vadného kódu, 3.1 a 3.2 měly rovněž problémy, 3.3 jen okrajově. Na PowerPC použijte 4.x.
Xorg/XFree86 – doporučená verze je 4.3 a vyšší. Ujistěte se, že máte nainstalovány vývojové (dev) balíčky, jinak to nebude pracovat. Ne vždy potřebujete X, některá výstupní video rozhraní pracují i bez nich.
make – doporučená verze je 3.79.x nebo vyšší. Pro sestavení XML dokumentace potřebujete 3.80.
FreeType – vyžaduje se aspoň verze 2.0.9 pro OSD a titulky.
ALSA – volitelnmá, pro podporu zvukového výstupu do ALSA. Vyžaduje se aspoň verze 0.9.0rc4.
libjpeg – vyžadována pro volitelné JPEG video výstupní rozhraní
libpng – vyžadována pro volitelné PNG video výstupní rozhraní
directfb – volitelný, 0.9.13 nebo pozdější vyžadovaný pro directfb video výstupní rozhraní
lame – doporučená verze 3.90 a vyšší, vyžadovaný pro enkódování MP3 zvuku v MEncoderu.
zlib – doporučená, nutná pro komprimovanou MOV hlavičku a podporu PNG.
LIVE555 Streaming Media – volitelná, nutná pro přehrávání RTSP/RTP datových proudů.
cdparanoia – volitelná, pro podporu CDDA
libxmms – volitelná, pro podporu XMMS vstupního pluginu. Vyžadujeme aspoň 1.2.7.
libsmb – volitelná, pro podporu SMB sítí.
Rozhodněte se zda potřebujete GUI. Pokud ano, přečtěte si před kompilací sekci GUI.
Pokud chcete nainstalovat MEncoder (náš skvělý všestranný enkodér), přečtěte si sekci MEncoder.
Pokud máte V4L kompatibilní TV tuner kartu, a přejete si sledovat/grabovat filmy MPlayerem, přečtěte si sekci TV vstup.
Pokud máte V4L kompatibilní radio tuner kartu a přejete si poslouchat nebo zachytávat zvuk MPlayerem, přečtěte si sekci radio.
Připravena k použití je podpora pěkného OSD Menu. Přečtěte si sekci OSD menu.
Pak přeložte MPlayer:
./configure make make install
V tuto chvíli máte MPlayer připraven k použití. Ověřte si, zda nemáte soubor codecs.conf v domovském adresáři (~/.mplayer/codecs.conf) ze staré verze MPlayeru. Pokud jej najdete, odstraňte ho.
Uživatelé Debianu si mohou vyrobit .deb balíček, je to velmi jednoduché. Jen spusťte binárku
fakeroot debian/rules
v MPlayerově kořenovém adresáři. Podrobnosti viz Balíčkování Debianu.
Vždy si prostudujte výstup skriptu ./configure, a soubor config.log, které obsahují informace o tom co bude zakompilováno a co ne. Také můžete chtít vidět soubory config.h a config.mak. Pokud máte některé knihovny nainstalovány, ale nebyly detekovány skriptem ./configure, pak ověřte, zda máte příslušné hlavičkové soubory (obvykle -dev balíčky) a jejich verze jsou shodné. Soubor config.log vám obvykle prozradí co vám chybí.
Ačkoli to není podmínkou, měli byste mít nainstalovány fonty pro funkci OSD a zobrazování titulků. Doporučujeme nainstalovat soubor fontu TTF a nařídit MPlayeru jej používat. Detaily viz sekce Titulky a OSD.
GUI potřebuje GTK 1.2.x nebo GTK 2.0 (není plně GTK, ale panely jsou).
Skiny jsou uloženy v PNG formátu,
takže GTK, libpng
(a jejich příslušenství, obvykle nazývané
gtk-dev
a libpng-dev
) musí být nainstalovány.
Můžete jej zakompilovat předáním volby --enable-gui skriptu
./configure. Aktivaci GUI režimu pak provedete spuštěním
binárky gmplayer.
Protože MPlayer nemá přibalen žádný skin, budete si
muset nějaký stáhnout abyste mohli používat GUI. Viz naši download stránku.
Skiny by měly být rozbaleny do obvyklého systémového adresáře
($PREFIX/share/mplayer/skins),
nebo do $HOME/.mplayer/skins.
MPlayer ve výchozím stavu hledá v těchto adresářích
podadresář jménem default, ale
můžete použít volbu -skin nový_skin
nebo direktivu skin=nový_skin
konfiguračního souboru pro
použití skinu v adresáři */skins/nový_skin.
Abyste si mohli užívat OSD a titulků, musíte MPlayeru sdělit, který font má použít. Může to být jakýkoli TrueType font, nebo speciální bitmapový font. TrueType však doporučujeme, jelikož vypadají lépe, mohou být vhodně škálovány na rozměr filmu a lépe si poradí s různými znakovými sadami.
Existují dva způsoby, jak zprovoznit TrueType fonty. První je použít volbu -font pro volbu TrueType fontu z příkazového řádku. Tato volba bude dobrým kandidátem pro umístění do konfiguračního souboru (detaily viz manuál). Druhá je vytvoření symlinku s názvem subfont.ttf na soubor s vámi vybraným fontem. Buď
ln -s /cesta/k/sample_font.ttf
~/.mplayer/subfont.ttf
pro každého uživatele zvlášť, nebo systémový:
ln -s /cesta/k/sample_font.ttf
$PREFIX/share/mplayer/subfont.ttf
Pokud byl MPlayer kompilován s podporou
fontconfig
, výše uvedené nebude
fungovat, místo toho -font očekává
fontconfig
název fontu
a jako výchozí bere bezpatkový font. Příklad:
mplayer -font'Bitstream Vera Sans'
anime.mkv
Seznam fontů známých
fontconfig
u,
získáte pomocí fc-list.
Pokud se z nějakého důvodu rozhodnete nebo potřebujete použít bitmapové fonty, stáhněte si sadu z našich stránek. Můžete si vybrat mezi různými ISO fonty a několika sadami fontů zaslaných uživateli v různých znakových sadách.
Rozbalte stažený archiv do ~/.mplayer nebo $PREFIX/share/mplayer. Pak přejmenujte nebo slinkujte jeden z rozbalených adresářů na font, například:
ln -s ~/.mplayer/arial-24
~/.mplayer/font
ln -s $PREFIX/share/mplayer/arial-24
$PREFIX/share/mplayer/font
Fonty by měly mít vhodný font.desc soubor, který mapuje unicode pozice ve fontu na aktuální znakovou sadu textu titulků. Dalším řešením je mít titulky kódované v UTF-8 a použít volbu -utf8, nebo pojmenujte soubor s titulky stejně jako film a dejte mu příponu .utf a umístěte jej do adresáře s filmem.
MPlayer má plně uživatelsky definovatelné rozhraní OSD Menu (nabídka na obrazovce).
Menu Preferences NENÍ v současnosti IMPLEMENTOVÁNO!
Instalace
zkompilujte MPlayer s volbou --enable-menu předanou do ./configure
ujistěte se že máte nainstalován OSD font
zkopírujte etc/menu.conf do svého .mplayer adresáře
zkopírujte etc/menu.conf do svého .mplayer adresáře, nebo do systémového MPlayer konfiguračního adresáře (výchozí: /usr/local/etc/mplayer)
zkontrolujte a upravte input.conf, abyste zapnuli klávesy pro pohyb v menu (to je popsáno zde).
spusťte MPlayer podle následujícího příkladu:
mplayer -menu file.avi
stiskněte některou z kláves, kterou jste definovali
Xvid je free software MPEG-4 ASP
kompatibilní video kodec, jenž má podporu pro dvouprůchodové enkódování a
plně podporuje MPEG-4 ASP.
Poznamenejme, že Xvid není nutný pro dekódování Xvidem enkódovaného videa.
Jako výchozí je používán libavcodec
,
jelikož poskytuje vyšší rychlost.
Instalace Xvid
Stejně jako většina svobodného software je dostupný ve dvou verzích:
oficiálně uvolněné verzi
a verzi CVS.
V současnosti je CVS verze obvykle dostatečně stabilní pro použití, jelikož
většinou obsahuje opravy chyb, které zůstaly po vydání.
Zde uvádíme postup pro zprovoznění Xvid
CVS v MEncoder:
cvs -z3 -d:pserver:[email protected]:/xvid login
cvs -z3 -d:pserver:[email protected]:/xvid co xvidcore
cd xvidcore/build/generic
./bootstrap.sh
./configure
Zde můžete přidat nějaké volby (prostudujte si výstup příkazu ./configure --help).
make && make install
Znovu zkompilujte MPlayer s volbami.
x264
is a library for creating H.264 video.
MPlayer sources are updated whenever
an x264
API change
occurs, so it is always suggested to use
MPlayer from Subversion.
If you have a GIT client installed, the latest x264 sources can be gotten with this command:
git clone git://git.videolan.org/x264.git
Then build and install in the standard way:
./configure && make && make install
Now rerun ./configure for
MPlayer to pick up
x264
support.
Adaptivní Multi-Rate kodek pro mluvené slovo je používán třetí generací (3G) mobilních telefonů. Referenční implementace je dostupná od The 3rd Generation Partnership Project (zdarma pro osobní použití). Pro zapnutí podpory si stáhněte podpůrné knihovny pro AMR-NB a AMR-WB a následujte instrukce na stránce. Potom znovu zkompilujte MPlayer.
V MPlayer jsou zabudovány tři metody časování.
Abyste použili starou metodu, nemusíte dělat
vůbec nic. Ta používá usleep()
pro hlídání
A/V synchronizace s přesností +/- 10ms. Ačkoli někdy může být synchronizace
hlídána ještě jemněji.
Kód nového časovače používá pro tento účel RTC
(hodiny reálného času), protože mají přesné 1ms časovače.
Volba -rtc to zapíná, je však nutné vhodně nastavené jádro.
Pokud používáte jádro 2.4.19pre8 nebo pozdější, můžete nastavit maximální RTC
kmitočet pro normální uživatele pomocí systému souborů
/proc
. Použijte jeden z těchto dvou příkazů pro zapnutí RTC
pro obyčejné uživatele:
echo 1024 > /proc/sys/dev/rtc/max-user-freq
sysctl dev/rtc/max-user-freq=1024
Můžete tuto volbu učinit trvalou přidáním druhého příkazu do /etc/sysctl.conf.
Efektivitu nového časovače uvidíte na stavovém řádku. Funkce power managementu některých notebookových BIOSů s speedstep procesory špatně komunikují s RTC. Audio a video se mohou rozejít. Zdá se že pomáhá připojení vnějšího napájení před zapnutím notebooku. V některých hardwarových kombinacích (zjištěno během používání ne-DMA DVD mechaniky na ALi1541 boardu) způsobuje použití RTC časování trhavé přehrávání. Pak doporučujeme použít třetí metodu.
Třetí kód časovače se zapíná volbou -softsleep. Je stejně efektní jako RTC, ale nepoužívá RTC. Na druhou stranu více zatěžuje CPU.
MPlayer využívá komplexní strukturu voleb. Ta sestává z globálních voleb uváděných jako první, například:
mplayer -vfm 5
a voleb zapisovaných za jménem souboru, které se projeví pouze u tohoto jména souboru/URL/čehokoli, například:
mplayer -vfm 5film1.avi
film2.avi
-vfm 4
Můžete seskupovat jména souborů/adresy URL pomocí {
a
}
. Toho se dá využít s volbou -loop:
mplayer { 1.avi -loop 2 2.avi } -loop 3
Výše uvedený příkaz přehraje soubory v tomto pořadí: 1, 1, 2, 1, 1, 2, 1, 1, 2.
Přehrávání souboru:
mplayer [volby
] [cesta
/]soubor
Jiný způsob přehrání souboru:
mplayer [volby
]file:///uri-eskejpovaná-cesta-k-souboru
Přehrávání více souborů:
mplayer [výchozí volby
] [cesta
/]soubor1
[volby pro soubor1
]soubor2
[volby pro soubor2
] ...
Přehrávání VCD:
mplayer [volby
] vcd://číslo_stopy
[-cdrom-device/dev/cdrom
]
Přehrávání DVD:
mplayer [volby
] dvd://číslo_titulu
[-dvd-device/dev/dvd
]
Přehrávání z WWW:
mplayer [volby
] http://doména.com/soubor.asf
(rovněž lze použít playlisty)
Přehrávání z RTSP:
mplayer [volby
] rtsp://server.priklad.com/JmenoProudu
Příklady:
mplayer -vo x11/mnt/Filmy/Kontakt/kontakt2.mpg
mplayer vcd://2
-cdrom-device/dev/hdc
mplayer -afm 3/mnt/DVDtrailery/alien4.vob
mplayer dvd://1
-dvd-device/dev/hdc
mplayer -abs 65536 -delay -0.4 -nobps~/filmy/test.avi
MPlayer umí zobrazovat titulky spolu s filmem. V současnosti podporuje tyto formáty:
VOBsub
OGM
CC (closed caption)
MicroDVD
SubRip
SubViewer
Sami
VPlayer
RT
SSA
PJS (Phoenix Japanimation Society)
MPsub
AQTitle
MPlayer umí vyextrahovat výše uvedené formáty titulků (s výjimkou prvních třech) do následujících cílových formátů zadáním příslušných voleb:
MPsub: -dumpmpsub
SubRip: -dumpsrtsub
MicroDVD: -dumpmicrodvdsub
JACOsub: -dumpjacosub
Sami: -dumpsami
MEncoder umí vyextrahovat DVD titulky do formátu VOBsub.
Volby příkazového řádku se pro různé formáty mírně liší:
VOBsub titulky.
VOBsub titulky se skládají z velkého (řádově megabajty) .SUB
souboru a volitelného .IDX a/nebo .IFO
souboru. Pokud máte soubory jako
sample.sub
,
sample.ifo
(volitelný),
sample.idx
– musíte předat
MPlayeru volby -vobsub sample
[-vobsubid id
]
(volitelně s plnou cestou). Volba -vobsubid je jako
-sid pro DVD, můžete jí vybírat mezi titulkovými stopami
(jazyky). Je-li -vobsubid vynechána, pak se
MPlayer pokusí použít jazyky zadané volbou
-slang a při selhání použije
langidx
v .IDX
souboru. Pokud selže i zde, nebudou titulky.
Ostatní titulky.
Ostatní formáty tvoří jediný textový soubor obsahující časování,
umístění a textovou část. Použití: máte-li soubor jako
sample.txt
,
musíte předat volbu -sub
sample.txt
(volitelně s plnou cestou).
Úpravy časování a umístění titulků:
sec
Opozdí titulky o sec
sekund.
Může být i záporné. Hodnota je přidána k čítači pozice ve filmu.
RYCHLOST
Nastavuje rychlost ve snímcích/sek titulkového souboru (desetinné číslo).
0-100
Nastavuje pozici titulků.
Pokud se vám zvětšuje rozdíl mezi filmem a titulky, při použití titulkového souboru formátu MicroDVD, nejspíš se snímková rychlost titulků a filmu liší. Poznamenejme, že MicroDVD formát používá pro časování absolutní čísla snímků, ale není v něm informace o snímkové rychlosti, a proto byste měli s tímto formátem používat volbu -subfps. Chcete-li tento problém vyřešit trvale, musíte manuálně převést snímkovou rychlost souboru s titulky. MPlayer může převod udělat za vás:
mplayer -dumpmicrodvdsub -fpsfps_titulků
-subfpsavi_fps
\ -subsoubor_s_titulky
dummy.avi
O DVD titulcích si přečtěte v sekci DVD.
MPlayer má plně konfigurovatelnou, příkazy řízenou, ovládací vrstvu, která vám umožní ovládat MPlayer pomocí klávesnice, myši, joysticku nebo dálkového ovládače (používající LIRC). Úplný seznam ovládacích prvků na klávesnici naleznete v man stránce.
MPlayer umožňuje přiřadit jakoukoli klávesu jakémukoli
příkazu MPlayeru pomocí jednoduchého konfiguračního
souboru.
Syntaxe sestává z názvu klávesy následovaného příkazem. Výchozí umístění
konfiguračního souboru je
$HOME/.mplayer/input.conf ale můžete jej potlačit použitím
volby -input konfig
(relativní cesty jsou vztaženy k $HOME/.mplayer).
Úplný seznam podporovaných jmen kláves dostanete příkazem mplayer -input keylist a úplný seznam dostupných příkazů příkazem mplayer -input cmdlist.
Příklad 3.1. Jednoduchý vstupní ovládací soubor
## ## Vstupní soubor ovládání MPlayeru ## RIGHT seek +10 LEFT seek -10 - audio_delay 0.100 + audio_delay -0.100 q quit > pt_step 1 < pt_step -1 ENTER pt_step 1 1
Linux Infrared Remote Control – použijte jednoduše vyrobitelný doma udělaný IR-přijímač, (téměř) libovolný dálkový ovládač a ovládejte jím svůj Linux! Více se o tom dovíte na domácí stránce LIRC.
Pokud máte nainstalován balíček LIRC, configure jej zdetekuje.
Pokud vše dopadne dobře, MPlayer při startu
vypíše "Nastavuji podporu LIRC...
".
Pokud dojde k chybě, oznámí vám to. Pokud nevypíše žádnou zprávu o LIRC,
pak pro něj není podpora zakompilována. To je vše :-)
Jméno spustitelného souboru MPlayeru je - překvapení -
mplayer. Můžete použít jakýkoli příkaz
MPlayeru a dokonce i více než jeden, pokud je oddělíte
znakem \n
.
Nezapomeňte zapnout opakovací (repeat) příznak v .lircrc tam,
kde to dává smysl (vyhledávání, hlasitost, atd.).
Zde je výňatek z demonstračního
.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
Pokud se vám nelíbí standardní umístění lirc-config souboru
(~/.lircrc) použijte volbu -lircconf
soubor
k určení jiného souboru.
Závislý režim vám umožňuje vytvořit jednoduché ovládací panely (frontendy) MPlayeru. Pokud je MPlayer spuštěn s volbou -slave, pak bude číst příkazy oddělené novým řádkem (\n) ze standardního vstupu. Příkazy jsou dokumentovány v souboru slave.txt.
MPlayer umí přehrávat soubory ze sítě s použitím protokolu HTTP, FTP, MMS nebo RTSP/RTP.
Přehrávání pracuje jednoduše tak, že uvedete URL na příkazovém řádku.
MPlayer ctí systémovou proměnnou http_proxy
a použije proxy pokud je k dispozici. Proxy může být rovněž vynucena:
mplayer http_proxy://proxy.micorsops.com:3128/http://micorsops.com:80/stream.asf
MPlayer umí číst ze std. vstupu (ne z pojmenovaných rour). To může být například použito pro přehrávání z FTP:
wget ftp://micorsops.com/something.avi
-O - | mplayer -
Také doporučujeme zapnout -cache při přehrávání ze sítě:
wget ftp://micorsops.com/something.avi
-O - | mplayer -cache 8192 -
Jakmile jste přiměli MPlayer přehrát váš oblíbený internetový proud, můžete použít volbu -dumpstream k uložení datového proudu do souboru. For example:
mplayerhttp://217.71.208.37:8006
-dumpstream -dumpfileproud.asf
uloží proudové video z
http://217.71.208.37:8006
do
proud.asf
.
Pracovat to bude se všemi MPlayerem podporovanými
protokoly, jako MMS, RTSP, a tak dále.
Moderní CD-ROM mechaniky dosahují velmi vysokých otáček a některé z nich mohou pracovat i se sníženými otáčkami. Existuje několik důvodů, pro které byste mohli chtít změnit rychlost CD-ROM mechaniky:
Byly zprávy o chybách čtení při vysokých rychlostech, zvláště u špatně vylisovaných CD-ROMů. Z těchto důvodů může snížení rychlosti působit jako prevence ztráty dat.
Mnoho CD-ROM mechanik je nechutně hlučných, nižší rychlost může omezit tento hluk.
Můžete snížit rychlost IDE CD-ROM mechanik pomocí hdparm, setcd nebo cdctl. Pracuje to asi takto:
hdparm -E[rychlost]
[mechanika cdrom]
setcd -x[rychlost]
[mechanika cdrom]
cdctl -bS [rychlost]
Pokud používáte SCSI emulaci, budete muset předat tato nastavení do skutečného IDE zařízení, nikoli emulovaného SCSI zařízení.
Pokud máte práva root-a, následující příkaz vám rovněž může pomoci:
echo file_readahead:2000000 > /proc/ide/[mechanika cdrom]
/settings
To nastaví čtení napřed na 2MB, což pomůže při poškrábaných médiích. Pokud ji však nastavíte příliš vysoko, bude mechanika stále zrychlovat a zpomalovat, což výrazně sníží její výkon. Doporučujeme vám rovněž vyladit vaši CD-ROM mechaniku pomocí hdparm:
hdparm -d1 -a8 -u1 [cdrom zařízení]
To zapne DMA přístup, čtení napřed a odmaskování IRQ (přečtěte si man stránku programu hdparm pro podrobné vysvětlení).
Prostudujte si
„/proc/ide/(cdrom zařízení)
/settings“
pro jemné doladění vaší CD-ROM.
SCSI mechaniky nemají jednotný způsob pro nastavení těchto parametrů (Znáte nějaký? Řekněte nám jej!). Existuje nástroj, který pracuje se SCSI mechanikami Plextor.
Úplný seznam dostupných voleb naleznete v man stránce. Syntaxe pro přehrání standardního DVD je následující:
mplayer dvd://<track>
[-dvd-device<DVD_zařízení>
]
Příklad:
mplayer dvd://1 -dvd-device /dev/hdc
Pokud jste kompilovali MPlayer s podporou dvdnav, je syntaxe stejná až na to, že musíte používat dvdnav:// místo dvd://.
Výchozím DVD zařízením je /dev/dvd. Pokud se vaše nastavení liší, vytvořte symlink, nebo uveďte správné zařízení na příkazovém řádku pomocí volby -dvd-device.
MPlayer používá libdvdread
a
libdvdcss
pro přehrávání a dekódování DVD. Tyto dvě
knihovny jsou obsaženy ve zdrojových kódech
MPlayeru, nemusíte je tedy instalovat zvlášť.
Můžete rovněž použít systémové verze těchto knihoven, ale toto řešení
nedoporučujeme, protože může vést k chybám,
nekompatibilitě knihovny a nižší rychlosti.
V případě problémů s dekódováním DVD, zkuste vypnout supermount a podobná udělátka. Některé RPC-2 mechaniky mohou rovněž vyžadovat nastavení region kódu.
Dekódování DVD.
Dekódování DVD provádí libdvdcss
. Metodu
můžete zvolit pomocí proměnné prostředí DVDCSS_METHOD
,
detaIly viz manuálová stránka.
DVD mechaniky v současnosti přicházejí s nesmyslným omezením nazvaným kód regionu. To je způsob jak přinutit DVD mechaniku akceptovat pouze DVD vyrobené pro jeden ze šesti různých regionů na které byl rozdělen svět. Jak si může skupina lidí zasednout ke kulatému stolu, přijít s takovým nápadem a čekat, že se svět 21. století skloní před jejich vůlí je naprosto nepochopitelné
Mechaniky, které vynucují nastavení regionu poze softwarově jsou známy také jako RPC-1 a ty, které to dělají v hardware jako RPC-2. Mechaniky RPC-2 umožňují změnu kódu regionu pětkrát a pak zůstane pevný. V Linuxu můžete použít nástroj regionset pro nastavení kódu regionu vaší DVD mechaniky.
Naštěstí je možné konvertovat RPC-2 mechaniky na RPC-1 pomocí upgrade firmware. Vyplňte modelové číslo vaší DVD mechaniky do svého oblíbeného vyhledávače, nebo se podívejte do fóra a sekce download „Firmware stránek“. Ačkoli platí obvyklé „kazy“ upgradů fimware, zkušenosti se zbavením se vynucování region kódů jsou obecně kladné.
Úplný seznam dostupných voleb naleznete v man stránce. Syntaxe pro standardní Video CD (VCD) je následující:
mplayer vcd://<stopa>
[-cdrom-device<zařízení>
]
Příklad:
mplayer vcd://2 -cdrom-device /dev/hdc
Výchozím VCD zařízením je /dev/cdrom. Pokud se vaše nastavení liší, vytvořte symlink nebo uveďte správné zařízení na příkazovém řádku pomocí volby -cdrom-device.
Minimálně SCSI CD-ROM mechaniky Plextor a Toshiba vykazují mizerný výkon
při čtení VCD. To proto, že CDROMREADRAW ioctl
není pro tyto mechaniky plně implementováno. Pokud máte zkušenosti se
SCSI programováním, prosíme
pomozte nám
implementovat obecnou SCSI podporu pro VCD.
Mezitím můžete extrahovat data z VCD pomocí readvcd a výsledný soubor přehrát v MPlayeru.
Struktura VCD. Video CD (VCD) je tvořeno CD-ROM XA sektory, čili stopy CD-ROM mode 2 třída 1 a 2:
První stopa je ve formátu mode 2 třída 2 což znamená, že používá L2 korekci chyb. Stopa obsahuje souborový systém ISO-9660 s 2048 bajty/sektor. Tento souborový systém obsahuje VCD metadata informace, spolu se statickými snímky často používanými v menu. MPEG segmenty menu mohou být rovněž uloženy v této první stopě, ale tyto MPEGy musí být rozsekány na série 150 sektorových chunků. Souborový systém ISO-9660 může obsahovat další soubory, které nejsou potřeba pro operace s VCD.
Druhá a ostatní stopy jsou všeobecně surovými MPEG (film) stopami s 2324 bajty/sektor, obsahující jeden MPEG PS datový paket na sektor. Ty jsou v mode 2 třída 1 formátu, takže obsahují více dat v každém sektoru za cenu omezení korekce chyb. Je rovněž možné mít CD-DA stopy na VCD za první stopou. V některých operačních systémech jsou triky, které umožňují zpřístupnit tyto ne-ISO-9660 stopy v systému souborů. V dalších operačních systémech jako GNU/Linux to není možné (zatím). Zde MPEG data nemohou být připojena. Protože většina filmů je uložena uvnitř tohoto druhu stopy, měli byste nejprve zkusit vcd://2.
Existují také VCD disky bez první stopy (jediná stopa bez systému souborů). Můžete je přehrát, ale nemohou být namountovány.
Definice standardu Video CD se nazývá Philips „White Book“ a není obecně přístupná online, ale musí být zakoupena od Philipsu. Podrobnější informace o Video CD můžete nalézt v dokumentaci programu vcdimager.
Pár slov o .DAT souborech. Soubor veliký ~600 MB viditelný v první stopě připojeného VCD není skutečným souborem! Je to takzvaná ISO gateway, vytvořená proto, aby mohl Windows přistupovat k těmto stopám (Windows vůbec neumožňuje aplikacím surový přístup k zařízení). Pod Linuxem nemůžete kopírovat nebo přehrávat tyto soubory (obsahují jen nesmysly). Pod Windows je to možné, protože jeho iso9660 ovladač emuluje surový přístup ke stopě v tomto souboru. Abyste mohli přehrát .DAT soubor, potřebujete ovladač kernelu který můžete nalézt v Linuxové verzi PowerDVD. Obsahuje upravený ovladač systému souborů iso9660 (vcdfs/isofs-2.4.X.o), který umí emulovat surové stopy přes tento stínový .DAT soubor. Pokud připojíte disk s pomocí jejich ovladače, můžete kopírovat či dokonce přehrávat .DAT soubory MPlayerem. Ale nebude to fungovat se standardním iso9660 ovladačem z Linuxového kernelu! Místo toho použijte vcd://. Alternativou kopírování VCD je nový jaderný ovladač jménem cdfs (není součástí oficiálního jádra), který zobrazuje CD sekce jako obrazové soubory a program cdrdao, který bit-po-bitu grabuje/kopíruje CD.
Systém seznamů editačních zásahů (EDL) umožňuje automaticky vynechat nebo vypnout zvuk v částech videa při přehrávání, což je zajišťováno pro každý film zvláštním EDL konfiguračním souborem.
Toho se dá využít pro ty, kdo chtějí sledovat film v "rodinném" režimu. Můžete vystříhat veškeré násilí, nechutnosti, Jar-Jar Binkse .. z filmu podle svých vlastních osobních preferencí. Mimoto jsou zde i jiná využití, jako je automatické vystřihávání reklam z videa které sleduješ.
Formát EDL souboru je poměrně kostrbatý. Každý příkaz je na samostatném řádku a označuje co dělat (vystřihnout/ztišit) a kdy to dělat (pomocí ukazatelů v sekundách).
Vložte volbu -edl <soubor> při spouštění MPlayer, se jménem EDL souboru, který chcete použít na video.
Současný formát EDL souboru je:
[počáteční sekunda] [koncová sekunda] [akce]
Kde jsou sekundy desetinnými čísly a akce je buď
0
pro vynechání nebo 1
pro vypnutí zvuku.
Příklad:
5.3 7.1 0 15 16.7 1 420 422 0
To vynechá část videa mezi sekundami 5.3 a 7.1, pak vypne zvuk na 15 sekundě, zapne jej na 16.7 sekundy a vynechá část videa mezi sekundami 420 a 422. Tyto akce budou provedeny jakmile časovač přehrávání dosáhne hodnoty zadané v souboru.
Pro vytvoření EDL souboru se kterým budete moci začít, použijte volbu -edlout <soubor>. Během přehrávání jen stiskněte i pro označení začátku a konce bloku. Pro vyznačený čas bude do souboru zapsán odpovídající záznam. Můžete se pak vrátit a doladit vygenerovaný EDL soubor, stejně jako změnit výchozí akci, což je vystřižení vyznačených bloků.
Většina DVD a mnoho jiných souborů obsahuje surround zvuk. MPlayer podporuje přehrávání přehrávání surround, ale ve výchozím nastavení jej nezapíná, jelikož stereo vybavení je mnohem častější. Pro přehrávání souboru, který má více než dvoukanálový zvuk použijte volbu -channels. Například pro přehrání DVD s 5.1 zvukem:
mplayer dvd://1 -channels 6
Poznamenejme, že ačkoli se jmenuje "5.1", ve skutečnosti má šest kanálů. Pokud máte surround zvukové vybavení, můžete si přidat volbu channels do svého konfiguračního souboru MPlayeru ~/.mplayer/config. Například pro použití čtyřkanálového přehrávání zvuku jako výchozí, přidejte následující řádek:
channels=4
MPlayer pak poskytuje zvuk ve čtyřech kanálech, pokud jsou všechny čtyři kanály k dispozici.
MPlayer ve výchozím nastavení neduplikuje žádné kanály a nedělá to ani většina audio ovladačů. Pokud to chcete udělat ručně:
mplayer soubor
-af channels=2:2:0:1:0:0
Vysvětlení naleznete v sekci kopírování kanálů.
DVD mají obvykle surround zvuk enkódovaný ve formátu AC–3 (Dolby Digital) nebo DTS (Digital Theater System). Některá moderní zařízení jsou schopna dekódovat tyto formáty interně. MPlayer lze nakonfigurovat tak, aby přenesl zvuková data bez dekódování. To bude fungovat pouze pokud máte S/PDIF (Sony/Philips Digital Interface) jack ve zvukové kartě.
Pokud vaše zařízení umí dekódovat jak AC–3, tak DTS, můžete bezpečně zapnout passthrough pro oba formáty. Jinak zapněte passthrough pouze pro formát, který vaše zařízení podporuje.
Zapnutí passthrough z příkazového řádku:
Jen pro AC–3 použijte -ac hwac3
Jen pro DTS použijte -ac hwdts
Pro oba (AC–3 i DTS) použijte -afm hwac3
Zapnutí passthrough v konfiguračním souboru MPlayeru:
Jen pro AC–3 použijte ac=hwac3,
Jen pro DTS použijte ac=hwdts,
Pro oba (AC–3 i DTS) použijte afm=hwac3
Povšimněte si čárky (",") na konci ac=hwac3, a ac=hwdts,. To umožní MPlayeru použít normální kodek, když přehrávaný soubor nemá AC–3 nebo DTS zvuk. Volba afm=hwac3 nevyžaduje čárku; MPlayer se zařídí podle potřeby automaticky, pokud je zvolena rodina audio kodeků.
***TODO***
Tato sekce musí být teprve napsaná a nemůže být dokončena dokud nám někdo nepošle vzorkové soubory pro testování. Pokud máte nějaké maticově enkódované zvukové soubory, víte, kde je lze najít, nebo máte jakoukoli informaci, která by mohla pomoci, pošlete prosím zprávu do konference MPlayer-DOCS. Do předmětu vložte "[matrix-encoded audio]".
Pokud nepřijdou žádné soubory nebo informace, tato sekce bude odstraněna.
Dobré odkazy:
MPlayer obsahuje HRTF (Head Related Transfer Function) filtr založený na projektu MIT, kde jsou měření vzata z mikrofonů na umělé lidské hlavě.
Ačkoli není možné přesně imitovat surround systém, MPlayerův HRTF filtr produkuje prostorově mnohem prokreslenější zvuk ve 2-kanálových sluchátkách. Obvyklé míchání jednoduše kombinuje všechny kanály do dvou; krom kombinace kanálů, hrtf generuje slabá echa, poněkud zvětšuje oddělení stereo kanálů a mění hlasitost některých kmitočtů. Jestli HRTF zní lépe může záviset na zdrojovém zvuku a osobním vkusu, ale určitě stojí za zkoušku.
Pro přehrání DVD s HRTF:
mplayer dvd://1 -channels 6 -af hrtf
hrtf pracuje dobře pouze s 5 nebo 6 kanály. hrtf také vyžaduje zvuk 48 kHz. DVD audio již je 48 kHz, ale pokud máte soubor s odlišným vzorkovacím kmitočtem, který chcete přehrávat pomocí hrtf, musíte jej převzorkovat:
mplayer soubor
-channels 6 -af resample=48000,hrtf
Naneštěstí neexistuje standard pro řazení kanálů. Následující řazení jsou používaná v AC–3 a jsou poměrně typická; zkuste je a uvidíte, zda tomu váš zdroj odpovídá. Kanály jsou číslovány od 0.
mono
střed
stereo
levý
pravý
kvadrofonní
levý čelní
pravý čelní
levý zadní
pravý zadní
surround 4.0
levý čelní
pravý čelní
středový zadní
středový čelní
surround 5.0
levý čelní
pravý čelní
levý zadní
pravý zadní
středový čelní
surround 5.1
levý čelní
pravý čelní
levý zadní
pravý zadní
středový čelní
subwoofer
Volba -channels se používá pro požadavek na počet kanálů z dekodéru zvuku. Některé audio kodeky používají počet zadaných kanálů pro rozhodování, zda je nutné podmixovat zdroj. Poznamenejme, že to ne vždy ovlivní počet výstupních kanálů. Například použití -channels 4 pro přehrání stereo MP3 souboru povede ke 2-kanálovému výstupu, jelikož MP3 kodek neprodukuje extra kanály.
Pro vytvoření nebo odstranění kanálů slouží zvukový filtr channels, který je rovněž vhodný k ovládání počtu zvukových kanálů posílaných do zvukové karty. Viz následující sekce pro více informací o manipulacích s kanály.
Mono zní mnohem lépe, když je přehráván dvěma reproduktory – zvlášť při použití sluchátek. Audio soubory, které ve skutečnosti mají jeden kanál, jsou automaticky přehrávány dvěma reproduktory; naneštěstí je většina mono souborů ve skutečnosti enkódována jako stereo s jedním kanálem utlumeným. Nejjednodušší a nejblbuvzdornější způsob, jak přinutit oba reproduktory poskytovat stejný zvuk je filtr extrastereo:
mplayer soubor
-af extrastereo=0
To zprůměruje oba kanály, takže budou mít poloviční hlasitost originálu. Další sekce přinášejí příklady dalších možností, jak to udělat bez snížení hlasitosti, ale ty jsou mnohem komplexnější a vyžadují odlišné volby v závislosti na tom, který kanál ponecháte. Pokud potřebujete jen upravit hlasitost, může být lehčí experimentovat s filtrem volume a najít vhodnou hodnotu. Například:
mplayer soubor
-af extrastereo=0,volume=5
Filtr channels umí přesunout jakýkoli nebo všechny kanály. Nastavení všech parametrů filtru channels může být komplikované a vyžaduje pozornost.
Rozhodněte, kolik výstupních kanálů potřebujete. To je první parametr.
Spočítejte, kolik přesunů kanálů budete dělat. To je druhý parametr. Každý kanál může být přesunut naráz do několika různých kanálů, ale pamatujte, že pokud je kanál přesunut (dokonce i jen do jednoho cíle), bude zdrojový kanál prázdný dokud do něj nepřesunete jiný kanál. Chcete-li kanál zkopírovat, aby zdroj zůstal stejný, jednoduše přesuňte kanál do obou, cíle i zdroje. Například:
channel 2 --> channel 3 channel 2 --> channel 2
Zapište kopie kanálů jako dvojici parametrů. Pamatujte, že první kanál je 0,
druhý 1 atd. Na pořadí parametrů nezáleží, pokud jsou správně sdruženy do
párů zdroj:cíl
.
Zde máte příklad jiného způsobu, jak hrát jeden kanál v obou reproduktorech. Pro náš účel předpokládejme, že by měl být přehráván levý kanál a zahozen pravý. Následujeme výše uvedený postup:
Abychom měli výstupní kanál pro každý z obou reproduktorů, musí být první parametr "2".
Levý kanál musí být přesunut do pravého a také sám do sebe, aby nezůstal prázdný. To jsou celkem dva přesuny, takže druhý parametr bude také "2".
Pro přesun levého kanálu (channel 0) do pravého kanálu (channel 1) bude dvojice parametrů "0:1" a "0:0" přesune levý kanál na sebe.
Vše dohromady pak dá:
mplayer soubor
-af channels=2:2:0:1:0:0
Výhoda tohoto postupu před extrastereo je v tom, že je hlasitost každého výstupního kanálu stejná jako hlasitost zdrojového kanálu. Nevýhodou je to, že parametry musí být změněny na "2:2:1:0:1:1", pokud je požadovaný zvuk v pravém kanálu. Také je těžší si je pamatovat a napsat.
Ve skutečnosti je mnohem jednodušší způsob použití filtru channels pro přehrávání levého kanálu v obou reproduktorech:
mplayer soubor
-af channels=1
Druhý kanál je zahozen a bez dalších parametrů je ponechán jediný zbývající kanál. Ovladače zvukových karet hrají jednokanálový zvuk automaticky v obou reproduktorech. To pracuje pouze pokud je požadovaný levý kanál.
Dalším běžným úkonem je duplikace čelních kanálů a jejich přehrávání v zadních reproduktorech kvadrofonní sestavy.
Zde by mely být čtyři výstupní kanály. První parametr je "4".
Oba přední kanály musí být přesunuty do odpovídajících zadních kanálů a také na sebe. To jsou čtyři přesuny, takže druhý parametr bude "4".
Levý čelní (channel 0) přesuneme do levého zadního (channel 2): "0:2". Levý čelní musíme rovněž přesunout do sama sebe: "0:0". Pravý přední (channel 1) je přesunut do pravého zadního (channel 3): "1:3" a také do sebe: "1:1".
Po zkombinování všech nastavení dostaneme:
mplayer soubor
-af channels=4:4:0:2:0:0:1:3:1:1
Filtr pan umí mixovat kanály podle požadavků uživatele. Umožňuje vše co filtr channels a ještě víc. Naneštěstí jsou jeho parametry ještě komplikovanější.
Rozhodněte, s kolika kanály budeme pracovat. To můžete nastavit pomocí volby -channels a/nebo -af channels. Později se v příkladech dozvíte, kdy použít kterou.
Rozhodněte, kolik kanálů propustíme do pan (ostatní dekódované kanály jsou zahozeny). To je první parametr a také ovládá, kolik kanálů bude mít výstup.
Zbývající parametry nastavují, kolik z daného kanálu bude namixováno do každého dalšího kanálu. Toto je ta komplikovaná část. Pro usnadnění si rozdělte parametry do několika skupin, jednu pro každý výstupní kanál. Každý parametr uvnitř skupiny odpovídá vstupnímu kanálu. Číslo, které nastavíte bude procento vstupního kanálu, které bude namixováno do výstupního kanálu.
pan akceptuje hodnoty od 0 do 512, což odpovídá 0% až 51200% původní hlasitosti. Buďte opatrní, pokud používáte hodnoty větší než 1. Nejen, že vám to dá velmi vysokou hlasitost, ale pokud překročíte dynamický rozsah své zvukové karty, můžete uslyšet rány a praskání. Pokud chcete, můžete za pan přidat ,volume pro zapnutí omezení, ale i tak je nejlepší udržet hodnoty pan dostatečně nízko, aby omezování nebylo potřeba.
Zde máte další příklad pro přehrávání levého kanálu ve dvou reproduktorech. Následujme výše uvedené kroky:
Na výstupu pan by měly být dva kanály, takže první parametr je "2".
Jelikož máme dva vstupní kanály, budeme mít dvě sady parametrů. Jelikož máme rovněž dva výstupní kanály, budeme mít dva parametry v každé sadě. Levý kanál ze souboru by měl jít s plnou hlasitostí do nového levého i pravého kanálu. Takže první sada parametrů je "1:1". Pravý kanál by měl být zahozen, takže druhá sada bude "0:0". Hodnoty 0 na konci je možné vynechat, ale pro snadnější pochopení je zde necháváme.
Dáme-li vše dohromady, dostaneme:
mplayer soubor
-af pan=2:1:1:0:0
Pokud chceme místo levého kanálu pravý, budou parametry pan tyto: "2:0:0:1:1".
Stejně jako s channels můžeme použít zkrácený zápis, který funguje pouze pro levý kanál:
mplayer soubor
-af pan=1:1
Jelikož má pan pouze jeden vstupní kanál (druhý je zahozen), máme pouze jednu sadu s jedním parametrem, takže tento jediný kanál dává 100% sám ze sebe.
MPlayerův dekodér 6-kanálového PCM neumí podmixování. Máme však možnost k tomu použít pan:
Počet výstupních kanálů je 2, takže první parametr je "2".
Při šesti vstupních kanálech budeme mít šest sad parametrů. Jelikož nás však zajímá pouze výstup z prvních dvou kanálů, vystačíme s pouhými dvěma sadami; zbývající čtyři sady můžeme vynechat. Pozor na to, že ne všechny vícekanálové zvukové soubory mají stejné řazení kanálů! Tento příklad demonstruje podmixování souboru se stejným řazením kanálů jako má AC–3 5.1:
0 - levý přední 1 - pravý přední 2 - levý zadní 3 - pravý zadní 4 - středový přední 5 - subwoofer
První sada parametrů je výčtem procentních hodnot hlasitostí v daném pořadí, kterou by měl dostat každý výstupní kanál z levého předního kanálu: "1:0". Pravý přední kanál by měl jít do pravého výstupu: "0:1". Stejně tak zadní kanály: "1:0" a "0:1". Středový kanál jde do obou výstupních kanálů s poloviční hlasitostí: "0.5:0.5" a subwoofer jde do obou s plnou hlasitostí: "1:1".
Dáme-li vše dohromady, dostaneme:
mplayer 6-kanálové.wav
-af pan=2:1:0:0:1:1:0:0:1:0.5:0.5:1:1
Uvedené procentní hodnoty jsou pouhým příkladem. Upravte si je podle vlastního uvážení.
Pokud máte robustní čelní reprobedny, nemusíte utrácet za nákup subwooferu pro kompletní 5.1 zvukový systém. Použijete-li volbu -channels 5 pro požadavek, aby liba52 dekódovala 5.1 zvuk do 5.0, bude zkrátka kanál pro subwoofer zahozen. Pokud jeho obsah chcete roznést do ostatních kanálů, musíte jej podmixovat ručně pomocí pan:
Jelikož se pan potřebuje dostat ke všem šesti kanálům, nastavte -channels 6, takže je liba52 dekóduje všechny.
Filtr pan produkuje pouze pět kanálů, takže první parametr je 5.
Šest vstupních a pět výstupních kanálů znamená šest sad po pěti parametrech.
Levý přední kanál půjde jen sám do sebe: "1:0:0:0:0"
Stejně tak pravý přední kanál: "0:1:0:0:0"
Taktéž levý zadní kanál: "0:0:1:0:0"
Rovněž pravý zadní kanál: "0:0:0:1:0"
Středový kanál jakbysmet: "0:0:0:0:1"
A nyní se musíme rozhodnout, co uděláme se subwooferem, například půlku do předního levého a půlku do předního pravého: "0.5:0.5:0:0:0"
Zkombinujeme-li to dohromady, dostaneme:
mplayer dvd://1
-channels 6 -af pan=5:1:0:0:0:0:0:1:0:0:0:0:0:1:0:0:0:0:0:1:0:0:0:0:0:1:0.5:0.5:0:0:0
Některé zvukové stopy jsou příliš tiché na to, aby mohly být pohodlně poslouchány bez zesílení. To je problém, pokud váš zvukový systém neumožňuje potřebné zesílení. Volba -softvol poručí MPlayeru použití vestavěného směšovače. Pak můžete použít klávesy pro nastavení hlasitosti (výchozí 9 a 0) pro dosažení mnohem vyšších úrovní hlasitosti. Takto neobejdete směšovač vaší zvukové karty; MPlayer pouze zesílí signál před jeho odesláním do zvukové karty. Následující příklad je dobrým startem:
mplayer tichý-soubor
-softvol -softvol-max 300
Volba -softvol-max nastavuje maximální povolenou výstupní hlasitost v procentech původní hlasitosti. Například, -softvol-max 200 umožní nastavit hlasitost až na dvojnásobek původní úrovně. Je bezpečné nastavit vysoké hodnoty volbou -softvol-max; vyšší hlasitost se nepoužije, dokud nepoužijete tlačítka nastavení hlasitosti. Jedinou nevýhodou velkých hodnot je to, že jelikož MPlayer nastavuje hlasitost o podíl z maximální hlasitosti, nebudete mít tak jemný krok nastavení pomocí tlačítek. Pokud potřebujete přesnější nastavování, použijte nižší hodnotu pro -softvol-max a/nebo nastavte -volstep 1.
Volba -softvol pracuje tak, že ovládá zvukový filtr volume. Chcete-li přehrávat soubor od začátku při určité hlasitosti, můžete nastavit volume ručně:
mplayer tichý-soubor
-af volume=10
Takto přehrajete soubor se ziskem 10 decibelů. Při použití filtru volume buďte velmi opatrní. Pokud použijete příliš vysokou hodnotu, můžete si poškodit sluch. Začněte s nízkou hodnotou a postupně zvyšujte, až docílíte požadované hlasitosti. Při nastavení příliš vysokých hodnot také hrozí, že volume bude nucen ořezat signál, aby předešel odeslání dat mimo dovolený rozsah do zvukové karty; to povede ke zkreslení signálu.
Tato sekce je zaměřena na zpřístupnění sledování/grabování z V4L kompatibilního TV tuneru . Popis voleb k TV a ovládání z klávesnice naleznete v man stránce.
Zaprvé musíte rekompilovat. ./configure zdetekuje v4l hlavičkové soubory kernelu a existenci zařízení /dev/video*. Pokud existují, bude zabudována podpora pro TV (viz výstup z ./configure).
Ujistěte se, že váš tuner pracuje s jiným Linuxovým TV softwarem, například XawTV.
Úplný seznam voleb je dostupný v manuálové stránce. Zde je jen několik typů:
Použijte volbu channels. Příklad:
-tv channels=26-MTV1,23-TV2
Vysvětlení: Při použití této volby budou použitelné pouze kanály 26 a 23 a budete také mít krásný OSD text po přepnutí kanálů, zobrazující jméno kanálu. Mezery ve jméně kanálu musí být nahrazeny znakem "_".
Zvolte rozumné rozměry obrazu. Rozměry výsledného obrazu by měly být bezezbytku dělitelné 16.
Pokud zachytáváte video se svislým rozlišením vyšším než polovina plného rozlišení (čili 288 pro PAL nebo 240 pro NTSC), pak 'snímky', které dostanete, budou ve skutečnosti prokládané páry půlsnímků. V závislosti na tom, co chcete s videem dělat, je můžete nechat jak jsou, destruktivně odstranit proklad, nebo rozdělit páry do individuálních políček.
Jinak bude získaný snímek roztřepený během rychlých scén a regulátor datového toku nebude pravděpodobně schopen ani udržet nastavený datový tok, vzhledem k tomu, že prokladové artefakty produkují velké množství detailů, což spotřebovává velké přenosové pásmo. Odstraňování prokladu můžete zapnout pomocí volby -vf pp=DEINT_TYPE. Dobrou práci obvykle odvede pp=lb, ale záleží na osobních preferencích. Prostudujte si ostatní možnosti odstraňování prokladu v manuálu a vyzkoušejte je.
Odstřihněte mrtvý prostor. Když zachytáváte video, oblasti na okrajích jsou obvykle černé, nebo obsahují nějaký šum. Což opět zbytečně spotřebovává přenosové pásmo. Přesněji to nejsou samotné černé oblasti, ale ostrý přechod mezi černou a světlejším videem, ale to teď není důležité. Než začnete zachytávat, nastavte parametry volby crop tak, aby byl veškerý binec na okrajích odstřižen. Opět se snažte zachovat rozumné rozměry výsledného obrazu.
Sledujte zatížení CPU. Většinu času by nemělo překročit hranici 90%. Pokud máte velkou vyrovnávací paměť pro zachytávání, dokáže MEncoder přežít několikasekundové přetížení, ale nic víc. Raději vypněte 3D OpenGL spořiče obrazovky a podobné věci.
Nehrajte si se systémovými hodinami. MEncoder používá systémové hodiny pro A/V synchronizaci. Pokud přestavíte systémové hodiny (zvlášť nazpět), MEncoder bude zmaten a vy přijdete o snímky. To je velmi důležité pokud jste připojeni k síti a používáte nějaký časový synchronizační software jako je NTP. Musíte vypnout NTP během zachytávání, pokud chcete spolehlivě zachytávat.
Neměňte outfmt pokud nevíte co děláte, nebo vaše
karta/ovladač opravdu nepodporuje výchozí (YV12 barevný prostor).
Ve starší verzi MPlayeru/
MEncoderu bylo nutné nastavit výstupní formát.
Tento problém by měl být v současných verzích vyřešen,
outfmt již není nadále potřeba a výchozí hodnoty vyhovují
pro většinu případů. Například pokud zachytáváte do DivX pomocí
libavcodec
u a uvedete
outfmt=RGB24 pro zvýšení kvality zachytávaných snímků,
stejně budou tyto snímky později konvertovány zpět na YV12, takže jediné co
tím získáte je spousta vyplýtvaného výkonu CPU.
Chcete-li nastavit barevný prostor I420 (outfmt=i420), musíte přidat i volbu -vc rawi420 kvůli konfliktu fourcc Intel Indeo video kodekem.
Existuje několik cest, jak zachytávat zvuk. Můžete nahrát zvuk buď pomocí zvukové karty pomocí externího propojení mezi video kartou a linkovým vstupem, nebo použitím vestavěného ADC v čipu bt878. Ve druhém případě musíte načíst ovladač btaudio. Přečtěte si soubor linux/Documentation/sound/btaudio (ve zdrojácích kernelu, nikoli MPlayeru) pro několik instrukcí jak použít tento ovladač.
Pokud MEncoder nedokáže otevřít audio zařízení, ujistěte se, že je opravdu k dispozici. Můžete mít potíže se zvukovými servery jako aRts (KDE) nebo ESD (GNOME). Pokud máte plně duplexní zvukovou kartu (téměř každá slušná karta to již podporuje) a používáte KDE, zkuste zaškrtnout volbu "full duplex" v menu nastavení zvukového serveru.
Modelový výstup do AAlib :)
mplayer -tv driver=dummy:width=640:height=480 -vo aa tv://
Vstup ze standardního V4L:
mplayer -tv driver=v4l:width=640:height=480:outfmt=i420 -vc rawi420 -vo xv tv://
Mnohem sofistikovanější příklad. Zde MEncoder zachytává obraz v plném PALu, ořízne okraje a odstraní proklad obrazu pomocí lineárního směšovacího algoritmu. Zvuk je komprimován konstantním datovým tokem 64kbps LAME kodekem. Toto nastavení je vhodné pro zachytávání filmů.
mencoder -tv driver=v4l:width=768:height=576 -oac mp3lame -lameopts cbr:br=64\
-ovc lavc -lavcopts vcodec=mpeg4:vbitrate=900 \
-vf crop=720:544:24:16,pp=lb -o výstup.avi
tv://
Toto navíc přeškáluje video na 384x288 a zkomprimuje jej s datovým tokem 350kbps v režimu vysoké kvality. Volba vqmax uvolňuje kvantizer a umožní video kompresoru podržet takto nízký datový tok i za cenu snížení kvality. To lze použít pro záznam dlouhých TV seriálů, kde kvalita obrazu není až tolik důležitá.
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 -sws 1 -o výstup.avi
\
-vf crop=720:540:24:18,pp=lb,scale=384:288 tv://
Rovněž můžete nastavit menší rozměry obrazu ve volbě -tv a vyhnout se tak softwarovému škálování, ale tento přístup vyžaduje maximální množství informací a je trochu odolnější proti šumu. Čipy bt8x8 umí průměrování pixelů pouze ve svislém směru díky hardwarovým omezením.
Tato sekce se zabývá tím, jak zprovoznit poslech rozhlasu z V4L-kompatibilního rozhlasového tuneru. Popis voleb a ovládání z klávesnice naleznete v man stránce.
Nejprve musíte znovupřeložit MPlayer pomocí ./configure s --enable-radio a (pokud chcete i nahrávat) --enable-radio-capture.
Ujistěte se, že váš tuner pracuje s jiným softwarem v Linuxu, například XawTV.
Plný výčet voleb je v manuálové stránce. Zde uvádíme jen několik tipů:
Použití volby channels. Příklad:
-radio channels=104.4-Sibir,103.9-Maximum
Vysvětlení: Pomocí této volby budou k dispozici pouze stanice 104.4 a 103.9. Budete mít krásný OSD text během přepínání kanálů, který zobrazí jméno kanálu. Mezery v názvech kanálů musí být nahrazeny znakem "_".
Je mnoho způsobů, jak zachytávat (nahrávat) zvuk. Můžete buď zachytávat pomocí
vstupu line-in zvukové karty propojeného vnější linkou s videokartou,
nebo použitím vestavěného ADC v čipu saa7134. V druhém případě musíte
zavést ovladač saa7134-alsa
nebo
saa7134-oss
.
MEncoder nelze použít pro zachytávání zvuku, jelikož vyžaduje videoproud, aby fungoval. Takže buď použijete arecord z projektu ALSA, nebo volbu -ao pcm:file=file.wav. V druhém případě neuslyšíte nic (pokud ovšem nemáte propojku s line-in a vypnuté mute na kanále line-in).
Vstup ze standardního V4L (pomocí line-in kablu, zachytávání vypnuto):
mplayer radio://104.4
Vstup ze standardního V4L (pomocí line-in kablu, zachytávání vypnuto, rozhraní V4Lv1):
mplayer -radio driver=v4l radio://104.4
Přehrávání druhé stanice ze seznamu:
mplayer -radio channels=104.4=Sibir,103.9=Maximm radio://2
Průchod zvuku přes PCI sběrnici z interního ADC rádio karty.
V tomto příkladu se tuner používá jako druhá zvuková karta
(ALSA zařízení hw:1,0). Pro zařízení založené na saa7134 musí
být zaveden buď modul saa7134-alsa
nebo
modul saa7134-oss
.
mplayer -rawaudio rate=32000 radio://2/capture \ -radio adevice=hw=1.0:arate=32000:channels=104.4=Sibir,103.9=Maximm
Když používáte názvy zařízení ALSA, dvojtečky musí být nahrazeny znaky rovnáse, čárky tečkami.
libcaca
– Barevná ASCII Art knihovna
VELMI doporučujeme skontrolovat, zda jsou MTRR registry správně nastaveny, jelikož mohou velice zvýšit výkon.
Proveďte 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
Takto to správně ukazuje má Matrox G400 se 16MB paměti. Provedl jsem to z XFree 4.x.x, které nastavuje MTRR registry automaticky.
Pokud nic nefunguje, budete to muset udělat ručně. Nejprve musíte najít bázovou adresu. Máte tři možnosti, jak ji zjistit:
ze startovacích informací X11, například:
(--) SVGA: PCI: Matrox MGA G400 AGP rev 4, Memory @ 0xd8000000, 0xd4000000 (--) SVGA: Linear framebuffer at 0xD8000000
z /proc/pci (použijte příkaz lspci -v ):
01:00.0 VGA compatible controller: Matrox Graphics, Inc.: Unknown device 0525 Memory at d8000000 (32-bit, prefetchable)
ze zpráv jaderného modulu mga_vid (použijte dmesg):
mga_mem_base = d8000000
Pak zjistěte velikost paměti. Je to velmi snadné, stačí převést velikost video RAM do hexadecimální soustavy, nebo použijte následující tabulku:
1 MB | 0x100000 |
2 MB | 0x200000 |
4 MB | 0x400000 |
8 MB | 0x800000 |
16 MB | 0x1000000 |
32 MB | 0x2000000 |
Pokud znáte bázovou adresu a velikost paměti, začněme nastavovat MTRR registry!
Například pro výše uvedenou kartu Matrox (base=0xd8000000
)
s 32MB RAM (size=0x2000000
) stačí spustit:
echo "base=0xd8000000 size=0x2000000 type=write-combining" > /proc/mtrr
Ne všechny procesory mají MTRR. Například starší CPU K6-2 (okolo 266MHz, stepping 0) nemají MTRR, ale stepping 12 je mají (pro ověření spusťte cat /proc/cpuinfo).
Pod XFree86 4.0.2, nebo novějším, můžete použít hardwarové YUV rutiny karty pomocí rozšíření XVideo. Přesně toto používá volba -vo xv. Toto rozhraní také podporuje nastavování jasu/kontrastu/barevného tónu/atd. (pokud nepoužíváte strarý, pomalý DirectShow DivX kodek, který to podporuje všude), viz man stránka.
Abyste to zprovoznili, ujistěte se o následujícím:
Musíte používat XFree86 4.0.2 nebo novější (předchozí verze nemají XVideo)
Vaše karta aktuálně podporuje hardwarovou akceleraci (moderní karty ano)
X nahrává rozšíření XVideo. Zpráva ve /var/log/XFree86.0.log vypadá asi takto:
(II) Loading extension XVideo
Takto se nahraje pouze rozšíření pro XFree86. To je v dobré instalaci nahráno vždy a neznamená to, že je načtena i podpora XVideo pro kartu!
Vaše karta má podporu Xv pod Linuxem. Abyste si to ověřili, zkuste xvinfo, které je součástí distribuce XFree86. Měl by se vypsat dlouhý text podobný tomuto:
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) (...atd...)
Musí podporovat pixelové formáty YUY2 packed a YV12 planar, aby byla použitelná s MPlayerem.
A nakonec si ověřte, jestli byl MPlayer skompilován s podporou 'xv'. Proveďte mplayer -vo help | grep xv . Pokud byla skompilována podpora 'xv', měl by se objevi řádek podpobný tomuto:
xv X11/Xv
Starší ovladače 3dfx byly známy svými problémy s XVideo akcelerací a nepodporovaly barevné prostory YUY2 ani YV12. Ověřte, že máte XFree86 verze 4.2.0 nebo vyšší, které pracuje dobře s YV12 a YUY2, zatímco předchozí verze, včetně 4.1.0, padá s YV12. Pokud zažívate podivné situace při používání -vo xv, zkuste SDL (má rovněž XVideo) a uvidíte, zda to pomůže. Prostudujte si sekci SDL pro více informací.
NEBO, zkuste NOVÉ -vo tdfxfb rozhraní! Viz sekce tdfxfb.
S3 Savage3D by měly fungovat dobře, ale pro Savage4 použijte XFree86 verze 4.0.3 nebo vyšší (v případě problémů s obrazem, zkuste 16bpp). Stejně ajko S3 Virge: má sice podporu xv, ale karta samotná je velmi pomalá, takže ji raději prodejte.
Pro karty S3 Virge nyní existuje nativní framebuffer ovladač podobný tdfxfb. Nastavte si framebuffer (čili přidejte "vga=792 video=vesa:mtrr" do příkazového řádku kernelu) a použijte -vo s3fb (-vf yuy2 a -dr rovněž pomůžou).
Zatím není jasné, kterým modelům Savage chybí podpora YV12 a konvertují ovladačem (pomalé). Pokud podezříváte kartu, opatřete si novější ovladač, nebo slušně požádejte v konferenci MPlayer-users o ovladač s MMX/3DNow!.
nVidia není vždy pod Linuxem nejlepší volbou... Open-source ovladač v XFree86 podporuje většinu těchto karet, ale v některých případech musíte použít binární closed-source ovladač od nVidie, který je k dispozici na serveru nVidia. Tento ovladač budete potřebovat vždy, pokud zároveň chcete 3D akceleraci.
Karty Riva128 nemají podporu XVideo v nVidia ovladači z XFree86 :( Stěžujte si nVidii.
Ačkoli MPlayer obsahuje VIDIX ovladač pro většinu nVidia karet, zatím je ve stavu beta verze a má jisté nedostatky. Více informací naleznete v sekci nVidia VIDIX.
Ovladač GATOS (který byste měli použít, pokud nemáte Rage128 nebo Radeon) má zapnutý VSYNC ve výchozím stavu. To znamená, že rychlost dekódování (!) je synchronizována s obnovovacím kmitočtem monitoru. Pokud se vám zdá přehrávání pomalé, zkuste nějak vypnout VSYNC, nebo nastavte obnovovací kmitočet na n*(snímková rychlost filmu) Hz.
Radeon VE - pokud potřebujete X, použijte pro tuto kartu XFree86 4.2.0 nebo vyšší. Není zde podpora pro TV out. Samozřejmě s MPlayerem můžete mít s trochou štěstí akcelerovaný display s nebo bez TV výstupu a nepotřebujete žádné X knihovny. Přečtěte si sekci VIDIX.
Tyto karty lze nalézt v mnoha laptopech. Musíte použít XFree86 4.3.0 nebo vyšší, nebo použijte ovladače s podporou Xv od Stefana Seyfrieda. Stačí vybrat ten, který je vhodný pro vaši verzi XFree86.
XFree86 4.3.0 obsahuje podporu Xv, avšak Bohdan Horst poslal malý patch pro zdrojový kód XFree86, který zrychluje operace s framebufferem (čili XVideo) až čtyřikrát. Patch byl zařazen do XFree86 CVS a měl by být v další verzi vydané po 4.3.0.
Abyste mohli přehrávat obsah velikosti DVD, změňte svůj XF86Config takto:
Section "Device"
[...]
Driver "neomagic"
Option "OverlayMem" "829440"
[...]
EndSection
Chcete-li používat Xv s kartou Trident, což nepracuje s 4.1.0, nainstalujte si XFree 4.2.0. 4.2.0 přidává podporu pro celoobrazovkové Xv pro kartu Cyberblade XP.
Alternativně, MPlayer obsahuje VIDIX ovladač pro kartu Cyberblade/i1.
Pokud chcete používat Xv s kartou založenou na čipu Kyro (například Hercules Prophet 4000XT), měli byste si stáhnout ovladače z PowerVR serveru.
Tyto karty lze nalézt v mnoha laptopech. Doporučujeme aktuální Xorg.
Abyste umožnili přehrávání obsahu velikosti DVD (a větší), změňte svůj XF86Config/xorg.conf takto:
Section "Device"
[...]
Driver "intel"
Option "LinearAlloc" "6144"
[...]
EndSection
Vynechání této volby obvykle vede k chybě jako
X11 error: BadAlloc (insufficient resources for operation)
při pokusu použít -vo xv.
PŘEDMLUVA. Tento dokument se několika slovy snaží vysvětlit co je to DGA a co výstupní videorozhraní DGA pro MPlayer udělat může (a co ne).
CO JE DGA.
DGA je zkratka pro Direct Graphics
Access, což je program pro obejití X servru a
přímou modifikaci paměti framebufferu. Technicky to znamená mapování paměti
framebufferu do paměťového prostoru vašeho procesu.
To kernel umožňuje pouze pokud máte práva superuživatele. Ty dostanete buď
nalogováním se jako root
, nebo
nastavením SUID bitu spustitelnému souboru
MPlayeru (nedoporučujeme
).
Existují dvě verze DGA: DGA1 je používáno XFree 3.x.x a DGA2 bylo představeno v XFree 4.0.1.
DGA1 poskytuje pouze přímý přístup k framebufferu jak byl popsán výše. Chcete-li přepínat rozlišení videosignálu, musíte se spolehnout na rozšíření XVidMode.
DGA2 zahrnuje vlastnosti rozšíření XVidMode a rovněž umožňuje přepínat barevnou hloubku zobrazovače. Takže můžete jendoduše provozovat X server s hloubkou 32 bitů a přepnout na barevnou hloubku 15 bitů a naopak.
DGA má ovšem i jisté obtíže. Zdá se, že je nějak závislé na grafickém čipu, který používáte a na implementaci video ovladače X serveru, který tento čip obsluhuje. Takže nefunguje na všech systémech...
INSTALACE PODPORY DGA PRO MPLAYER. Nejprve si ověřte, že X nahrávají rozšíření DGA, viz v /var/log/XFree86.0.log:
(II) Loading extension XFree86-DGA
XFree86 4.0.x nebo vyšší je vřele doporučován! Video rozhraní DGA MPlayeru je autodetekováno ./configure, nebo jej můžete vynutit pomocí --enable-dga.
Pokud rozhraní nemůže přepnout do menšího rozlišení, experimentujte s volbami -vm (pouze s X 3.3.x), -fs, -bpp, -zoom, abyste nalezli videorežim, do kterého se video napasuje. Momentálně není žádný převodník :(
Staňte se root
em. DGA vyžaduje
práva roota, aby mohl přímo zapisovat do video paměti. Pokud jej chcete
provozovat jako uživatel, pak nainstalujte MPlayer
jako SUID root:
chown root/usr/local/bin/mplayer
chmod 750/usr/local/bin/mplayer
chmod +s/usr/local/bin/mplayer
A nyní to bude pracovat také pod obyčejným uživatelem.
Toto je velké bezpečnostní riziko! Nikdy to nedělejte na serveru nebo počítači ke kterému mohou mít přístup ostatní lidé, jelikož ti mohou získat superuživatelská práva díky SUID root MPlayeru.
Nyní použijte volbu -vo dga a je to! (doufám:) Také byste měli vyzkoušet, jestli vám pracuje volba -vo sdl:dga! Je mnohem rychlejší!
PŘEPÍNÁNÍ ROZLIŠENÍ. Rozhraní DGA umožňuje přepínání rozlišení výstupního signálu. To odstraňuje potřebu (pomalého) softwarového škálování a zároveň poskytuje obraz na celou obrazovku. Ideálně by se mělo přepnout na přesné rozlišení (s výjimkou dodržení poměru stran) video dat, ale X server umožňuje poze přepínání do rozlišení předdefinovaných v /etc/X11/XF86Config (nebo /etc/X11/XF86Config-4 pro XFree 4.X.X). Ty jsou definovány takzvanými "modelines" a závisí na schopnostech vašeho video hardwaru. X server projíždí tento konfigurační soubor při startu a zakáže režimy (modelines) nevhodné pro váš hardware. Povolené videorežimy naleznete v X11 log souboru. Tel lze nalézt zde: /var/log/XFree86.0.log.
Tyto vstupy jsou známy dobrou funkcí na Riva128 čipu, s použitím modulu ovladače nv.o X serveru.
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 & MPLAYER. DGA je v MPlayeru použito na dvou místech: SDL rozhraní může být nastaveno pro jeho použití (-vo sdl:dga) a přímé DGA rozhraní (-vo dga). Výše uvedené je platné pro obě varianty; v následující sekci vysvětlíme jak pracuje DGA rozhraní MPlayeru.
VLASTNOSTI. DGA rozhraní je použito zadáním volby -vo dga na příkazovém řádku. Výchozím chováním je přepnout na rozlišení co nejbižší originálním rozměrům videa. Zcela záměrně se ignorují volby -vm a -fs (umožňující přepínání videorežimů a zobrazení na celou obrazovku) - vždy zkouší pokrýt tak velkou plochu obrazovky, jak je to jen možné pomocí přepnutí videorežimu, což nás oprostí od využívání dalších CPU cyklů pro škálování obrazu. Pokud se vám nelíbí režim, který vybere automatika, můžete ji přinutit pro výběr režimu nejblíže odpovídajícímu rozlišení, které zadáte pomocí -x a -y. Při zadání volby -v, vypíše DGA rozhraní, spolu s dalšími věcmi, seznam všech rozlišení podporovaných vašim aktuálním XF86Config souborem. Máte-li DGA2, můžete jej rovněž přinutit použít různé barevné hloubky pomocí volby -bpp. Platné barevné hloubky jsou 15, 16, 24 a 32. To jestli jsou tyto barevné hloubky nativně podporovány, nebo musí být provedena (pravděpodobně pomalá) konverze závisí na vašem hardware.
Pokud jste natolik šťastlivci, že máte dostatek volné mimoobrazové paměti, aby se zde vměstnal celý obrázek, použije DGA rozhraní dvojitou vyrovnávací paměť, což vám zajistí mnohem plynulejší přehrávání filmů. Rozhraní vás bude informovat jestli je dvojitý buffer zapnutý nebo ne.
Dvojitou vyrovnávací pamětí se rozumí to, že je další snímek vykreslován do paměti mimo zobrazovanou plochu, zatímco je zobrazován aktuální snímek. Jakmile je další snímek připraven, grafický čip je informován o pozici v paměti, kde je nový snímek a jednoduše přesune data k zobrazení odtud. Mezitím je další buffer v paměti zaplňován novými videodaty.
Dvojitá vyrovnávací paměť může být zapnuta volbou -double a vypnuta volbou -nodouble. Současná výchozí hodnota je vypnutí dvojité vyrovnávací paměti. Při použití DGA rozhraní bude display na obrazovce (OSD) pracovat pouze při zapnuté dvojité vyrovnávací paměti. Zapnutí dvojité vyrovnávací paměti však může vyústit velkou ztrátou výkonu (na mé K6-II+ 525 to použije dalších 20% CPU výkonu!) v závislosti na implementaci DGA pro váš hardware.
OTÁZKA RYCHLOSTI. Obecně by přístup přes DGA framebuffer měl být alespoň tak rychlý jako použití rozhraní X11 navíc s celoobrazovkovým režimem. Procentní hodnoty rychlosti vypisované MPlayerem byste měli brát s rezervou, jelikož například při použití X11 nezahrnují čas spotřebovaný X serverem pro vlastní vykreslování. Zavěste terminál na sériovou linku počítače a spusťte top, abyste viděli co se opravdu děje ve vašem počítači.
Obecně zrychlení použitím DGA oproti 'běžnému' X11 velmi závisí na vaší grafické kertě a jak dobře je pro ni optimalizován modul X serveru.
Pokud máte pomalý stroj, raději použijte 15 nebo 16 bitovou hloubku, jelikož vyžaduje pouze poloviční průchodnost paměti oproti 32 bitovému zobrazení.
Použití hloubky 24 bitů je dobré i v případě, že vaše karta nativně podporuje pouze barevnou hloubku 32 bitů, jelikož se přenáší o 25% méně dat oproti režimu 32/32.
Viděl jsem pár AVI souborů přehrávat na Pentiu MMX 266. Procesory AMD K6-2 pracují při 400 MHZ a výše.
ZNÁMÉ CHYBY. Podle některých vývojářů XFree je DGA zvěrstvo. Říkají, abyste je raději nepoužívali. Jeho implementace není vždy bezproblémová v každém dostupném ovladači pro XFree.
V XFree 4.0.3 je v nv.o chyba vedoucí k podivným barvám.
Ovladač pro ATI vyžaduje více než jedno zpětné přepnutí režimu po skončení používání DGA.
Některé ovladače selžou při přepnutí do normálního rozlišení (použijte Ctrl+Alt+Numerické + a Ctrl+Alt+Numerické - pro ruční přepnutí).
Některé ovladače zobrazují divné barvy.
Některé ovladače lžou o množství paměti kterou mapují do adresového prostoru procesu, takže vo_dga nepoužije dvojitou vyrovnávací paměť (SIS?).
Některé ovladače nezvládnou ohlásit dokonce ani jeden platný režim. V tom případě rozhraní DGA spadne s hláškou o nesmaslném režimu 100000x100000 nebo tak.
OSD pracuje pouze se zapnutou dvojitou vyrovnávací pamětí (jinak poblikává).
SDL (Simple Directmedia Layer) je zjednodušeně unifikované
video/audio rozhraní. Programy, které ji používají, znají pouze SDL a ne
jaký audio nebo video ovladač SDL aktuálně používá. Například klon DOOMa
může běžet na svgalib, aalib, X, fbdev a dalších. Musíte jen nastavit
(například) video ovladač pomocí proměnné prostředí
SDL_VIDEODRIVER
. Aspoň teoreticky.
V MPlayeru používáme její softwarový škálovač ovladače X11 pro karty/ovladače, které nepodporují XVideo, dokud nevytvoříme vlastní (rychlejší, hezčí) softwarový škálovač. Rovněž jsme používali její výstup na aalib, ale nyní máme vlastní, což je mnohem pohodlnější. Její DGA režim byl až doposud lepší než náš. Sledujete? :)
Rovněž pomáhá s některými chybnými ovladači/kartami, pokud je video roztřesené (nikoli problém pomalého stroje), nebo se zpožďuje zvuk.
SDL video rozhraní podporuje zobrazování titulků pod filmem, v (pokud je) černém okraji.
INSTALACE. Budete muset nainstalovat svgalib i s development balíčkem, aby MPlayer vytvořil své SVGAlib rozhraní (autodetekováno, ale nelze vynutit) a nezapomeňte upravit /etc/vga/libvga.config tak, aby odpovídal vaší kartě a monitoru.
Ujistěte se, že nepoužíváte volbu -fs, jelikož zapíná použití softwarového škálování, což je pomalé. Pokud jej opravdu potřebujete, použijte volbu -sws 4, což poskytuje špatnou kvalitu, ale je o poznání rychlejší.
PODPORA EGA (4BPP). SVGAlib obsahuje EGAlib a MPlayer umí zobrazovat jakýkoli film v 16 barvách, což je vhodné v následujících konfiguracích:
EGA karta s EGA monitorem: 320x200x4bpp, 640x200x4bpp, 640x350x4bpp
EGA karta s CGA monitorem: 320x200x4bpp, 640x200x4bpp
Hodnota bpp (bitů na pixel) musí být nastavena na 4 ručně: -bpp 4
Obraz bude nejspíš muset být zmenšený tak, aby se vešel v EGA režimu:
-vf scale=640:350
nebo
-vf scale=320:200
Když potřebujeme rychlou, ale nekvalitní škálovací rutinu:
-sws 4
Možná bude muset být vypnuta automatická korekce poměru stran:
-noaspect
Podle mých zkušeností lze dosáhnout nejlepší kvality obrazu na EGA obrazovkách mírným snížením jasu: -vf eq=-20:0. Na svém počítači jsem rovněž musel snížit vzorkovací kmitočet zvuku, protože zvuk pří 44kHz byl vadný: -srate 22050.
Zapnout OSD a titulky můžete pouze v kombinaci s expand filtrem, viz man stránka pro přesné parametry.
Podpora pro cíl FBdev je autodetekována během ./configure. Přečtěte si dokumentaci framebufferu ve zdrojových kódech kernelu (Documentation/fb/*) pro více informací.
Pokud vaše karta nepodporuje standard VBE 2.0 (starší ISA/PCI karty, jako S3 Trio64), pouze VBE 1.2 (nebo straší?): Nuže, stále máte k dispozici VESAfb, ale budete muset nahrát SciTech Display Doctor (původně UniVBE) před startem Linuxu. Použijte bootovací disk DOSu nebo tak. A nezapoměňte si zaregistrovat svůj UniVBE ;))
Výstup FBdev přijímá několik dodatečných voleb:
nastaví zařízení framebufferu k použití (výchozí: /dev/fb0)
název režimu k použití (podle /etc/fb.modes)
config soubor režimů (výchozí: /etc/fb.modes)
důležité hodnoty, viz example.conf
Pokud se chcete přepnout do určitého režimu, pak použijte
mplayer -vm -fbmodename_of_mode
soubor
-vm samotná zvolí nejpříhodnější režim z /etc/fb.modes. Může být rovněž použita spolu s volbami -x a -y. Volba -flip je podporována pouze pokud pixelový formát filmu odpovídá pixelovému formátu videorežimu. Věnujte pozornost hodnotě bpp. Ovladač fbdev zkusí použít aktuální, nebo pokud zadáte volbu -bpp, pak tuto.
Volba -zoom není podporována (použijte -vf scale). Nelze použít režimy 8bpp (nebo nižší).
Pravděpodobně budete chtít vypnout kursor:
echo -e '\033[?25l'
nebo
setterm -cursor off
a spořič obrazovky:
setterm -blank 0
Pro opětovné zapnutí kursoru:
echo -e '\033[?25h'
nebo
setterm -cursor on
Změna videorežimu FBdev nepracuje ve VESA framebufferu a nechtějte to po nás, jelikož to není omezení MPlayeru.
mga_vid
je kombinací výstupního video rozhraní a
Linuxového jaderného modulu, který používá Matrox G200/G400/G450/G550 video
scaler/overlay jednotku pro konverzi YUV->RGB barevného prostoru a libovolé
škálování videa.
mga_vid
má hardwarovou podporu VSYNC s trojitou
vyrovnávací pamětí. Pracuje jak ve framebuffer konzoli, tak v X, ale pouze
s Linuxem 2.4.x.
Chcete-li verzi ovladače pro Linux 2.6.x, podívejte se na http://attila.kinali.ch/mga/.
Instalace:
Pokud jej chcete použít, nejdříve musíte sestavit mga_vid.o:
cd drivers make
Pake spusťte (jako root
)
make install
což by mělo nainstalovat modul a vytvořit pro vás soubor zařízení. Ovladač nahrajte pomocí
insmod mga_vid.o
Měli byste ověřit velikost detekované paměti pomocí příkazu dmesg. Pokud je špatná, použijte volbu mga_ram_size (nejdřív rmmod mga_vid), nastavte velikost paměti karty v MB:
insmod mga_vid.o mga_ram_size=16
Aby se nahrával/odstraňoval automaticky podle potřeby, nejdříve přidejte následující řádek na konec /etc/modules.conf:
alias char-major-178 mga_vid
Teď budete muset (pře)kompilovat MPlayer, ./configure zdetekuje /dev/mga_vid a zakompiluje 'mga' rozhraní. V MPlayeru se používá pomocí -vo mga pokud máte matroxfb konzoli, nebo -vo xmga pod XFree86 3.x.x nebo 4.x.x.
Ovladač mga_vid spolupracuje s Xv.
Určité informace lze přečíst z /dev/mga_vid zařízení, například pomocí
cat /dev/mga_vid
a může do něj být zapsána změna jasu:
echo "brightness=120" > /dev/mga_vid
Ve stejném adresáři je i testovací aplikace jménem mga_vid_test. Měla by na obrazovku kreslit obrázky 256x256 bodů, pokud vše pracuje jak má.
Tento ovladač používá ovladač framebufferu tdfx z jádra pro přehrávání filmů s YUV akcelerací. Budete potřebovat jádro s podporou tdfxfb a rekompilovat s
./configure --enable-tdfxfb
Toto je kombinace Linuxového jaderného modulu a video výstupního
rozhraní podobného mga_vid.
Budete potřebovat 2.4.x kernel s agpgart
ovladačem, jelikož tdfx_vid
používá AGP.
Předejte --enable-tdfxfb do configure
abyste sestavili video výstupní rozhraní a sestavte jaderný modul pomocí
následujících instrukcí.
Instalace jaderného modulu tdfx_vid.o:
Kompilace tdfx_vid.o:
cd drivers make
Pak spusťte (jako root
)
make install
což by mělo nainstalovat modul a vytvořit soubor zařízení. Nahrajte ovladač pomocí
insmod tdfx_vid.o
Aby se nahrával a odstraňoval automaticky podle potřeby, vložte nejprve následující řádku na konec /etc/modules.conf:
alias char-major-178 tdfx_vid
Ve stejném adresáři je testovací aplikace jménem tdfx_vid_test. Měla by vypisovat pár užitečných informací, pokud vše dobře pracuje.
MPlayer podporuje zobrazování filmů pomocí OpenGL, ale pokud vaše platforma/ovladač podporuje xv což by měl být případ PC s Linuxem, použijte raději xv, jelikož výkon OpenGL je o poznání horší. Pokud máte X11 implementaci bez podpory xv, je OpenGL slušná alternativa.
Naneštěstí ne všechny ovladače tuto vlastnost podporují. Ovladače Utah-GLX (pro XFree86 3.3.6) ji podporují pro všechny karty. Viz http://utah-glx.sf.net pro detaily jak je nainstalovat.
XFree86(DRI) 4.0.3 nebo pozdější podporují OpenGL s kartami Matrox a Radeon, 4.2.0 a pozdější podporují Rage128. Viz http://dri.sf.net pro stažení a instalační instrukce.
Rada od jednoho z uživatelů: GL video výstup lze použít pro dosažení vertikálně synchronizovaného TV výstupu. Budete muset nastavit proměnnou prostředí (aspoň na nVidii):
export __GL_SYNC_TO_VBLANK=1
AAlib je knihovna pro zobrazování grafiky v textovém režimu pomocí výkonného ASCII renderovače. Existuje spousta programů, ktaré ji již podporují, jako DOOM, Quake, atd. MPlayer pro ni obsahuje šikovné rozhraní. Pokud ./configure zjistí nainstalovanou aalib, sestaví se aalib libvo rozhraní.
Můžete použít některé klávesy v AA okně pro změnu renderovacích voleb:
Klávesa | Akce |
---|---|
1 | sníží kontrast |
2 | zvýší kontrast |
3 | sníží jas |
4 | zvýší jas |
5 | vypíná/zapíná rychlé renderování |
6 | nastaví rozhodovací režim (žádný, error distribution, Floyd Steinberg) |
7 | inverze obrazu |
8 | přepíná mezi ovládáním aa a MPlayeru |
Můžete použít následující volby příkazového řádku:
V
změna barvy OSD
V
změna barvy titulků
kde V
může být:
0
(normální),
1
(tmavé),
2
(tučné),
3
(polotučný font),
4
(reverz),
5
(speciální).
AAlib samotná poskytuje velké množství voleb. Zde je několik důležitých:
Nastaví doporučený aa ovladač (X11, curses, Linux).
Použití všech 256 znaků.
Použití osmibitového ASCII.
Vypíše všechny aalib volby.
Renderování je velmi náročné na CPU, zvlášť při použití AA-na-X (aalib na X) a nejméně náročné je na standardní neframebuferované konzoli. Použijte SVGATextMode pro nastavení velkého textového režimu a užijte si! (secondary head Hercules cards rock :)) (ale IMHO můžete použít volbu -vf 1bpp pro grafiku na hgafb:)
Použijte volbu -framedrop, pokud váš počítač není dostatečně rychlý pro renderování všech snímků!
Při přehrávání na terminálu dosáhnete lepší rychlosti i kvality použitím
ovladače Linux, bez curses (-aadriver linux). Ale pak budete
potřebovat práva k zápisu do
/dev/vcsa<terminal>
!
Aalib to nedetekuje, ale vo_aa zkouší najít nejlepší režim.
Pro více ladících možností viz http://aa-project.sf.net/tune.
Knihovna libcaca
je grafická knihovna produkující text místo pixelů, takže může fungovat na
starších video kartách a textových terminálech. Není nepodobná známé knihovně
AAlib
.
libcaca
vyžaduje k činnosti terminál,
takže by měla fungovat na všech Unixových systémech (včetně Mac OS X) pomocí buď
knihovny slang
nebo knihovny
ncurses
, pod DOSem pomocí knihovny
conio.h
a na systémech Windows
pomocí buď slang
nebo
ncurses
(pomocí emulace Cygwin) nebo
conio.h
. Pokud
./configure
detekuje libcaca
, bude sestaveno
rozhraní caca libvo.
Odlišnosti od AAlib
jsou:
16 dostupných barev pro znakový výstup (256 barev pro pár)
rozhodování podle barev v obrázku
Ale libcaca
má také následující
omezení:
nemá podpora pro jas, kontrast a gamu
V caca okně můžete použít některé klávesy pro změnu renderovacích volby:
Klávesa | Akce |
---|---|
d |
Přepíná metody rozhodování v libcaca .
|
a |
Přepíná vyhlazování v libcaca .
|
b |
Přepíná pozadí v libcaca .
|
libcaca
také respektuje některé
proměnné prostředí:
Nastaví doporučený caca ovladač, jako ncurses, slang, x11.
Nastaví počet řad a sloupců. Např. 128x50.
Nastaví použitý font. Např. fixed, nexus.
Použijte volbu -framedrop, pokud váš počítač není dost rychlý pro renderování všech snímků.
Tento ovladač byl navržen a představen jako obecný ovladač pro jakoukoli video kartu, která má VESA VBE 2.0 kompatibilní BIOS. Další výhodou tohoto ovladače je, že zkouší vynutit zapnutí výstupu na TV. VESA BIOS EXTENSION (VBE) Version 3.0 Date: September 16, 1998 (Strana 70) uvádí:
Karty Dual-Controller. VBE 3.0 podporuje karty s dual-controllerem za předpokladu že, jelikož jsou typicky oba controllery vybaveny stejným OEM a nastavovány jedinou BIOS ROM na stejné grafické kartě, je možné skrýt před aplikací přítomnost dvou controllerů. To omezuje nezávislé použití jednotlivých controllerů, ale umožňuje aplikacím vydaným před VBE 3.0 pracovat normálně. VBE funkce 00h (Návrat informací o controlleru) vrací kombinované informace obou conrollerů, včetně kombinovaného seznamu platných režimů. Příslušný controller je aktivován jakmile aplikace vybere režim. Všechny ostatní VBE funkce pak pracují s aktivním controllerem.
Máte tedy možnost s tímto rozhraním dostat funkční TV výstup. (Soudím že TV výstup má velmi často samostatnou jednotku, nebo aspoň samostatný výstup.)
VÝHODY
Máte šanci sledovat video dokonce i když Linux nezná váš video hardware.
Nepotřebujete mít ve svém Linuxu nainstalovány žádné věci související s grafikou (jako X11 (alias XFree86), fbdev atd). Toto rozhraní lze provozovat z textového režimu.
Máte šanci získat funkční TV-out. (Je to pravda minimálně s kartami ATI).
Toto rozhraní volá int 10h
handler, takže není
emulátorem – volá skutečné věci
skutečného BIOSu v reálném režimu
(ve skutečnosti v režimu vm86).
Můžete s ním použít VIDIX, takže dostanete akcelerované video a TV výstup současně! (Doporučeno pro karty ATI.)
Máte-li VESA VBE 3.0+ a nastavili jste si někde monitor-hfreq, monitor-vfreq, monitor-dotclock (config soubor nebo příkazový řádek) dostanete nejvyšší možný obnovovací kmitočet. (Using General Timing Formula). Abyste této funkce dosáhli, musíte nastavit všechna nastavení monitoru.
NEVÝHODY
Pracuje pouze na systémech x86.
Může to použít pouze root
.
Zatím je dostupné pouze pro Linux.
Nepoužívejte toto rozhraní s GCC 2.96! Nefunguje!
VOLBY PŘÍKAZOVÉHO ŘÁDKU DOSTUPNÉ PRO VESA
volby
zatím dostupné: dga
pro vynucení dga režimu a
nodga
pro jeho potlačení. V režimu dga můžete zapnout
dvojitou vyrovnávací paměť pomocí volby -double.
Poznámka: Tyto volby můžete vynechat, abyste zapli
autodetekci dga režimu.
ZNÁMÉ PROBLÉMY A KLIČKY
Pokud máte nainstalován NLS font v Linuxové konzoli a použijete VESA rozhraní v textovém režimu, pak po ukončení MPlayeru budete mít nahrán ROM font místo národního. Můžete si opět nahrát národní font například pomocí utility setsysfont z distribuce Mandrake/Mandriva. (Tip: Stejná utilita je použita pro lokalizaci fbdev).
Některé Linuxové grafické ovladače neobnovují aktivní režim BIOSu v DOSové paměti. Takže pokud máte tento problém – vždy používejte VESA rozhraní pouze v textovém režimu. Jinak bude přesto aktivován textový režim (#03) a budete muset restartovat počítač.
Často po ukončení VESA rozhraní dostanete černou obrazovku. Chcete-li vrátit obraz do původního stavu – jednoduše se přepněte do jiné konzole (stiskem Alt+F<x>) a pak se přepněte zpět stejným způsobem.
Chcete-li funkční TV-out, musíte mít připojený TV konektor před startem počítače, jelikož se video BIOS inicializuje pouze jednou během POST procedury.
Pokud možno se mu vyhněte. Posílá obraz do X11 (používá rozšíření sdílená paměť) bez jakékoli hardwarové akcelerace. Podporuje (MMX/3DNow/SSE akcelerované, ale přesto pomalé) softwarové škálování. Použijte volby -fs -zoom. Většina karet má hardwarovou podporu škálování, použijte pro ně volbu -vo xv, nebo -vo xmga pro karty Matrox.
Problém je, že většina karet nepodporuje hardwarovou akceleraci na sekundárním výstupu/TV. V těchto případech uvidíte místo filmu zelenou/modrou obrazovku. Teď se hodí toto rozhraní, ale potřebujete silný procesor pro použití softwarového škálování. Nepoužívejte SDL softwarový výstup a škálování, má horší kvalitu obrazu!
Softwarové škálování je velmi pomalé, zkuste raději měnit videorežimy. Je to jednoduché. Viz modelines v DGA sekci a přidejte je do svého XF86Config.
Máte-li XFree86 4.x.x: použijte volbu -vm. Ta změní rozlišení tak, aby do něj film dobře vešel. Když ne:
S XFree86 3.x.x: musíte cyklovat dostupnými rozlišeními pomocí tlačítek Ctrl+Alt+Numerické + a Ctrl+Alt+Numerické -
Pokud nemůžete najír rozlišení, která jste vložili, pročtěte si výstup XFree86. Některé ovladače nezvládnou nízké bodové kmitočty potřebné pro režimy s nízkým rozlišením videa.
PŘEDMLUVA. VIDIX je zkratka pro VIDeo Interface for *niX (video rozhraní pro *nix). VIDIX bylo navrženo a představeno jako rozhraní pro rychlé uživatelské ovladače dosahujících video výkonu jako dosahuje mga_vid na kartách Matrox. Je rovněž dobře přenositelné.
Toto rozhraní bylo navrženo jako pokus napasovat existující video akcelerující rozhraní (známé jako mga_vid, rage128_vid, radeon_vid, pm3_vid) do pevného schéma. Poskytuje vysokoúrovňové rozhraní k čipům známým jako BES (BackEnd scalers) nebo OV (Video Overlays). Neposkytuje nízkoúrovňové rozhraní k věcem známým jako grafické servery. (Nechci konkurovat X11 týmu v přepínání grafických režimů). Čili hlavním cílem tohoto rozhraní je maximalizace rychlosti přehrávání videa.
POUŽITÍ
Můžete použít samostatné video rozhraní: -vo xvidix. Toto rozhraní bylo vytvořeno jako front end X11 k technologii VIDIX. Vyžaduje X server a může pracovat pouze pod X serverem. Poznamenejme, že jelikož přímo komunikuje s hardwarem a obchází X ovladač, pixmapy uložené v paměti grafické karty můžou být poškozeny. Můžete se tomu vyhnout omezením množství video paměti použité X pomocí volby "VideoRam" v XF86Config o 4MB. Pokud máte méně než 8MB video ram, můžete místo toho použít volbu "XaaNoPixmapCache" v sekci screen.
Existuje konzolové VIDIX rozhraní: -vo cvidix. To vyžaduje pro většinu karet funkční inicializovaný framebuffer (jinak pouze rozhodíte obrazovku) a dosáhnete podobného efektu jako s -vo mga nebo -vo fbdev. nVidia karty však jsou schopny zobrazit plně grafické video na reálné textové konzoli. Viz sekci nvidia_vid pro více informací. Abyste se zbavili textu na okrajích a blikajícího kursoru, zkuste něco jako
setterm -cursor off > /dev/tty9
(předpokládáme, že tty9
není dosud používaná) a pak
se přepneme do tty9
.
Na druhou stranu volba -colorkey 0 by měla poskytnout
video běžící na "pozadí", zprávná funkce však závisí na funkčnosti colorkey.
Můžete použít VIDIXové podzařízení, které bylo zabudováno do několika video ovladačů, například: -vo vesa:vidix (pouze Linux) a -vo fbdev:vidix.
Nezáleží na tom, které video výstupní rozhraní je použito s VIDIX.
POŽADAVKY
Video karta by měla být v grafickém režimu (vyjma karet nVidia s výstupním rozhraním -vo cvidix).
Výstupní video rozhraní MPlayeru by mělo znát aktivní video režim a být schopno sdělit VIDIXovému podzařízení některé video charakteristiky serveru.
METODY POUŽITÍ. Když použijete VIDIX jako subdevice (-vo vesa:vidix), pak je konfigurace video režimu je provedeno výstupním video rozhraním (zkrátka vo_serverem). Takže můžete zadat na příkazovém řádku MPlayeru stejné volby jako pro vo_server. Návdavkem rozeznává volbu -double jako globální parametr. (Doporučuji použít tuto volbu s VIDIX aspoň pro ATI kartu). Stejně jako -vo xvidix, dosud zná následující volby: -fs -zoom -x -y -double.
Rovněž můžete uvést VIDIXový ovladač jako třetí podvolbu na příkazovém řádku:
mplayer -vo xvidix:mga_vid.so -fs -zoom -double soubor.avi
nebo
mplayer -vo vesa:vidix:radeon_vid.so -fs -zoom -double -bpp 32 soubor.avi
Ale je to nebezpečné a neměli byste to dělat. V tomto případě bude zadaný ovladač vynucen a výsledek je nepředvídatelný (může vám zatuhnout počítač). Měli byste to použít POUZE pokud jste si absolutně jistí, že to bude fungovat a MPlayer to neudělá automaticky. Řekněte o tom prosím vývojářům. Správný způsob je použití VIDIX bez argumentů, aby proběhla autodetekce.
Jelikož VIDIX vyžaduje přímý přístup k hardware, můžete jej buď spustit jako root, nebo nastavit SETUID bit binárce MPlayeru (Varování: Toto je bezpečnostní risk!). Alternativně můžete použít speciální jaderný modul, například:
Stáhněte si vývojovou verzi svgalib (například 1.9.17), NEBO si stáhněte verzi vytvořenou Alexem speciálně pro použití s MPlayerem (ke kompilaci nepotřebuje zdrojový kód svgalib) z odtud.
Skompilujte modul v adresáři svgalib_helper (naleznete ji v svgalib-1.9.17/kernel/, pokud jste si stáhli zdrojový kód ze serveru svgalib) a nahrajte (insmod) jej.
Pro vytvoření potřebných zařízení v adresáři /dev proveďte jako root
make device
v adresáři svgalib_helper.
Přesuňte adresář svgalib_helper do podadresáře vidix zdrojových kódů MPlayeru.
Odkomentujte řádek CFLAGS obsahující text "svgalib_helper" v souboru vidix/Makefile.
Překompilujte.
V současnosti je většina ATI karet podporována nativně od Mach64 až po nejnovější Radeony.
Existují dvě skompilované binárky: radeon_vid pro Radeony a rage128_vid pro karty Rage 128. Můžete některou vynutit, nebo nechat VIDIX rozhraní autodetekovat všechny dostupné ovladače.
Matrox G200, G400, G450 a G550 jsou hlášeny jako funkční.
Ovladač podporuje video ekvalizéry a měl by být téměř tak rychlý jako Matrox framebuffer
Existuje ovladač pro čipset Trident Cyberblade/i1, který lze nalézt na motherboardech VIA Epia.
Ovladač byl napsán a je udržován Alastairem M. Robinsonem
Ačkoli existuje ovladač pro čipy 3DLabs GLINT R3 a Permedia3, nikdo je netestoval, takže hlášení vítáme.
Unikátní vlastností ovladače nvidia_vid je jeho schopnost zobrazit video na jednoduché, čisté, pouze textové konzoli – bez framebufferu nebo nějaké X magie. Pro tento účel budete muset použít video rozhraní cvidix, jak to ukazuje následující příklad:
mplayer -vo cvidix příklad.avi
„DirectFB je grafická knihovna navržená se zřetelem na vestavěné systémy. Nabízí maximálně hardwarově akcelerovaný výkon při minimální spotřebě zdrojů a zatížení.“ – citováno z http://www.directfb.org
Vlastnosti DirectFB v této sekci vynechám.
Ačkoli MPlayer není podporován jako „video provider“ v DirectFB, toto video rozhraní umožní přehrávání videa přes DirectFB. Bude to samozřejmě akcelerované. Na mém Matroxu G400 byla rychlost DirectFB stejná jako XVideo.
Vždy se snažte používat nejnovější verzi DirectFB. Můžete nastavovat volby pro DirectFB na příkazovém řádku pomocí volby -dfbopts. Volbu vrstvy lze provést metodou podzařízení, např.: -vo directfb:2 (výchozí je vrstva -1: autodetekce)
Přečtěte si prosím hlavní DirectFB sekci pro obecné informace.
Toto video výstupní zařízení zapne CRTC2 (na sekundárním výstupu) na kartách Matrox G400/G450/G550, takže zobrazuje video nezávisle na hlavním výstupu.
Ville Syrjala's má README a HOWTO na své domácí stránce, kde vysvětluje, jak rozběhnout DirectFB TV výstup na kartách Matrox.
MPlayer podporuje karty s čipsetem Siemens DVB od výrobců jako Siemens, Technotrend, Galaxis nebo Hauppauge. Poslední DVB ovladače jsou dostupné na Linux TV serveru. Pokud chcete provádět softwarové transkódování, měli byste mít aspoň 1GHz CPU.
Configure by měl detekovat vaši DVB kartu. Pokud ne, vynuťte detekci pomocí
./configure --enable-dvb
Pokud máte ost hlavičky na nestandardním místě, nastavte cestu pomocí
./configure --extra-cflags=zdrojový adresář DVB
/ost/include
Pak kompilujte a instalujte obvyklým způsobem.
POUŽITÍ. Hardwarové dekódování proudů obsahujících MPEG–1/2 video a/nebo audio lze provést tímto příkazem:
mplayer -ao mpegpes -vo mpegpes soubor.mpg|vob
Dekódování jakéhokoli jiného typu video proudu vyžaduje transkódování MPEG–1, což je pomalé a nemusí stát za to, zvlášť s pomalým počítačem. Můžete jej dosáhnout příkazem podobným tomuto:
mplayer -ao mpegpes -vo mpegpesváš_soubor.ext
mplayer -ao mpegpes -vo mpegpes -vf expandváš_soubor.ext
Pamatujte, že DVB karty podporují pouze výšky 288 a 576 pro PAL nebo 240 a 480 pro NTSC. Jiné výšky musíte přeškálovat přidáním scale=šířka:výška s šířkou a výškou, které chcete do volby -vf. DVB karty akceptují různé šířky jako 720, 704, 640, 512, 480, 352 atd, a provádí hardwarově vodorovné škálování, takže ve většině případů nemusíte vodorovně škálovat. Pro 512x384 (poměr stran 4:3) MPEG–4 (DivX) zkuste:
mplayer -ao mpegpes -vo mpegpes -vf scale=512:576
Pokud máte širokoúhlý film a nechcete jej škálovat na plnou výšku, můžete použít filtr expand=š:v pro přidání černých okrajů. Pro promítání 640x384 MPEG–4 (DivX), zkuste:
mplayer -ao mpegpes -vo mpegpes -vf expand=640:576 soubor.avi
Pokud je váš procesor příliš slabý pro 720x576 MPEG–4 (DivX), zkuste podškálovat:
mplayer -ao mpegpes -vo mpegpes -vf scale=352:576 soubor.avi
Pokud se rychlost nezlepší, zkuste podškálovat i výšku:
mplayer -ao mpegpes -vo mpegpes -vf scale=352:288 soubor.avi
Pro OSD a titulky použijte OSD vlastnost expand filtru. Takže místo expand=š:v nebo expand=š:v:x:y, použijte expand=š:v:x:y:1 (pátý parametr :1 na konci zapne renderování OSD). Možná byste měli trochu posunout obraz nahoru, abyste měli větší černý okraj pro titulky. Rovněž byste měli posunout nahoru titulky, pokud jsou mimo TV obrazovku. Použijte volbu -subpos <0-100> pro toto nastavení (-subpos 80 je dobrá volba).
Chcete-li přehrávat filmy s jinou snímkovou rychlostí než 25 fps na PAL TV, nebo na pomalém CPU, přidejte volbu -framedrop.
Chcete-li zachovat poměr stran MPEG–4 (DivX) souborů a dosáhnout optimálních škálovacích parametrů (hardwarové horizontální škálování a softwarové vertikální škálování zatímco zachováte správný poměr stran), použijte filtr dvbscale:
pro 4:3 TV: -vf dvbscale,scale=-1:0,expand=-1:576:-1:-1:1 pro 16:9 TV: -vf dvbscale=1024,scale=-1:0,expand=-1:576:-1:-1:1
Digitální TV (vstupní DVB modul). Můžete použít svou DVB kartu pro sledování Digitální TV.
Měli byste mít nainstalovány programy scan a szap/tzap/czap/azap; všechny jsou zařazeny v balíčku ovladačů.
Ověřte si, zda vaše ovladače pracují správně s progamy jako je dvbstream (to je základ vstupního DVB modulu).
Nyní byste měli skompilovat soubor ~/.mplayer/channels.conf, se syntaxí akceptovanou szap/tzap/czap/azap, nebo nechat scan, aby jej skompiloval.
Pokud máte více než jeden typ karty (Např. Satellitar, Terrestrial, Cable a ATSC) můžete si uložit své channels soubory podle typu jako ~/.mplayer/channels.conf.sat, ~/.mplayer/channels.conf.ter, ~/.mplayer/channels.conf.cbl, a ~/.mplayer/channels.conf.atsc, kdy MPlayer použije tyto soubory spíše než ~/.mplayer/channels.conf, a vy musíte pouze nastavit, kterou kartu použít.
Ujistěte se, že máte pouze nekódované kanály ve svém channels.conf souboru, jinak se MPlayer pokusí přeladit na nejbližší zobrazitelný, ale to může trvat dlouho, pokud je zde mnoho po sobě jdoucích šifrovaných kanálů.
V polích audio a video můžete použít rozšířenou syntaxi: ...:pid[+pid]:... (maximálně 6 pidů každé); v tom případě zahrne MPlayer do datového proudu všechny zadané pidy plus pid 0 (který obsahuje PAT). Doporučujeme zahrnout do každého řádku PMT pid pro odpovídající kanál (pokud jej znáte) Můžete rovněž zadat 8192, to vybere všechny pidy na této frekvenci a vy pak můžete přepínat programy pomocí TAB. To může vyžadovat větší šířku pásma, ale laciné karty vždy přenášejí všechny kanály minimálně do jádra, takže u nich v tom nebude velký rozdíl. Další možná použití jsou: televideo pid, druhá audio stopa, atd.
Pokud MPlayer často protestuje o
Příliš mnoha video/audio paketech ve vyrovnávací paměti
nebo pokud si povšimnete rostoucí desynchronizace mezi zvukem a videem, zkuste použít MPEG–TS demuxer z libavformat přidáním -demuxer lavf -lavfdopts probesize=128 na příkazovém řádku.
Pro zobrazení prvního z kanálů uvedeného v seznamu, spusťte
mplayer dvb://
Pokud chcete sledovat určitý kanál, například R1, spusťte
mplayer dvb://R1
Pokud máte více než jednu kartu, musíte rovněž uvést číslo karty, na které lze kanál sledovat (např. 2). Syntyxe je:
mplayer dvb://2@R1
Pro změnu kanálu stiskněte klávesu h (další) nebo k (předchozí), nebo použijte OSD menu.
Pokud váš ~/.mplayer/menu.conf obsahuje řádek
<dvbsel>
podobný tomu v ukázkovém souboru
etc/dvb-menu.conf (který můžete použít k přepsání
~/.mplayer/menu.conf), bude v hlavním menu podseznam,
kde si budete moci zvolit kanál ze svého channels.conf.
Může mu případně předcházet menu se seznamem dostupných karet, pokud máte
více než jednu použitelnou MPlayerem.
Pokud si chcete uložit program na disk, můžete použít
mplayer -dumpfiler1.ts
-dumpstream dvb://R1
Pokud jej chcete zaznamenat v odlišném formátu (reenkódovat jej), spusťte místo toho příkaz podobný následujícímu:
mencoder -or1.avi
-ovc xvid -xvidencopts bitrate=800\ -oac mp3lame -lameopts cbr:br=128 -pp=ci dvb://R1
Přečtěte si man stránku pro seznam voleb, které můžete předat vstupnímu DVB modulu.
BUDOUCNOST. Máte-li otázky, nebo chcete dostávat oznámení o nových vlastnostech a zapojit se do diskuse o těchto věcech, připojte se k naší MPlayer-DVB e-mailové konferenci. Pamatujte prosím, že jazykem konference je angličtina.
V budoucnu můžete očekávat schopnost zobrazovat OSD a titulky pomocí nativní podpory OSD v DVB kartách, stejně jako plynulejší přehrávání filmů s jinou snímkovou rychlostí, než 25 fps a transkódování MPEG–2 na MPEG–4 v reálném čase (částečná dekomprese).
MPlayer podporuje hardwarově akcelerované přehrávání pomocí karty Creative DXR2.
Nejdříve musíte mít správně nainstalované DXR2 ovladače. Ovladače a návod k jejich instalaci naleznete na stránkách DXR2 Resource Center.
POUŽITÍ
Zapíná TV výstup.
Zapíná Overlay výstup v X11.
Tato volba je použita k ovládání DXR2 ovladače.
Overlay čipset použitý v DXR2 má mizernou kvalitu, ale výchozí nastavení pracuje vždy. OSD lze použít spolu s overlay (ne na TV) při jeho vykreslení v klíčovací barvě. S výchozím nastavením klíčovací barvy můžete dosáhnout různých výsledků, obvykle uvidíte klíčovací barvu kolem znaků nebo jiné srandovní věci. Pokud ale vhodně upravíte klíčování, můžete dosáhnout použitelných výsledků.
Prostudujte si prosím man stránku pro dostupné volby.
MPlayer podporuje hardwarově akcelerované přehrávání videa pomocí karet Creative DXR3 a Sigma Designs Hollywood Plus. Obě tyto karty používají MPEG dekodér em8300 od Sigma Designs.
Nejprve budete potřebovat správně nainstalované DXR3/H+ ovladače verze 0.12.0 nebo pozdější. Ovladače a návod na jejich instalaci naleznete na stránkách DXR3 & Hollywood Plus for Linux. configure by mělo automaticky detekovat vaši kartu a kompilace by se měla obejít bez potíží.
POUŽITÍ
zařízení
overlay aktivuje overlay místo TVOut. Pro správnou funkci
vyžaduje, abyste měli správně nakonfigurované nastavení overlay. Nejjednodužší
způsob nastavení overlay, je spuštění autocal. Pak spusťte MPlayer s video
výstupem nastaveným na dxr3 s vypnutým overlay, spusťte dxr3view. V dxr3view
si můžete hrát s nastavením overlay a pozorovat změny v reálném čase. Snad bude
tato funkce časem dostupná z GUI MPlayeru. Jakmile
máte správně nastaveno overlay, není již nutné používat dxr3view.
prebuf zapíná prebuffering. Prebuffering je vlastnost čipu
em8300, která mu umožňuje podržet si více než jeden videosnímek současně.
To znamená, že pokud jej máte zapnutý, snaží se
MPlayer udržet vyrovnávací paměť videa (buffer)
naplněný daty.
Pokud jej provozujete na pomalém stroji, použije
MPlayer téměř nebo přesně 100% výkonu CPU.
To je zvlášť časté, pokud přehráváte čisté MPEG datové proudy
(jako DVD, SVCD atp.) jelikož je MPlayer nemusí
převádět do MPEG, naplní buffer velmi rychle.
S prebufferingem je přehrávání videa mnohem
méně citlivé na zaměstnávání CPU jinými programy. Nebudou zahozeny snímky, pokud
si aplikace neuzme CPU na dlouhou dobu.
Pokud přehráváte bez prebufferingu, je em8300 mnohem citlivější na vytížení CPU,
takže doporučujeme zapnout MPlayerovu volbu
-framedrop pro zachování synchronizace.
sync zapíná nový sync–engine. To je zatím experimentální
vlastnost. Se zapnutým sync budou vnitřní hodiny em8300 neustále sledovány a
pokud se začnou rozcházet s časovačem MPlayeru,
budou resetovány, což způsobí, že em8300 zahodí veškeré snímky, které čekají ve
frontě.
norm=x nastaví TV normu DXR3 karty bez nutnosti externího
nástroje jako em8300setup. Platné normy jsou 5 = NTSC, 4 = PAL-60,
3 = PAL. Zvláštní normy jsou 2 (automaticné nastavení s použitím PAL/PAL-60) a
1 (automatické nastavení s použitím PAL/NTSC), jelikož ty určí použitou normu
podle snímkové rychlosti filmu. norm = 0 (výchozí) nezmění aktuální normu.
device
= číslo zařízení, které se
má použít, pokud máte více než jednu em8300 kartu.
Jakoukoli z těchto voleb můžete vynechat.
Volba :prebuf:sync, zdá se, pracuje skvěle při přehrávání filmů
v MPEG–4 (DivX). Lidé však hlásili potíže s volbou prebuf při přehrávání souborů
v MPEG–1/2.
Měli byste je nejprve zkusit přehrát bez dodatečných voleb a pokud
narazíte na potíže se synchronizací nebo DVD titulky, zkuste to s volbou
:sync.
X
Pro zvukový výstup, kde X
je číslo zařízení
(0 máte-li jen jednu kartu).
xxxxx
Čip em8300 neumí přehrávat signál vzorkovaný méně než 44100Hz. Pokud je vzorkovací kmitočet pod 44100Hz, zvolte buď 44100Hz nebo 48000Hz podle toho, násobek kterého je blíž. Čili pokud má film zvuk 22050Hz použijte 44100Hz, jelikož 44100 / 2 = 22050, pokud jej má 24000Hz použijte 48000Hz jelikož 48000 / 2 = 24000 a tak dále. S výstupem digitálního audia to nefunguje (-ac hwac3).
Pro přehrávání ne–MPEG obsahu na em8300 (např. MPEG–4 (DivX) nebo RealVideo)
musíte nastavit MPEG–1 video filtr jako
libavcodec
(lavc).
Viz manuál pro další informace o -vf lavc.
V tuto chvíli není možné nastavit snímkovou rychlost em8300, což znamená,
že je pevně nastavena na 30000/1001 snímků/s (fps).
Z toho důvodu doporučujeme,
abyste použili -vf lavc=quality
:25
zvlášť pokud používáte prebuffering. Proč tedy 25 a ne 30000/1001? Nu, důvodem
je, že pokud zadáte 30000/1001, začne obraz trochu poskakovat.
Důvod tohoto jevu nám není znám.
Pokud to nastavíte někde mezi 25 a 27, obraz se ustálí.
Pro tuto chvíli se to dá pouze uznat jako fakt.
Ačkoli DXR3 ovladač umí dodat OSD do MPEG–1/2/4 videa, má to mnohem nižší kvalitu než tradiční OSD MPlayeru a má i různé problémy s obnovováním. Výše uvedený příkazový řádek nejprve převede vstupní video do MPEG–4 (je to nutné, sorry), pak aplikuje filtr expand, který však nic neexpanduje (-1: výchozí), ale doplní normální OSD do obrazu (na to je ta „1“ na konci).
Čip em8300 podporuje přehrávání zvuku v AC–3 (prostorový zvuk) přes digitální audio výstup na kartě. Viz výš volbu -ao oss. Ta musí být použita pro nastavení výstupu do DXR3 místo zvukové karty.
Toto je zobrazovací rozhraní (-vo zr) pro mnoho MJPEG
zachytávacích/přehrávacích karet (testováno na DC10+ a Buz a mělo by pracovat
i s LML33, tedy DC10). Rozhraní pracuje tak, že snímek zakóduje do JPEG a pak
jej pošle do karty. Pro enkódování do JPEG se používá
libavcodec
a je pro ně nezbytný.
Ve speciálním cinerama režimu můžete sledovat filmy
v pravém širokoúhlém formátu, kterého je dosaženo tak, že máte dvě promítačky
a dvě MJPEG karty. V závislosti na rozlišení a nastavení kvality může toto
rozhraní vyžadovat spoustu výkonu CPU. Nezapomeňte zadat
-framedrop, pokud je váš počítač příliš pomalý.
Poznámka: Můj AMD K6-2 350MHz je (s -framedrop) vcelku
adekvátní pro sledování materiálu o rozměru VCD a podškálovaných filmů.
Toto rozhraní komunikuje s jaderným modulem dostupným na http://mjpeg.sf.net, takže jej nejdříve musíte zprovoznit. Přítomnost MJPEG karty je autodetekována skriptem configure. Pokud detekce selže, vynuťte ji pomocí
./configure --enable-zr
Výstup může být ovlivňován několika volbami. Obšírný výklad těchto voleb naleznete v man stránce, krátký přehled obržíte spuštěním
mplayer -zrhelp
Věci jako škálování a OSD (display na obrazovce) nejsou tímto rozhraním pokryty, ale lze jich dosáhnout pomocí video filtrů. Například mějte video o rozlišení 512x272 a chcete jej přehrávat na celé obrazovce přes DC10+, pak máte tři základní možnosti, jak to udělat. Můžete škálovat video na šířku 768, 384 nebo 192. Z důvodu výkonu a kvality si zvolíte škálování filmu na 384x204 pomocí bilineárního softwarového škálovače. Příkazový řádek je pak
mplayer -vo zr -sws 0 -vf scale=384:204 film.avi
Ořezání lze provést crop filtrem a samotným rozhraním. Řekněme, že film je příliš široký pro promítání na vaší Buz a proto chcete použít -zrcrop pro zůžení filmu, pak byste měli použít následující příkaz
mplayer -vo zr -zrcrop 720x320+80+0 benhur.avi
chcete-li použít filtr crop, proveďte
mplayer -vo zr -vf crop=720:320:80:0 benhur.avi
Zvláštní případy -zrcrop vyvolá režim cinerama, takže rozprostřete film na několik televizí nebo promítaček, čímž se vytvoří větší obraz. Předpokládejme, že máte dvě promítačky. Levá je připojena k vaší Buz na /dev/video1 a pravý je připojen do vaší DC10+ na /dev/video0. Film má rozlišení 704x288. Předpokládejme rovněž, že pravá promítačka je černobílá a levá umí JPEG snímky s kvalitou 10, pak byste měli použít následující příkaz
mplayer -vo zr -zrdev /dev/video0 -zrcrop 352x288+352+0 -zrxdoff 0 -zrbw \
-zrcrop 352x288+0+0 -zrdev /dev/video1 -zrquality 10 \
movie.avi
Jak vidíte, volby uvedené před druhým -zrcrop jsou předány pouze do DC10+ a volby za druhým -zrcrop do Buz. Maximální počet MJPEG karet zahrnutých do cinerama režimu jsou čtyři, takže můžete sestavit zobrazovací stěnu 2x2.
Nakonec důležité upozornění: Nespouštějte ani nezastavujte XawTV na přehrávacím zařízení během přehrávání, zhavaru je vám počítač. Můžete však NEJDŘÍV spustit XawTV a PAK spustit MPlayer, počkat až MPlayer skončí a PAK zastavit XawTV.
Toto rozhraní je schopno přehrávání pomocí Blinkenlights UDP protokolu. Pokud nevíte co je Blinkenlights nebo jeho nástupce Arcade, zjistěte si to. Ačkoli je to dost možná nejméně používané video výstupní rozhraní, bezpochyby je tím nejlepším, co může MPlayer nabídnout. Stačí shlédnout některá z Blinkenlights dokumentačních videí. Na Arcade video můžete vidět výstupní rozhraní Blinkenlights v akci v 00:07:50.
Pod Linuxem máte dva způsoby jak zprovoznit TV výstup na G400:
pro instrukce k TV výstupu na Matrox G450/G550 si prostudujte textovou část!
Pomocí ovladače a HAL modulu dostupného na stránkách Matrox. Takto dostanete X na TV.
Tato metoda vám neposkytne akcelerované přehrávání jako pod Windows! Sekundární jednotka má pouze YUV framebuffer, BES (Back End Scaler, YUV škálovač na kartách G200/G400/G450/G550) na něm nepracuje! Ovladač pro Windows to nějak obchází, pravděpodobně použitím 3D jednotky pro zoom a YUV framebufferu pro zobrazení zoomovaného obrazu. Pokud opravdu chcete použít X, použijte volby -vo x11 -fs -zoom, ale bude to POMALÉ a bude zapnuta ochrana proti kopírování Macrovision (Macrovision můžete obejít pomocí tohoto perlového skriptu).
Pomocí matroxfb modulů v jádrech řady 2.4. Jádra 2.2 v nich neobsahují podporu pro TV, takže jsou pro tento účel nepoužitelná. Měli byste povolit VŠECHNY matroxfb-specifické vlastnosti během kompilace (vyjma MultiHead) a zakompilovat je do modulů! Rovněž potřebujete zapnuté I2C.
Vstupte do TVout a zadejte
./compile.sh. Nainstalujte
TVout/matroxset/matroxset
někde do cesty PATH
.
Nemáte-li nainstalován fbset, vložte
TVout/fbset/fbset
někde do cesty PATH
.
Nemáte-li nainstalován con2fb, vložte
TVout/con2fb/con2fb
někde do cesty PATH
.
Pak vstupte do adresáře TVout/ ve zdrojovém adresáři MPlayeru a spusťte ./modules jako root. Vaše textová konzole přejde do režimu framebuffer (není cesta zpět!).
Dále EDITUJTE a spusťte skript ./matroxtv. Objeví se vám velmi jednoduché menu. Stiskněte 2 a Enter. Nyní byste měli mít stejný obraz na svém monitoru i TV. Pokud má obraz na TV (výchozí je PAL) nějaké podivné šrámy, nebyl skript schopen nastavit správně rozlišení (na výchozích 640x512). Zkuste jiná rozlišení z menu a/nebo experimentujte s fbset.
Jo. Dalším úkolem je nechat zmizet kurzor z tty1 (nebo odjinud) a vypnout mazání obrazovky. Spusťe následující příkazy:
echo -e '\033[?25l' setterm -blank 0
nebo
setterm -cursor off setterm -blank 0
Předchozí nejspíš bude lepší umístit do skriptu a také vyčistit obrazovku. Pro zpětné zapnutí kurzoru:
echo -e '\033[?25h'
nebo
setterm -cursor on
A jasně. Spusťte přehrávání filmu:
mplayer -vo mga -fs -screenw 640 -screenh 512 soubor
(Pokud používáte X, přepněte se nyní do matroxfb pomocí například
Ctrl+Alt+F1.)
Změňte 640
a 512
pokud máte
nastaveno jiné rozlišení...
Užijte si ultra-rychlý ultra-vybavený Matrox TV výstup (lepší než Xv)!
Výroba kabelu pro Matrox TV–out. Zříkáme se jakékoli odpovědnosti nebo záruky za jakékoli poškození způsobené touto dokumentací.
Kabel pro G400. Na čtvrtém pinu CRTC2 konektoru je kompozitní video signál. Zem je na šestém, sedmém a osmém pinu. (informaci poskytl Balázs Rácz)
Kabel pro G450. Kompozitní video signál je na pinu jedna. Zem je na pátém, šestém, sedmém a patnáctém (5, 6, 7, 15) pinu. (informaci poskytl Balázs Kerekes)
Podpora TV výstupu pro tyto karty byla přidána teprve nedávno a dosud není v ostré verzi jádra. V současnosti nelze (aspoň pokud vím) použít modul mga_vid, protože ovladač G450/G550 pracuje pouze v jedné konfiguraci: první CRTC čip (s mnohem více schopnostmi) na první displej a druhá CRTC (žádné BES – pro popis BES viz sekci G400 výše) na TV. Takže v současnosti můžete použít pouze MPlayerovo fbdev výstupní rozhraní.
První CRTC nemůže být v současnosti přesměrována na sekundární výstup. Autor jaderného ovladače matroxfb – Petr Vandrovec – pro to snad vyrobí podporu pomocí zobrazení výstupu prvního CRTC na oba výstupy najednou, což se pro tuto chvíli doporučuje pro G400, viz předchozí sekce.
Potřebnou záplatu jádra a podrobné HOWTO lze stáhnout z http://www.bglug.ca/matrox_tvout/
ÚVOD. V současnosti nechce ATI podporovat žádný ze svých TV-out čipů pod Linuxem z důvodu jejich licencované technologii Macrovision.
STATUS TV VÝSTUPU NA KARTÁCH ATI POD LINUXEM
Ne ostatních kartách prostě použijte rozhraní VESA bez VIDIX. Vyžaduje to výkoný CPU.
Jediné co musíte, je mít TV konektor zapojený před zapnutím PC jelikož video BIOS se inicializuje pouze jednou během POST procedury.
Nejprve si MUSÍTE stáhnout closed–source ovladače z http://nvidia.com. Nebudu zde popisovat instalaci a konfiguraci, jelikož je to mimo rámec této dokumentace.
Jakmile je funkční XFree86, XVideo a 3D akcelerace, editujte sekci Device v souboru XF86Config, podle následujícího příkladu (upravte si to pro svou kartu/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
Samozřejmě je nejdůležitější část TwinView.
Čip NeoMagic lze nalézt v různých laptopech. Některé z nich jsou vybaveny jednoduchým analogovým TV enkodérem, některé jej mají mnohem pokročilejší.
Analogový enkodér: Bylo nám hlášeno, že použitelný TV lze dosáhnout použitím -vo fbdev nebo -vo fbdev2. Musíte mít v jádře podporu vesafb a dopsat do příkazového řádku jádra následující parametry: append="video=vesafb:ywrap,mtrr" vga=791. Měli byste nastartovat X, pak se přepnout do terminálového režimu např. pomocí Ctrl+Alt+F1. Pokud se vám nepodaří nastartovat X před spuštěním MPlayeru z konzole, bude video pomalé a trhané (vysvětlení uvítáme). Nalogujte se do konzole a zadejte následující příkaz:
clear; mplayer -vo fbdev -zoom -cache 8192 dvd://
Video by nyní mělo běžet v konzoli a vyplňovat asi polovinu LCD obrazovky laptopu. Pro přepnutí na TV stiskněte Fn+F5 třikrát. Testováno na Tecra 8000, 2.6.15 jádro s vesafb, ALSA v1.0.10.
Chrontel 70xx enkodér: Nalezen v IBM Thinkpad 390E a bude pravděpodobně i ostatních Thinkpadech nebo noteboocích.
Musíte použít -vo vesa:neotv_pal pro PAL nebo -vo vesa:neotv_ntsc pro NTSC. To vám zpřístupní funkci TV výstupu v následujících 16 bpp a 8 bpp režimech:
NTSC 320x240, 640x480 a možná také 800x600.
PAL 320x240, 400x300, 640x480, 800x600.
Režim 512x384 není podporován BIOSem. Musíte obraz škálovat do jiného rozlišení pro aktivaci TV výstupu. Pokud vidíte obraz na obrazovce v 640x480 nebo v 800x600, ale ne v 320x240 nebo jiném menším rozlišení, musíte nahradit dvě tabulky ve vbelib.c. Viz funkci vbeSetTV pro více informací. V tomto případě prosím kontaktujte autora.
Známá omezení: pouze VESA, žádné další ovládací prvky jako jas, kontrast, úroveň černé, filtrace blikání nejsou implementovány.
Hlavní vývojovou platformou je Linux na x86, ačkoli MPlayer pracuje na mnoha jiných portech Linuxu. Binární balíčky MPlayeru jsou dostupné z několika zdrojů. Nicméně není žádný z těchto balíčků podporován. Hlaste tedy problémy jejich autorům, nikoli nám.
Pro vytvoření balíčku pro Debian spusťte následující příkaz v adresáři se zdrojovým kódem MPlayeru:
fakeroot debian/rules binary
Pokud chcete předat nějaké volby pro configure, můžete nastavit proměnnou
prostředí DEB_BUILD_OPTIONS
. Například, pokud chcete GUI a
podporu OSD menu, měli byste použít:
DEB_BUILD_OPTIONS="--enable-gui --enable-menu" fakeroot debian/rules binary
Rovněž můžete předat některé proměnné do Makefile. Například, pokud chcete kompilovat pomocí gcc 3.4 i v případě, že to není výchozí kompilátor:
CC=gcc-3.4 DEB_BUILD_OPTIONS="--enable-gui" fakeroot debian/rules binary
K vyčistění zdrojového stromu spusťte následující příkaz:
fakeroot debian/rules clean
Jako root můžete nainstalovat .deb balíček obvyklým způsobem:
dpkg -i ../mplayer_version
.deb
Christian Marillat vytvářel jistou dobu neoficiální Debianí balíčky MPlayeru, MEncoderu a našich binárních balíků s kodeky, můžete si je stáhnout (apt-get) z jeho domácí stránky.
Dominik Mierzejewski udržuje oficiální RPM balíčky MPlayeru pro Fedora Core. Ty jsou dostupné z repozitáře.
RPM balíčky pro Mandrake/Mandriva jsou dostupné z P.L.F.. SuSE zařadilo do své distribuce zmrzačenou verzi MPlayeru. V posledních verzích ji odstranili. Funkční RPM naleznete na links2linux.de.
MPlayer pracuje na Linuxových PDA s ARM CPU např. Sharp Zaurus, Compaq Ipaq. Nejjednodušší způsob jak si opatřit MPlayer je, stáhnout si jej z některého OpenZaurus balíčkového kanálu. Pokud si jej chcete skompilovat sami, měli byste nahlédnout do adresáře mplayer a libavcodec v buildroot OpenZaurus distribuce. Zde mají vždy poslední Makefile a patche používané pro sestavení SVN verze MPlayeru. Pokud potřebujete GUI rozhraní, můžete použít xmms-embedded.
MPlayer běží na všech známých BSD verzích. Existují portované/pkgsrc/fink/atd verze MPlayeru, které lze pravděpodobně snadněji použít, než naše surové zdrojové kódy.
K sestavení MPlayeru budete potřebovat GNU make (gmake - nativní BSD make nebude pracovat) a současnou verzi binutils.
Pokud si MPlayer stěžuje, že nemůže najít /dev/cdrom nebo /dev/dvd, vytvořte příslušný symbolický link:
ln -s /dev/vaše_cdrom_zařízení
/dev/cdrom
Chcete-li používat Win32 DLL v MPlayeru, budete muset
rekompilovat jádro s volbou "USER_LDT
"
(pokud nepoužíváte FreeBSD-CURRENT, kde je to výchozí).
Pokud váš procesor má SSE, rekompilujte jádro s
"options CPU_ENABLE_SSE
" (vyžaduje FreeBSD-STABLE nebo patche
do jádra).
Vzhledem k omezením v různých verzích gas (GNU assembleru – pozn. překl.)
(relokace vs MMX), budete muset kompilovat ve dvou krocích:
Nejprve se ujistěte že je nenativní as jako první ve vaší $PATH
a proveďte gmake -k, pak zajistěte, aby se použila nativní
verze a proveďte gmake.
Od OpenBSD 3.4 není již výše uvedená metoda potřeba.
Viz sekce Mac OS.
MPlayer byl portován na mnoho komerčních variant Unixu. Jelikož vývojová prostředí na těchto systémech bývají odlišná od těch na svobodných Unixech, budete muset provést ruční úpravy, aby se kompilace povedla.
MPlayer by měl běžet na Solarisu 2.6 nebo novějším. Použijte SUN audio rozhraní pomocí volby -ao sun pro přehrávání zvuku.
Na UltraSPARCích,
MPlayer využívá jejich rozšíření
VIS
(ekvivalentní MMX), zatím jen v
libmpeg2
,
libvo
a libavcodec
, ale nikoli v
mp3lib
. Můžete přehrávat VOB soubor
na 400MHz CPU. Budete k tomu potřebovat nainstalovanou
mLib
.
Caveat:
Podpora mediaLib je v současnosti vypnutá ve výchozím nastavení MPlayeru kvůli chybovosti. Uživatelé SPARCu překládající MPlayer s podporou mediaLib hlásili tlustý zelený pruh v libavcodecem enkódovaném a dekódovaném videu. Pokud chcete, můžete si ji zapnout:
./configure --enable-mlib
Děláte to na vlastní nebezpečí. Uživatelé x86 by nikdy neměli používat mediaLib, jelikož vede k velmi slabému výkonu MPlayeru.
Pro kompilaci balíku budete potřebovat GNU make (gmake, /opt/sfw/gmake), jelikož nativní make Solarisu nebude pracovat. Typickou chybou kompilace s make Solarisu namísto GNU make je:
% /usr/ccs/bin/make make: Fatal error in reader: Makefile, line 25: Unexpected end of line seen
Na Solarisu SPARC, potřebujete GNU C/C++ Compiler; nezáleží na tom, zda je GNU C/C++ compiler konfigurován s nebo bez GNU assembleru.
Na Solarisu x86, potřebujete GNU assembler a GNU C/C++ compiler, konfigurovaný pro použití GNU assembleru! Kód MPlayeru na platformě x86 intenzivně používá MMX, SSE a 3DNOW! instrukce, které nemůže být kompilovány Sun assemblerem /usr/ccs/bin/as.
Skript configure zkouší zjistit, který assembler je použitý
vaším příkazem "gcc" (v případě že autodetekce selže, použijte volbu
--as=/kdekoli/máte/nainstalován/gnu-as
pro nastavení configure skriptu tak, aby našel GNU
"as" na vašem systému).
Řešení běžných potíží:
Chybová zpráva z configure na systému Solaris x86 s použitím GCC bez GNU assembleru:
% configure ... Checking assembler (/usr/ccs/bin/as) ... , failed Please upgrade(downgrade) binutils to 2.10.1...
(Řešení: Nainstalujte a použijte gcc konfigurovaný s --with-as=gas)
Typická chyba, kterou dostanete při kompilaci pomocí GNU C kompilátoru, který nepoužívá 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 ...
MPlayer může zhavarovat (segfault), pokud dekódujete nebo enkódujete video používající win32 kodeky:
... Trying to force audio codec driver family acm... Opening audio decoder: [acm] Win32/ACM decoders sysi86(SI86DSCR): Invalid argument Couldn't install fs segment, expect segfault MPlayer interrupted by signal 11 in module: init_audio_codec ...
To díky změně na sysi86() ve verzích Solaris 10 a před-Solaris Nevada b31. V Solaris Nevada b32 to bylo opraveno; Sun však ještě musí portovat opravu do Solaris 10. MPlayer Project upozornil Sun na tento problém a záplata pro Solaris 10 je v současnosti rozpracována. Více informací o této chybě naleznete na: http://bugs.opensolaris.org/bugdatabase/view_bug.do?bug_id=6308413.
Díky chybám v Solarisu 8, nemůžete přehrávat DVD disky větší než 4 GB:
Ovladač sd(7D) na Solarisu 8 x86 má chybu v přístupu k diskovému bloku >4GB na zařízeních, které mají logical blocksize != DEV_BSIZE (čili CD-ROM a DVD média). Díky 32Bit int overflow, dostanete přístupovou diskovou adresu modulo 4GB (http://groups.yahoo.com/group/solarisonintel/message/22516). Tento problém neexistuje ve SPARC verzi Solarisu 8.
Podobná chyba je i v kódu systému souborů hsfs(7FS) (AKA ISO9660), hsfs nemusí podporovat oddíly/disky větší než 4GB, ke všem datům je přistupováno modulo 4GB (http://groups.yahoo.com/group/solarisonintel/message/22592). Problém hsfs může být odstraněn nainstalováním patche 109764-04 (sparc) / 109765-04 (x86).
Joe Page hostuje podrobné HP-UX MPlayer HOWTO od Martina Ganssera na jeho domácí stránce. Podle těchto instrukcí by kompilace měla proběhnout bez potíží. Následující informace jsou vytaženy ze zmíněného HOWTO.
Potřebujete GCC 3.4.0 nebo pozdější, GNU make 3.80 nebo pozdější a SDL 1.2.7 nebo pozdější. HP cc nevytvoří funkční program, předchozí verze GCC jsou chybové. Pro funkci OpenGL musíte nainstalovat Mesa a video rozhraní gl a gl2 by měly pracovat. Jejich rychlost však může být velmi malá, podle rychlosti CPU. Dobrou náhradou za spíše slabý nativní HP-UX systém je GNU esound.
Vytvořte DVD zařízení průzkumem SCSI pomocí:
# 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 ...
Výstup na obrazovce ukazuje Pioneer DVD-ROM na SCSI adrese 2. Instance karty pro hardwarovou cestu 8/16 je 1.
Vytvořte link ze surového zařízení na DVD zařízení.
ln -s /dev/rdsk/c<SCSI bus instance>
t<SCSI target ID>
d<LUN>
/dev/<device>
Příklad:
ln -s /dev/rdsk/c1t2d0 /dev/dvd
Níže uvádíme řešení některých běžných problémů:
Spadne při startu s hlášením:
/usr/lib/dld.sl: Unresolved symbol: finite (code) from /usr/local/lib/gcc-lib/hppa2.0n-hp-hpux11.00/3.2/../../../libGL.sl
To znamená, že funkce .finite().
není
dostupná ve standardní HP-UX matematické knihovně.
Místo ní je zde .isfinite().
.
Řešení: Použijte poslední Mesa depot soubor.
Spadne při přehrávání s hlášením:
/usr/lib/dld.sl: Unresolved symbol: sem_init (code) from /usr/local/lib/libSDL-1.2.sl.0
Řešení: Použijte volbu extralibdir v configure --extra-ldflags="/usr/lib -lrt"
MPlayer havaruje (segfault) s hlášením:
Pid 10166 received a SIGSEGV for stack growth failure. Possible causes: insufficient memory or swap space, or stack size exceeded maxssiz. Segmentation fault
Řešení:
HP-UX kernel má výchozí velikost zásobníku 8MB(?) na proces.(11.0 a
novější 10.20 patche vám umožní zvýšit maxssiz
až na
350MB pro 32-bit programy). Musíte zvětšit
maxssiz
a rekompilovat kernel (a restartovat).
Pro tento účel můžete použít SAM.
(Když už to budete dělat, ověřte parametr maxdsiz
pro maximální množství paměti, které může program použít.
Závisí na vašich aplikacích, jestli je výchozích 64MB dost nebo ne.)
MPlayer lze úspěšně přeložit na AIX 5.1, 5.2 a 5.3, pomocí GCC 3.3 nebo vyšší. Kompilace MPlayeru na AIX 4.3.3 a nížsích nebyla testována. Velmi doporučujeme kompilovat MPlayer pomocí GCC 3.4 nebo vašší, nebo pokud kompilujete na POWER5, vyžaduje se GCC 4.0.
Ujistěte se, že používáte GNU make (/opt/freeware/bin/gmake) pro sestavení MPlayeru, jelikož při použití /usr/ccs/bin/make budete mít problémy.
Detekce procesoru je stále nedokončena. Testovány byly následující architektury:
604e
POWER3
POWER4
Následující architektury nebyly testovány, ale měly by pracovat:
POWER
POWER2
POWER5
Zvuk přes Ultimedia Services není podporován, jelikož Ultimedia byla opuštěna v AIX 5.1; tudíš je jedinou možností použití ovladačů AIX Open Sound System (OSS) od 4Front Technologies z http://www.opensound.com/aix.html. 4Front Technologies volně poskytuje OSS ovladače pro AIX 5.1 pro nekomerční použití; zatím však neexistují zvukové ovladače pro AIX 5.2 nebo 5.3. To znamená, že AIX 5.2 a 5.3 nejsou nyní schopny provozovat MPlayer se zvukem.
Řešení běžných potíží:
Pokud dostanete tuto chybovou hlášku z configure:
$ ./configure ... Checking for iconv program ... no No working iconv program found, use --charset=US-ASCII to continue anyway. Messages in the GTK-2 interface will be broken then.
To proto, že AIX používá nestandardní názvy znakových sad; proto konverze výstupu MPlayeru do jiné znakové sady není zatím podporována. Řešením je:
$ ./configure --charset=noconv
Ano, MPlayer běží na Windows pod Cygwin a MinGW. Nemá zatím oficiální GUI, ale verze pro příkazový řádek je plně funkční. Měli byste navštívit konferenci MPlayer-cygwin pro pomoc a poslední informace. Oficiální Windows binárky naleznete na download stránce. Instalátor a jednoduché GUI frontendy jsou dostupné z externích zdrojů. Odkazy na ně jsme umístili v sekci Windows na naší stránce s projekty.
Pokud se chcete vyhnout použití příkazové řádky, můžete použít malý trik s umístěním zástupce na pracovní plochu, který bude obsahovat v sekci spuštění něco takového:
c:\cesta\k\
mplayer.exe %1
To nechá MPlayer přehrát jakýkoli film, který je přetažen na zástupce. Přidejte -fs pro celoobrazovkový režim.
Nejlepších výsledků dosáhnete použitím nativního DirectX video rozhraní (-vo directx). Alternativami jsou OpenGL a SDL, ale výkon OpenGL se velmi různí na jednotlivých systémech a o SDL je známo, že na některých systémech drobí video nebo padá. Pokud je obraz rozsypán, zkuste vypnout hardwarovou akceleraci pomocí -vo directx:noaccel. Stáhněte si hlavičkové soubory DirectX 7 pro kompilaci výstupního rozhraní DirectX. Navíc budete muset mít nainstalovány DirectX 7 nebo vyšší, aby rozhraní pracovalo.
VIDIX nyní pracuje pod Windows jako -vo winvidix, ačkoli je stále experimentální a vyžaduje trochu manuálního nastavování. Stáhněte si dhahelper.sys nebo dhahelper.sys (s podporou MTRR) a zkopírujte jej do adresáře vidix/dhahelperwin ve svém stromě se zdrojovými kódy MPlayeru. Otevřete konzoli a přesuňte se do tohoto adresáře. Pak zadejte
gcc -o dhasetup.exe dhasetup.c
a spusťte
dhasetup.exe install
jako Administrator. Pak budete muset restartovat. Jakmile budete hotovi,
zkopírujte .so
soubory z
vidix/drivers do adresáře
mplayer/vidix
relativního k vašemu mplayer.exe.
Pro nejlepší výsledky by měl MPlayer používat barevný prostor, který podporuje vaše video karta v hardware. Naneštěstí některé Windows ovladače grafických karet špatně hlásí některé barevné prostory jako podporované v hardware. Chcete-li zjistit které, zkuste
mplayer -benchmark -nosound -frames 100 -vf format=barevny_prostor
film
kde barevny_prostor
může být barevný prostor
vypsaný volbou -vf format=fmt=help. Pokud najdete
barevný prostor, který vaše karta zvládá zjevně špatně,
-vf noformat=barevny_prostor
zakáže jeho použití. Přidejte si to do vašeho konfig souboru, aby zůstal
zakázán natrvalo.
Pro Windows máme k dispozici speciální balíčky kodeků na naší
download stránce,
abyste mohli přehrávat formáty, pro které zatím není nativní podpora.
Umístěte kodeky někde do cesty (path), nebo přidejte
--codecsdir=c:/cesta/ke/kodekům
(případně
--codecsdir=/cesta/ke/kodekům
používate-li Cygwin) do configure.
Máme několik zpráv, že Real DLL musí mít práva zápisu pro uživatele, který
pouští MPlayer, ale pouze na některých systémech (NT4).
Máte-li potíže, zkuste jim přidat právo zápisu.
Můžete přehrávat VCD přehráváním .DAT nebo .MPG souborů, které Windows ukazuje na VCD. Pracuje to takto (upravte písmeno disku vaší CD-ROM):
mplayer d:/mpegav/avseq01.dat
DVD pracují také, upravte -dvd-device na písmeno DVD-ROM mechaniky:
mplayer dvd://<titul>
-dvd-deviced
:
Cygwin/MinGW terminál je spíše pomalý. Přesměrování výstupu nebo použití volby -quiet podle hlášení zvýší výkon na některých systémech. Direct rendering (-dr) může rovněž pomoci. Pokud je přehrávání trhané, zkuste -autosync 100. Pokud vám některé z těchto voleb pomohly, měli byste si je zapsat do konfiguračního souboru.
Runtime CPU detekce na Windows vypíná podporu SSE kvůli opakovaným a těžko vystopovatelným se SSE souvisejícím pádům. Pokud chcete mít podporu SSE pod Windows, budete muset kompilovat bez runtime CPU detekce.
Máte-li Pentium 4 a dojde k pádu při použití RealPlayer kodeků, možná budete muset vypnout podporu hyperthreading.
Musíte používat Cygwin 1.5.0 nebo vyšší, abyste mohli kompilovat MPlayer.
Hlavičkové soubory DirectX musí být rozbaleny do /usr/include/ nebo /usr/local/include/.
Instrukce a soubory nutné pro běh SDL pod Cygwin lze nalézt na libsdl stránkách.
Instalace takové verze MinGW, aby bylo lze kompilovat MPlayer byla obtížná, ale nyní pracuje bez dalších úprav. Jen nainstalujte MinGW 3.1.0 nebo vyšší a MSYS 1.0.9 nebo vyšší a zvolte v MSYS postinstall, že je MinGW nainstalováno.
Rozbalte DirectX hlavičkové soubory do /mingw/include/.
Podpora MOV compressed header vyžaduje zlib, kterou MinGW neobsahuje. Konfigurujte ji s --prefix=/mingw a nainstalujte ji před kompilací MPlayeru.
Kompletní instrukce pro překlad MPlayeru a potřebné knihovny naleznete v MPlayer MinGW HOWTO.
MPlayer nepracuje na Mac OS verzích pod 10, ale měl by být bez úprav kompilovatelný na Mac OS X 10.2 a vyšších. Preferovaná verze kompileru je Apple verze GCC 3.x a vyšších. Základní prostředí pro kompilaci můžete získat instalací Xcode od Apple. Máte-li Mac OS X 10.3.9 nebo pozdější a QuickTime 7 můžete použít výstupní video rozhraní corevideo.
Naneštěstí toto základní prostředí neumožňuje využít všechny
pěkné vlastnosti MPlayeru.
Například, budete-li chtít mít zakompilovánu podporu OSD, budete
muset mít na svém stroji nainstalovány knihovny
fontconfig
a freetype
.
Narozdíl od jiných Unixů, jako je většina variant Linuxu a BSD, OS X
nemá balíčkovací systém distribuovaný se systémem.
Můžete vybírat minimálně ze dvou: Finku a MacPorts. Oba poskytují zhruba stejné služby (např. mnoho dostupných balíčků, řešení závislostí, schopnost jednoduše přidávat/aktualizovat/odebírat balíčky, atp...). Fink nabízí jak předkompilované binární balíčky, tak možnost kompilovat všechno ze zdrojového kódu, zatímco MacPorts nabízí pouze možnost kompilace ze zdrojového kódu. Autor této příručky zvolil MacPorts z jednoduchého důvodu, že jeho základní nastavení je mnohem lehčí. Pozdější příklady budou založeny na MacPorts.
Například pro kompilaci MPlayer s podporou OSD:
sudo port install pkgconfig
Takto nainstalujete pkg-config, což je systém pro správu
knihovních příznaků compile/link.
MPlayerův skript configure
jej
používá pro správnou detekci knihoven.
Pak můžete nainstalovat fontconfig
podobným způsobem:
sudo port install fontconfig
Následně můžete pokračovat spuštěním MPlayerova
configure
skriptu (ověřte proměnné prostředí
PKG_CONFIG_PATH
a PATH
,
aby configure
našel knihovny instalované pomocí
MacPorts):
PKG_CONFIG_PATH=/opt/local/lib/pkgconfig/ PATH=$PATH:/opt/local/bin/ ./configure
Můžete si stáhnout nativní GUI pro MPlayer spolu s předkompilovanými binárkami MPlayeru pro Mac OS X z MPlayerOSX projektu, ale upozorňujeme: tento projekt již není aktivní.
Naštěstí byl MPlayerOSX převzat členem MPlayer týmu. Předváděcí verze lze stáhnout z naší download stránky a oficiální verze by měla přijít již brzy.
Abyste mohli skompilovat MPlayerOSX ze zdrojového
kódu sami, budete potřebovat mplayerosx
,
main
a kopii
main
SVN modulu jménem
main_noaltivec
.
mplayerosx
je GUI nadstavba,
main
je MPlayer a
main_noaltivec
je MPlayer přeložený bez podpory AltiVec.
Pro stažení SVN modulů použijte:
svn checkout svn://svn.mplayerhq.hu/mplayerosx/trunk/ mplayerosx svn checkout svn://svn.mplayerhq.hu/mplayer/trunk/ main
Abyste skompilovali MPlayerOSX budete muset setavit asi toto:
Adresář_se_zdrojáky_MPlayeru | |--->main (Zdrojový kód MPlayeru ze Subversion) | |--->main_noaltivec (Zdrojový kód MPlayeru ze Subversion konfigurován s --disable-altivec) | \--->mplayerosx (Zdrojový kód MPlayer OS X ze Subversion)
Nejdřív musíte skompilovat main a main_noaltivec.
Pro začátek, pro dosažení maximální zpětné kompatibility, nastavte globální proměnnou:
export MACOSX_DEPLOYMENT_TARGET=10.3
Pak konfigurujte:
Pokud konfigurujete pro G4 nebo pozdější CPU s podporou AltiVec, proveďte následující:
./configure --disable-gl --disable-x11
Pokud konfigurujete pro stroj s G3 bez AltiVec, použijte:
./configure --disable-gl --disable-x11 --disable-altivec
Možná budete muset editovat config.mak a změnit
-mcpu
a -mtune
z 74XX
na G3
.
Pokračujte s
make
pak jděte do adresáře mplayerosx a napište
make dist
To vytvoří komprimovaný .dmg
archiv
s binárkou připravenou k použití.
Také lze použít projekt Xcode 2.1; starý projekt pro Xcode 1.x již nepracuje.
Úplný seznam dostupných voleb a příkladů pro MEncoder naleznete v man stránce. Řadu užitečných příkladů a podrobných návodů pro použití mnoha enkódovacích voleb naleznete v tipech pro enkódování, které byly získány z několika diskusí v konferenci MPlayer-users. Prohledejte archivy zde, hlavně pro starší věci a také zde chcete-li bohatost diskusí o všech aspektech a problémech vztažených k enkódování MEncoderem.
Audio a video kodeky pro enkódování jsou vybírány příslušnými volbami -oac a -ovc. Napište například:
mencoder -ovc help
pro seznam video kodeků podporovaných verzí programu MEncoder na vašem počítači. Dostupné jsou následující možnosti:
Audio (zvukové) kodeky:
Jméno audio kodeku | Popis |
---|---|
mp3lame | Enkóduje do VBR, ABR nebo CBR MP3 pomocí LAME |
lavc | Použije se některý z
libavcodec audio kodeků
|
faac | FAAC AAC audio enkodér |
toolame | Enkodér MPEG Audio Layer 2 |
twolame | Enkodér MPEG Audio Layer 2 založený na tooLAME |
pcm | Nekomprimovaný PCM zvuk |
copy | Nereenkóduje, pouze kopíruje komprimované vzorky |
Video kodeky:
Jméno video kodeku | Popis |
---|---|
lavc | Použije se některý z
libavcodec video kodeků
|
xvid | XviD, MPEG-4 Advanced Simple Profile (ASP) kodek |
x264 | x264, MPEG-4 Advanced Video Coding (AVC), alias H.264 kodek |
nuv | nuppel video, používaný některými realtime aplikacemi |
raw | Nekomprimované videosnímky |
copy | Nereenkóduje, pouze kopíruje komprimované snímky |
frameno | Použité pro 3-průchodové enkódování (nedoporučujeme) |
Výstupní nosný formát je vybírán volbou -of. Zadejte:
mencoder -of help
pro seznam všech nosných formátů podporovaných verzí MEncoderu na vašem počítači. Dostupné jsou následující možnosti:
Nosné formáty:
Název nosného formátu | Popis |
---|---|
lavf | Jeden z nosných formátů podporovaných
libavformat |
avi | Audio-Video Interleaved (Prokládané audio s videem) |
mpeg | MPEG-1 a MPEG-2 PS |
rawvideo | surový (raw) video datový proud (žádný muxing – pouze jeden video proud) |
rawaudio | surový (raw) audio datový proud (žádný muxing – pouze jeden audio proud) |
Nosný formát AVI je nativním nosným formátem MEncoderu, což znamená, že je tím, který je nejlépe zpracován a pro nějž byl MEncoder navržen. Jak bylo zmíněno, ostatní nosné formáty jsou použitelné, ale můžete při jejich použití narazit na problémy.
Nosné formáty libavformat
:
Pokud jste si zvolili libavformat
pro provádění muxování výstupního souboru (pomocí -of lavf),
příslušný nosný formát bude určen z přípony výstupního souboru.
Můžete vynutit určitý nosný formát pomocí parametru format
knihovny libavformat
.
Název libavformat nosného formátu | Popis |
---|---|
mpg | MPEG-1 a MPEG-2 PS |
asf | Advanced Streaming Format |
avi | Audio-Video Interleaved |
wav | Waveform Audio |
swf | Macromedia Flash |
flv | Macromedia Flash video |
rm | RealMedia |
au | SUN AU |
nut | otevřený nosný formát NUT (experimentální a dosud neslučitelný se specifikací) |
mov | QuickTime |
mp4 | formát MPEG-4 |
dv | Sony Digital Video |
mkv | Otevřený nosný audio/video formát Matroska |
Jak vidíte, libavformat
umožňuje MEncoderu muxovat do velkého množství
nosných formátů.
Naneštěstí, jelikož MEncoder nebyl od počátku
navržen pro podporu jiných nosných formátů než AVI, měli byste být
paranoidní ve vztahu k výstupnímu souboru.
Ověřte si prosím pro jistotu, že audio/video synchronizace je OK
a soubor lze správně přehrát i jinými přehrávači, než
MPlayer.
Příklad 6.1. Enkódování do formátu Macromedia Flash
Vytvoření Macromedia Flash videa vhodného pro přehrávání ve webovém prohlížeči pomocí Macromedia Flash pluginu:
mencodervstupní.avi
-ovýstupní.flv
-of lavf \ -oac mp3lame -lameopts abr:br=56 -srate 22050 -ovc lavc \ -lavcopts vcodec=flv:vbitrate=500:mbd=2:mv0:trell:v4mv:cbp:last_pred=3
MEncoder umí enkódovat ze souborů nebo přímo z
DVD či VCD disku.
Vložte na příkazovém řádku jméno souboru pro enkódování souboru,
nebo dvd://číslo_titulu
nebo
vcd://číslo_stopy
pro enkódování
DVD titulu či VCD stopy.
Máte-li již zkopírováno DVD na hard disk (k tomu můžete použít nástroj jako
dvdbackup, dostupný na mnoha systémech),
a chcete enkódovat z kopie, měli byste i zde použít syntaxi
dvd:// ve spojení s volbou -dvd-device
následovanou cestou do kořenového adresáře skopírovaného DVD.
Volby -dvd-device a -cdrom-device
lze rovněž použít k přenastavení cest k souborům zařízení pro přímé
čtení disků, pokud výchozí
/dev/dvd a /dev/cdrom na vašem
systému nepracují.
Enkódujete-li z DVD, je často vhodné vybrat kapitolu nebo rozsah
kapitol k enkódování.
Pro tento účel můžete použít volbu -chapter.
Například s volbou -chapter 1-4
se budou z DVD enkódovat pouze kapitoly 1 až 4.
To se zvlášť hodí, pokud budete enkódovat film na velikost 1400 MB
určený pro dvě CD, jelikož budete mít jistotu, že zlom nastane přesně
na hranici kapitol místo uprostřed scény.
Pokud máte podporovanou TV zachytávací kartu, můžete rovněž enkódovat ze
zařízení TV vstupu.
Použijte tv://číslo_kanálu
jako
jméno souboru a volbu -tv pro konfiguraci různých nastavení
zachytávání.
Vstup z DVB pracuje obdobně.
Název vychází z faktu, že soubor je enkódován dvakrát. První enkódování (dubbed pass) vytvoří dočasné soubory (*.log) velikosti několika megabajtů, které zatím nemažte (můžete smazat AVI, nebo raději žádné nevytvářejte a přesměrujte je do /dev/null). Ve druhém průchodu je vytvořen dvouprůchodový výstupní soubor s použitím řízení datového toku z dočasných souborů. Výsledný soubor bude mít lepší kvalitu obrazu. Pokud jste o tom teď slyšeli poprvé, měli byste si prostudovat některé návody dostupné na netu.
Příklad 6.2. Kopírování zvukové stopy
Dvouprůchodové enkódování druhé stopy z DVD do MPEG-4 ("DivX") AVI zatímco se zvuk pouze zkopíruje.
mencoder dvd://2 -ovc lavc -lavcopts vcodec=mpeg4:vpass=1 -oac copy -o /dev/null
mencoder dvd://2 -ovc lavc -lavcopts vcodec=mpeg4:mbd=2:trell:vpass=2 \
-oac copy -o výstup.avi
Příklad 6.3. Enkódování zvukové stopy
Dvouprůchodové enkódování DVD do MPEG-4 ("DivX") AVI a současně enkódování zvukové stopy do MP3. Při této metodě buďte opatrní, jelikož v některých případech může vést k rozjetí zvuku s videem.
mencoder dvd://2 -ovc lavc -lavcopts vcodec=mpeg4:vpass=1 \
-oac mp3lame -lameopts vbr=3 -o /dev/null
mencoder dvd://2 -ovc lavc -lavcopts vcodec=mpeg4:mbd=2:trell:vpass=2 \
-oac mp3lame -lameopts vbr=3 -o výstup.avi
MEncoder podporuje enkódování do Sony PSP video formátu, ale mohou se lišit, v závislosti na revizi PSP softwaru, s tím spojená omezení. Budete-li respektovat následující omezení, neměli byste narazit na potíže:
Datový tok: by neměl překročit 1500kbps, ale poslední verze podporovaly prakticky jakýkoli datový tok pokud hlavička tvrdí, že není příliš vysoký.
Rozměry: šířka a výška PSP videa by měly být násobky 16 a výsledek šířka * výška musí být <= 64000. Za určitých okolností může být možné, aby PSP hrál i ve vyšším rozlišení.
Audio: jeho vzorkovací kmitočet by měl být 24kHz pro videa MPEG-4 a 48kHz pro H.264.
Příklad 6.4. Enkódování do PSP
mencoder -ofps 30000/1001 -af lavcresample=24000 -vf harddup -oac lavc \ -ovc lavc -lavcopts aglobal=1:vglobal=1:vcodec=mpeg4:acodec=libfaac \ -of lavf -lavfopts format=psp \vstupní.video
-ovýstupní.psp
Poznamenejme, že můžete nastavit jméno videa pomocí
-info name=JménoFilmu
.
MEncoder umí vytvořit výstupní soubor formátu MPEG (MPEG-PS). Pokud používáte MPEG-1 nebo MPEG-2 video, obvykle je to proto, že enkódujete pro omezený formát jako je SVCD, VCD nebo DVD. Konkrétní požadavky těchto formátů jsou objasněny v sekci návod pro vytvoření VCD a DVD.
Výstupní souborový formát MEncoderu změníte použitím volby -of mpeg.
Příklad:
mencodervstupní.avi
-of mpeg -ovc lavc -lavcopts vcodec=mpeg1video \ -oac copyostatní_volby
-ovýstupní.mpg
Vytvoření MPEG-1 souboru vhodného pro přehrávání na systémech s minimální podporou multimédií, jako je výchozí instalace Windows:
mencodervstupní.avi
-of mpeg -mpegopts format=mpeg1:tsaf:muxrate=2000 \ -ovýstupní.mpg
-oac lavc -lavcopts acodec=mp2:abitrate=224 -ovc lavc \ -lavcopts vcodec=mpeg1video:vbitrate=1152:keyint=15:mbd=2:aspect=4/3
To samé, ale použijeme libavformat
MPEG muxer:
mencodervstupní.avi
-oVCD.mpg
-ofps 25 -vf scale=352:288,harddup -of lavf \ -lavfopts format=mpg -oac lavc -lavcopts acodec=mp2:abitrate=224 -ovc lavc \ -lavcopts vcodec=mpeg1video:vrc_buf_size=327:keyint=15:vrc_maxrate=1152:vbitrate=1152:vmax_b_frames=0
Pokud vás z nějakého důvodu neuspokojí kvalita videa z druhého průchodu, můžete znovu spustit enkódování videa s jiným cílovým datovým tokem, s tím, že máte uložen soubor se statistikami z předchozího průchodu. To je možné proto, že cílem statistického souboru je především zaznamenat komplexitu každého snímku, která příliš nezávisí na datovém toku. Povšimněte si, že ačkoli nejvyšší kvality dosáhnete pokud všechny průchody poběží při stejném datovém toku, tak se výsledek příliš neliší.
Často potřebujeme změnit velikost obrázků ve filmu a to z mnoha důvodů: zmenšení souboru, zátěže sítě atd. Mnoho lidí dokonce mění velikost při převodu DVD nebo SVCD do DivX AVI. Pokud si přejete video přeškálovat, přečtěte si sekci Zachování poměru stran.
Samotný proces škálování je prováděn video filtrem scale
:
-vf scale=šířka
:výška
.
Jeho kvalita může být nastavena volbou -sws.
Pokud ji neuvedete, MEncoder použije 2: bikubickou.
Použití:
mencodervstup.mpg
-ovc lavc -lavcopts vcodec=mpeg4:mbd=2:trell \ -vf scale=640:480 -ovýstup.avi
MEncoder může zpracovat vstupní datové proudy dvěma způsoby: enkóduje je, nebo je kopíruje. Tato část je o kopírování.
Video proud (volba -ovc copy): můžete dělat pěkné věci :) Jako umístění (nikoli konverze!) FLI nebo VIVO nebo MPEG-1 videa do AVI souboru! Samozřejmě takové soubory přehraje pouze MPlayer :) A proto to nejspíš nemá žádnou rozumnou hodnotu. A teď vážně: kopírování video proudu může být užitečné například tehdy, když má být enkódován pouze zvuk (např. nekomprimovaný PCM do MP3).
Audio proud (volba -oac copy):
jednoduché. Je možné vzít externí zvukový soubor (MP3, WAV) a namultiplexovat
jej do výstupního proudu. K tomu použijte volbu
-audiofile soubor
.
Použití -oac copy pro kopírování z jednoho nosného fomátu do jiného může vyžadovat použití -fafmttag pro zachování příznaku formátu zvuku původního souboru. Například pokud konvertujete NSV soubor s AAC zvukem do nosného formátu AVI, bude příznak formátu zvuku nesprávný a bude jej nutno změnit. Seznam příznaků audio formátu naleznete v souboru codecs.conf.
Příklad:
mencodervstupní.nsv
-oac copy -fafmttag 0x706D \ -ovc lavc -lavcopts vcodec=mpeg4:mbd=2:trell -ovýstupní.avi
MEncoder je schopen vytvořit film z jednoho nebo více JPEG, PNG nebo TGA souborů. Pomocí jednoduchého snímkového kopírování může vytvořit MJPEG (Motion JPEG), MPNG (Motion PNG) nebo MTGA (Motion TGA) soubory.
Vysvětlení procesu:
MEncoder dekóduje vstupní
soubor(y) pomocí knihovny libjpeg
(když dekóduje PNG, použije libpng
).
Potom MEncoder nakrmí dekódovaný snímek do zvoleného video kompresoru (DivX4, Xvid, FFmpeg msmpeg4, atd.).
Příklady. Vysvětlení volby -mf je v man stránce.
Vytvoření MPEG-4 souboru ze všech JPEG souborů v aktuálním adresáři:
mencoder mf://*.jpg -mf w=800:h=600:fps=25:type=jpg -ovc lavc \
-lavcopts vcodec=mpeg4:mbd=2:trell -oac copy -o výstup.avi
Vytvoření MPEG-4 souboru z některých JPEG souborů v aktuálním adresáři:
mencoder mf://snímek001.jpg,snímek002.jpg
-mf w=800:h=600:fps=25:type=jpg \ -ovc lavc -lavcopts vcodec=mpeg4:mbd=2:trell -oac copy -ovýstup.avi
Vytvoření MPEG-4 souboru ze seznamu vyjmenovaných JPEG souborů (seznam.txt v aktuálním adresáři obsahuje seznam souborů k použití jako zdroj, každý soubor na samostatném řádku):
mencoder mf://@seznam.txt
-mf w=800:h=600:fps=25:type=jpg \ -ovc lavc -lavcopts vcodec=mpeg4:mbd=2:trell -oac copy -ovýstup.avi
Můžete kombinovat různé typy, bez ohledu na metodu, kterou používáte – individuální jména souborů, žolíky nebo soubor se seznamem – přičemž musí mít přirozeně stejné rozměry. Takže můžete např. vzít úvodní snímek z PNG souboru a pak vložit slideshow z JPEG fotek.
Vytvoření Motion JPEG (MJPEG) souboru ze všech JPEG souborů v aktuálním adresáři:
mencoder mf://*.jpg -mf w=800:h=600:fps=25:type=jpg -ovc copy -oac copy -o výstup.avi
Vytvoření nekomprimovaného souboru ze všech PNG souborů v aktuálním adresáři:
mencoder mf://*.png -mf w=800:h=600:fps=25:type=png -ovc raw -oac copy -o výstup.avi
Šířka musí být celé číslo násobek 4, to je dáno omezením RAW RGB AVI formátu.
Vytvoření Motion PNG (MPNG) souboru ze všech PNG souborů v aktuálním adresáři:
mencoder mf://*.png -mf w=800:h=600:fps=25:type=png -ovc copy -oac copy -o výstup.avi
Vytvoření Motion TGA (MTGA) souboru ze všech TGA souborů v aktuálním adresáři:
mencoder mf://*.tga -mf w=800:h=600:fps=25:type=tga -ovc copy -oac copy -o výstup.avi
MEncoder je schopen vyextrahovat titulky z DVD do VOBsub formátovaných souborů. Ty sestávají ze dvou souborů zakončených .idx a .sub a jsou obvykle zabaleny v jediném .rar archivu. MPlayer je umí přehrávat s pomocí voleb -vobsub a -vobsubid.
Zadejte základní jméno (čili bez přípony .idx nebo .sub) výstupních souborů pomocí volby -vobsubout a index pro tyto titulky ve zbývajících souborech pomocí -vobsuboutindex.
Pokud není vstup z DVD, měli byste použít -ifo pro indikaci .ifo souboru nutného k vytvoření výsledného .idx souboru.
Pokud vstup není z DVD a nemáte .ifo soubor, budete muset použít volbu -vobsubid k nastavení, pro které id jazyka se má vytvořit .idx soubor.
Každým spuštěním se přidají běžící titulky pokud soubory .idx a .sub již existují. Takže byste je měli všechny odstranit dříve než začnete.
Příklad 6.5. Kopírování dvojích titulků z DVD během dvouprůchodového enkódování
rmtitulky.idx
titulky.sub
mencoder dvd://1 -oac copy -ovc lavc -lavcopts vcodec=mpeg4:vpass=1 \ -vobsubouttitulky
-vobsuboutindex 0 -sid 2 mencoder dvd://1 -oac copy -ovc lavc -lavcopts vcodec=mpeg4:mbd=2:trell:vpass=2 \ -vobsubouttitulky
-vobsuboutindex 1 -sid 5
Příklad 6.6. Kopírování francouzských titulků z MPEG souboru
rmtitulky.idx
titulky.sub
mencodermovie.mpg
-ifomovie.ifo
-vobsubouttitulky
-vobsuboutindex 0 \ -vobsuboutid fr -sid 1 -nosound -ovc copy
DVD a SVCD (čili MPEG-1/2) soubory obsahují hodnotu poměru stran, popisující, jak by měl přehrávač škálovat video proud, takže lidé nebudou mít šišaté hlavy (př.: 480x480 + 4:3 = 640x480). Pokud ovšem enkódujeme do AVI (DivX) souborů, mějte na paměti, že AVI hlavičky neukládají tuto hodnotu. Přeškálování videa je odporné a časově náročné, takže musí být lepší způsob!
A zde jej máte
MPEG-4 má unikátní vlastnost: video proud může obsahovat svůj požadovaný poměr stran. Ano, přesně jako MPEG-1/2 (DVD, SVCD) a H.263 soubory. Naneštěstí kromě MPlayeru jen málo video přehrávačů podporuje tento atribut MPEG-4.
Tato vlastnost může být použita pouze s kodekem mpeg4
z
libavcodec
u.
Mějte na paměti: ačkoli
MPlayer korektně přehraje vytvořený soubor, ostatní
přehrávače použijí špatný poměr stran.
Opravdu byste měli oříznout černé okraje nad a pod filmem.
Nastudujte si použití filtrů cropdetect
a
crop
v man stránce.
Použití
mencodersample-svcd.mpg
-vf crop=714:548:0:14 -oac copy -ovc lavc \ -lavcopts vcodec=mpeg4:mbd=2:trell:autoaspect -ooutput.avi
libavcodec
Xvid
x264
kodekemVideo For Windows
Velmi častou otázkou je "Jak mohu vytvořit rip v nejvyšší možné kvalitě pro danou velikost?". Další otázkou je "Jak vytvořím DVD rip v nejvyšší možné kvalitě? Velikost souboru mě nezajímá, chci tu nejvyšší kvalitu."
Druhá otázka je poněkud špatně položená. Konec konců, pokud je vám lhostejná velikost souboru, proč prostě nezkopírujete celý MPEG-2 video proud z DVD? Jistěže vaše AVI bude mít kolem 5 GB, ale pokud chcete nejvyšší kvalitu a na velikosti nezáleží, je to jistě nejlepší volba.
Ve skutečnosti, důvodem převodu DVD do MPEG-4 je právě to, že vám na velikosti souboru záleží.
Je těžké nabídnout kuchařku jak vytvořit DVD rip ve velmi vysoké kvalitě. Je
nutné uvážit množství faktorů a měli byste rozumět těmto detailům, jinak
budete asi zklamáni výsledkem. Níže prozkoumáme některé z těchto věcí a
pak se podíváme na příklad. Předpokládáme, že použijete
libavcodec
pro enkódování videa,
ačkoli teorie je stejná i pro ostatní kodeky.
Pokud je toho na vás moc, asi byste měli použít některý z pěkných frontendů, které jsou zmíněny v sekci MEncoder na naší stránce odvozených projektů. Takto budete schopni dosahovat vysoce kvalitních ripů bez velkého přemýšlení, protože většina těchto nástrojů je navržena tak, aby dělala vhodná rozhodnutí za vás.
Předtím než i jen pomyslíte na enkódování filmu, budete muset učinit několik přípravných kroků.
Prvním a nejdůležitějším krokem před enkódováním by mělo být zjištění druhu obsahu se kterým máte co do činění. Pokud vaše zdrojové video pochází z DVD nebo veřejné/kabelové/satelitní TV, bude uložen v jednom ze dvou formátů: NTSC v Severní Americe a Japonsku, PAL v Evropě, atd. Je ovšem důležité si uvědomit, že to je pouze formátování pro prezentaci v televizi a často neodpovídá originálnímu formátu filmu. Zkušenosti ukazují, že NTSC materiál je mnohem těžší enkódovat, jelikož musíme identifikovat více věcí ve zdrojovém videu. Abyste dosáhli uspokojivého výsledku, musíte znát původní formát. Nevezmete-li to správně v potaz, dostanete obraz plný nejrůznějších vad, včetně ošklivých kombinačních (proklad) artefaktů a zdvojených nebo dokonce zahozených snímků. Kromě toho, že budete mít nekvalitní obraz, artefakty rovněž snižují efektivitu kódování: Dosáhnete horší kvalitu na jednotku datového toku.
Zde máte seznam běžných typů zdrojového materiálu, kde na který nejspíš narazíte a jejich volby:
Standardní film: Vytvořený pro promítání v kině při 24fps.
PAL video: Zaznamenáno PAL video kamerou s rychlostí 50 půlsnímků za sekundu. Půlsnímek sestává jen z lichých nebo sudých řádků daného snímku. Televize je navržena pro jejich střídavé zobrazování jako laciná forma analogové komprese. Lidské oko to pravděpodobně vykompenzuje, ale jakmile porozumíte prokládání, naučíte se jej vidět i v TV a už si ji neužijete. Dva půlsnímky netvoří úplný snímek, protože jsou zaznamenány s časovou odchylkou 1/50 sekundy a proto se nekryjí, dokud je zde pohyb.
NTSC Video: Zaznamenáno NTSC video kamerou s rychlostí 60000/1001 půlsnímků za sekundu, nebo 60 půlsnímků za sekundu v době před barevnou televizí. Jinak obdobné PAL.
Animovaný film: Obvykle kreslený při 24 snímcích za sekundu, ale rovněž bývá v některé variantě prměnné snímkové rychlosti.
Počítačová grafika (CG): Může mít jakoukoli snímkovou rychlost, ale některé jsou častější než jiné; 24 a 30 snímků za sekundu jsou typické pro NTSC a 25 snímků za sekundu zase pro PAL.
Starý film: Různé nižší snímkové rychlosti.
Filmy sestávající ze snímků jsou nazývány progresivní, zatímco ty složené z nezávislých půlsnímků buď prokládané, nebo jen video – ačkoli druhý termín je zavádějící.
Abychom to ještě zkomplikovali, některé filmy mohou být směsí všeho výše uvedeného.
Nejdůležitějším rozdílem mezi všemi těmito formáty je to, že základem některých jsou snímky a jiných půlsnímky. Vždy, když je film připravován pro promítání v televizi (včetně DVD), je převeden na půlsnímky. Různé metody jak toho lze dosáhnout jsou souhrnně nazývány "telecine" a nechvalně známé NTSC "3:2 pulldown" je jednou z variant. Pokud nebyl základ vašeho filmu rovněž půlsnímkový (se stejnou půlsnímkovou rychlostí), máte film v jiném formátu, než byl původně.
Zde je několik běžných typů pulldown:
PAL 2:2 pulldown: Je nejhezčí z nich. Každý snímek je zobrazován po dobu dvou půlsnímků tak, že se oddělí liché a sudé řádky a zobrazují se střídavě. Pokud měl originál 24 snímků za sekundu, zrychlí se film o 4%.
PAL 2:2:2:2:2:2:2:2:2:2:2:3 pulldown: Každý 12 snímek je zobrazen po dobu tří půlsnímků, místo dvou. To odstraní nevýhodu 4% zrychlení, ale znesnadní obrácený proces. Obvykle je používán pouze u hudební produkce, jelikož zde by 4% zrychlení znatelně poškodilo hudební zážitek.
NTSC 3:2 telecine: Snímky jsou zobrazovány po dobu 2 nebo 3 půlsnímků, čímž je dosaženo 2.5 krát vyšší půlsnímkové rychlosti, než je originální snímková rychlost. Výsledek je dále velmi mírně spomalen ze 60 půlsnímků za sekundu na 60000/1001 půlsnímků za sekundu, aby se dosáhlo NTSC půlsnímkové rychlosti.
NTSC 2:2 pulldown: Používá se pro promítání 30fps materiálu na NTSC. Pěkné, stejně jako 2:2 PAL pulldown.
Existují rovněž metody pro konverzi mezi NTSC a PAL videem, ale to již je nad rámec této příručky. Pokud se setkáte s takovým filmem a budete jej chtít enkódovat, bude pro vás nejlepší opatřit si jej v originálním formátu. Konverze mezi těmito formáty je vysoce destruktivní a nelze ji čistě zvrátit, takže výsledek velmi utrpí, pokud je vytvořen z konvertovaného materiálu.
Když je video ukládáno na DVD, po sobě jdoucí páry půlsnímků jsou seskupovány do snímků, dokonce i když nejsou určeny pro zobrazení ve stejném okamžiku. Standard MPEG-2 použitý na DVD a digitální televizi poskytuje možnost jak pro enkódování originálních progresivních snímků, tak pro uložení informací do hlavičky snímku o počtu půlsnímků, po jejichž dobu by měl být daný snímek zobrazován. Pokud je použita tato metoda, film bývá často označen jako "soft-telecined", jelikož proces pouze řídí DVD přehrávač pro aplikaci pulldown na film spíše než že mění samotný film. Tento případ je velmi upřednostňován, jelikož může být snadno zvrácen (ve skutečnosti ignorován) enkodérem a proto poskytuje maximální kvalitu. Mnoho DVD a televizních produkčních společností však nepoužívá vhodné enkódovací techniky, ale místo toho produkují filmy s "hard telecine", kdy jsou ve skutečnosti půlsnímky duplikovány ve výsledném MPEG-2.
Postupy pro tyto případy budou uvedeny později v této příručce. Prozatím si řekneme několik návodů pro identifikaci o jaký typ materiálu jde:
NTSC regiony:
Pokud MPlayer při přehrávání vypíše, že se snímková rychlost změnila na 24000/1001 a již se to nezmění, pak se nejspíš jedná o progresivní obsah, který byl "soft telecinován".
Pokud MPlayer ukazuje, že se snímková rychlost mění tam a zpět mezi 24000/1001 a 30000/1001 a někdy vidíte "combing", pak je zde několik možností. Segmenty 24000/1001 fps mají téměř jistě "soft telecinovaný" progresivní obsah, ale 30000/1001 fps části mohou mít buď hard-telecined 24000/1001 fps obsah, nebo se jedná o 60000/1001 půlsnímků za sekundu NTSC video. Použijte stejný postup jako v následujících dvou případech pro určení který z nich to je.
Pokud MPlayer neukáže změnu snímkové rychlosti a všechny snímky jsou zubaté, je váš film ve formátu NTSC video s 60000/1001 půlsnímky za sekundu.
Pokud MPlayer neukáže změnu snímkové rychlosti a dva snímky z pěti vypadají zubatě, má vaše video "hard telecinovaný" 24000/1001fps obsah.
PAL regiony:
Pokud není nikde vidět žádné zubatění, je váš film 2:2 pulldown.
Pokud vidíte jak se objevuje a mizí zubatění každou půlsekundu, pak je váš film 2:2:2:2:2:2:2:2:2:2:2:3 pulldown.
Pokud je zubatění vidět stále, je to PAL video s 50 půlsnímky za sekundu.
MPlayer umí spomalit přehrávání videa pomocí volby -speed. Zkuste použít -speed 0.2 pro velmi pomalé přehrávání nebo opakovaně stiskejte klávesu "." pro krokováníé po snímcích a najděte vzor, pokud jej nevidíte při plné rychlosti.
Enkódování vašeho videa je možné provést v široké škále kvality. S moderními video enkodéry a trochou předkodekové komprese (zmenšení a odšumování) je možné dosáhnout velmi dobré kvality v 700 MB, pro 90-110 minut dlouhé širokoúhlé video. Jinak lze všechna videa, snad kromě těch nejdelších, enkódovat v téměř perfektní kvalitě do 1400 MB.
Jsou tři přístupy k enkódování videa: pevný datový tok (CBR), pevný kvantizer a víceprůchodový (ABR, neboli průměrovaný datový tok).
Komplexnost snímků ve filmu a tím i počet bitů potřebných pro jejich komprimaci, se může velmi lišit od scény ke scéně. Moderní enkodéry se umí přizpůsobit těmto potřebám změnou datového toku. V jednoduchých režiměch, jako je CBR, však enkodéry neznají nároky na datový tok budoucích scén a tak nemohou překročit požadovaný střední datový tok na dlouhou dobu. Pokročilejší režimy, jako je víceprůchodové enkódování, umí vzít v potaz statistiky z předchozích režimů, což odstraní výše zmíněný problém.
Většina kodeků, které podporují ABR enkódování, podporují pouze dvouprůchodové
enkódování, zatímco ostatní jako x264
,
Xvid
a libavcodec
podporují víceprůchodové
enkódování, které s každým průchodem trochu zlepší kvalitu, ačkoli toto
zlepšení již není viditelné, nebo měřitelné po asi čtvrtém průchodu.
V této sekci budeme považovat dvouprůchodové a víceprůchodové
enkódování za rovnocenné.
V každém z těchto režimů video kodek (jako je
libavcodec
)
rozbije videosnímek na makrobloky 16x16 pixelů a potom na každý makroblok
aplikuje kvantizer. Čím je nižší kvantizer, tím je vyšší kvalita a datový tok.
Metoda, kterou enkodér filmu používá pro
určení jaký kvantizer použít pro daný makroblok, se liší a je vysoce
ovlivnitelná. (Toto je extrémní zjednodušení daného procesu, ale je vhodné
rozumět základnímu principu.)
Pokud nastavíte konstantní datový tok, bude videokodek enkódovat video tak,
že zahodí
detaily podle potřeby a jen tolik, aby se udržel pod zadaným datovým tokem.
Pokud je vám opravdu lhostejná velikost souboru, můžete také použít CBR a
nastavit datový tok na nekonečno. (V praxi to znamená nastavit hodnotu tak
vysoko, aby nijak neomezovala, jako 10000 Kbitů.) Bez reálného omezení
datového toku použije kodek
nejnižší možný kvantizer pro každý makroblok (ten je nastaven pomocí
vqmin pro libavcodec
,
kde je výchozí 2). Jakmile nastavíte dostatečně nižší
datový tok, takže je kodek
přinucen použít vyšší kvantizer, pak téměř jistě snížíte kvalitu svého videa.
Abyste se tomu vyhnuli, měli byste zvážit zmenšení videa podle postupu
popsaného později v této příručce.
Všeobecně byste se měli úplně vyhnout CBR, pokud vám záleží na kvalitě.
Při konstantním kvantizeru kodek
používá kvantizer nastavený volbou vqscale (pro
libavcodec
) na každý makroblok.
Pokud chcete maximálně kvalitní rip, opět bez ohledu na datový tok, můžete
použít vqscale=2. To povede ke stejnému datovému toku a PSNR
(odstup signál – šum) jako CBR s vbitrate=infinity a
výchozím vqmin rovným 2.
Problém s konstantní kvantizací je ten, že používá zadaný kvantizer ať to daný makroblok potřebuje či nikoli. Je totiž možné použít vyšší kvantizer na makroblok bez obětování viditelné kvality. Proč tedy plýtvat bity s nemístně nízkým kvantizerem? Váše CPU má tolik cyklů, kolik máte času, ale na harddisku máte jen určitý počet bitů.
Při dvouprůchodovém enkódování se v prvním průchodu projde film jakoby měl být CBR, ale vlastnosti každého snímku se zaznamenají do logu. Tato data jsou pak použita při druhém průchodu pro inteligentní stanovení použitého kvantizeru. V rychlých scénách nebo scénách s velkým počtem detailů budou častěji používány vyšší kvantizery a v pomalých nebo méně detailních scénách zase nižší kvantizery. Obvykle je důležitější množství pohybu než detailů.
Pokud použijete vqscale=2, plýtváte bity. Pokud použijete vqscale=3, pak nedostanete nejkvalitnější možný rip. Dejme tomu, že ripujete DVD při vqscale=3 a výsledkem je 1800Kbit. Pokud provedete dvouprůchodové enkódování s vbitrate=1800, výsledné video bude mít vyšší kvalitu při stejném datovém toku.
Jelikož jsme vás nyní přesvědčili, že dvouprůchodový režim je správná volba, skutečnou otázkou je, jaký datový tok použít? Odpověď je, že není jediná odpověď. Ideálně byste měli zvolit takový datový tok, který zajistí nejlepší rovnováhu mezi kvalitou a velikostí souboru. Ten bude pokaždé jiný v závislosti na zdrojovém videu.
Pokud na velikosti souboru nezáleží, pak je dobrý startovní můstek pro rip s velmi vysokou kvalitou je kolem 2000 Kbitů plus-mínus 200 Kbitů. Pro rychlé akční nebo vysoce detailní zdrojové video, nebo máte-li velmi kritické oko, se budete rozhodovat mezi 2400 nebo 2600. U některých DVD nepoznáte rozdíl při 1400 Kbitech. Je vhodné experimentovat se scénami při různých datových tocích, abyste pro to dostali cit.
Pokud se snažíte o určitou velikost, budete muset nějak spočítat datový tok.
Ale ještě předtím musíte zjistit, kolik místa byste měli rezervovat pro
zvukové(ou) stopy(u), takže byste si
je měli ripnout jako první.
Můžete si pak spočítat datový tok pomocí následující rovnice:
datový_tok = (požadovaná_velikost_v_Mbajtech - velikost_zvuku_v_Mbajtech) *
1024 * 1024 / délka_v_sek * 8 / 1000
Například abyste nacpali dvouhodinový film na 702MB CD, se 60MB zvukovou
stopou, bude muset být datový tok videa:
(702 - 60) * 1024 * 1024 / (120*60) * 8 / 1000
= 740kbps (kilobitů za sekundu)
Ze samé podstaty komprese typu MPEG vyplývají určitá omezení, která byste měli ctít, pokud chcete maximální kvalitu. MPEG rozdělí video na čtverce 16x16 nazývané makrobloky, které se skládají ze čtyř bloků 8x8 jasové (luma) složky a dvou bloků 8x8 barevné (chroma) složky v polovičním rozlišení (jeden pro osu červená-cyan (modrozelená) a druhý pro osu modrá-žlutá). Dokonce i když šířka a výška vašeho videa nejsou násobky 16, použije enkodér dostatek 16x16 makrobloků, aby pokryl celou oblast obrazu a zabere místo navíc, které přijde vniveč. Takže chcete-li maximalizovat kvalitu při dané velikosti souboru, není dobrý nápad používat rozměry které nejsou násobky 16.
Většina DVD má také různě velké černé okraje videa. Ponechání těchto ploch různým způsobem velmi snižuje kvalitu.
Komprese typu MPEG je velmi závislá na plošných frekvenčních transformacích, konkrétně Diskrétní Kosinové Transformaci (DCT), která se podobá Fourierově transformaci. Tento druh enkódování je efektivní na reprezentaci opakujících se vzorů a pozvolné přechody, ale má potíže s ostrými přechody. Chcete-li je enkódovat, musíte použít mnoho bitů, jinak se objeví artefakty známé jako kroužkování.
Frekvenční transformace (DCT) je provedena zvlášť pro každý makroblok (ve skutečnosti na každý blok), takže problém nastane pouze tehdy, je-li ostrý přechod uvnitř bloku. Pokud vaše černé okraje začínají přesně na hranicích násobků 16 pixelů, pak to není problém. Černé okraje jsou však na DVD jen málokdy pěkně umístěny, takže je v praxi budete muset vždy odstranit, abyste se vyhnuli tomuto problému.
Navíc k plošně frekvenčním transformacím používá komprese typu MPEG vektory pohybu k popisu změn od jednoho snímku ke druhému. Vektory pohybu přirozeně pracují méně efektivně s novým obsahem přicházejícím zpoza okrajů snímku, protože ten nebyl přítomen na předchozím snímku. Dokud se obraz rozšiřuje směrem k okrajům snímku, nemají s tím vektory pohybu žádný problém, ale jsou-li zde černé okraje, může problém nastat:
Komprese typu MPEG ukládá pro každý makroblok vektor, identifikující která část předchozího obrázku by měla být zkopírována onoho makrobloku jako základ pro predikci následujícího snímku. Pouze zbývající odlišnosti musí být enkódovány. Pokud makroblok přesahuje okraj obrázku a obsahuje část černého okraje, vektory pohybu z ostatních částí obrázku přepíší černý okraj. To znamená mnoho bitů spotřebovaných buď na znovuzačernění, nebo se (spíš) vektory pohybu nepoužijí vůbec a všechny změny v tomto makrobloku se budou kódovat přímo. Jinými slovy se velmi sníží efektivita enkódování.
Tento problém nastává opět jen v případě, že černé okraje nezačínají na lince jejíž pozice je násobkem 16.
Nakonec zde máme makroblok uvnitř obrázku do nějž se posunuje objekt z okraje obrázku. Kódování typu MPEG neumí říct "zkopíruj to co je na obrázku, ale ne černý okraj." Takže se zkopíruje i černý okraj a spotřebuje se spousta bitů na enkódování té části obrázku, která tu měla být.
Pokud se obrázek dostane úplně ven z enkódované oblasti, má MPEG speciální optimalizace pro opakované kopírování pixelů na okraj obrázku pokud přijde vektor pohybu zvenčí enkódované oblasti. Tato vlastnost bude k ničemu, pokud má film černé okraje. Na rozdíl od problémů 1 a 2 zde umístění okrajů na násobky 16 nepomůže.
Navzdory tomu, že okraje jsou úplně černé a nikdy se nemění, je zde vždy alespoň minimální datový tok spotřebovaný na větší množství makrobloků.
Ze všech těchto důvodů doporučujeme zcela odstranit černé okraje. Dále, pokud je na okraji obrázku oblast se šumem/zkreslením, jejím odstřižením se ještě zvýší efektivita enkódování. Videofilní puristé, kteří chtějí zůstat tak blízko originálu, jak je to jen možné, mohou protestovat proti tomuto ořezání, ale pokud nehodláte enkódovat s konstantním kvantizerem, kvalita kterou dostanete díky ořezání znatelně převýší množství ztracených informací na okrajích.
Připomeňme z předchozí části, že konečná velikost obrázku by měla mít jak šířku, tak výšku beze zbytku dělitelnou 16, čehož můžete dosáhnout pomocí ořezání, škálování, nebo kombinací obou.
Při ořezávání byste se měli držet několika zásad, abyste předešli poškození svého filmu. Normální YUV formát 4:2:0, ukládá barvonosnou (chroma) informaci podvzorkovanou, čili hustota vzorkování barvy je poloviční oproti jasové (černobílé) složce v obou směrech. Prohlédněte si tento diagram, kde L označuje vzorkovací body jasu a C barvy.
L | L | L | L | L | L | L | L |
C | C | C | C | ||||
L | L | L | L | L | L | L | L |
L | L | L | L | L | L | L | L |
C | C | C | C | ||||
L | L | L | L | L | L | L | L |
Jak vidíte, řádky i sloupce obrázku se přirozeně párují. Při ořezávání tedy musí být hodnoty odsazení i rozměrů sudá čísla. Pokud nejsou, nebude se barvonosná informace zprávně krýt s jasovou. Teoreticky lze stříhat s lichým odsazením, ale to vyžaduje převzorkování barvy, což je potenciálně ztrátový úkon a není podporován filtrem crop.
Dále, prokládané video je vzorkováno takto:
Horní půlsnímek | Spodní půlsnímek | ||||||||||||||
L | L | L | L | L | L | L | L | ||||||||
C | C | C | C | ||||||||||||
L | L | L | L | L | L | L | L | ||||||||
L | L | L | L | L | L | L | L | ||||||||
C | C | C | C | ||||||||||||
L | L | L | L | L | L | L | L | ||||||||
L | L | L | L | L | L | L | L | ||||||||
C | C | C | C | ||||||||||||
L | L | L | L | L | L | L | L | ||||||||
L | L | L | L | L | L | L | L | ||||||||
C | C | C | C | ||||||||||||
L | L | L | L | L | L | L | L |
Jak vidíte, tak se vzor opakuje každé 4 řádky, takže při ořezu prokládaného videa musí být odsazení v ose y a výška beze zbytku delitelné 4.
Nativní DVD rozlišení je 720x480 pro NTSC a 720x576 pro PAL, ale je zde ještě příznak poměru stran, který udává, zda se jedná o obrazovku (full-screen)(4:3), nebo širokoúhlý film (wide-screen)(16:9). Mnoho (jestli ne většina) širokoúhlých DVD není přesně 16:9, ale bude buď 1.85:1 anebo 2.35:1 (cinescope). To znamená, že zde budou ve videu černé okraje, které bude nutné odstřihnout.
MPlayer poskytuje filtr pro detekci potřebného ořezu, který stanoví ořezový obdélník (-vf cropdetect). Spusťte MPlayer s volbou -vf cropdetect a on vám vypíše nastavení filtru crop pro ořezání okrajů. Měli byste nechat běžet film tak dlouho, dokud není použita celá plocha obrázku, abyste dostali správné hodnoty crop.
Pak otestujte získané hodnoty z příkazového řádku MPlayeru vypisované cropdetectem a upravte obdélník podle potřeby. V tom vám pomůže filtr rectangle, který umožňuje interaktivně nastavit obdélník pro váš film. Nezapomeňte zachovat výše uvedená doporučení, abyste nepoškodili barevnou mapu.
Škálování je obvykle nevhodné. Škálování prokládaného videa je obtížné a pokud chcete zachovat prokládání, měli byste se mu úplně vyhnout. Pokud mebudete škálovat, ale budete chtít používat rozměry v násobcích 16, budete muset oříznout i část obrazu. Neponechávejte ani malé černé okraje, jelikož se velmi špatně kódují!
Protože MPEG-4 používá makrobloky 16x16, měli byste se ujistit, že oba rozměry videa jsou násobkem 16, jinak snížíte kvalitu, zvlášť při nízkých datových tocích. Můžete to zajistit zaokrouhlením šířky a výšky ořezového obdélníku dolů na nejbližší násobek 16. Jak jsme již řekli, měli byste při ořezávání zvýšit odsazení (offset) v ose y o polovinu rozdílu mezi starou a novou výškou, takže bude výsledné video bráno ze středu snímku. Z důvodu principu vzorkování DVD videa se ujistěte, že je odsazení sudé číslo. (Popravdě, přijměte jako pravidlo, nikdy nepoužívat liché hodnoty pro jakýkoli z parametrů při ořezávání a škálování videa.) Pokud nechcete zahodit těch několik pixelů navíc, můžete místo toho raději změnit velikost videa (škálovat). Na to se podíváme v příkladu níže. V praxi můžete nechat filtr cropdetect udělat všechnu práci zmíněnou výše, jelikož má volitelný parametr round (zaokrouhlení), jehož výchozí hodnota je 16.
Rovněž buďte opatrní na "napůl černé" pixely na okrajích. Vždy je rovněž odstřihněte, jinak zde budete plýtvat bity, které můžete použít jinde.
Poté co provedete vše, co jsme si doposud řekli, budete mít video, které asi
nebude právě 1.85:1 nebo 2.35:1, ale někde poblíž. Můžete spočítat nový poměr
stran ručně, ale MEncoder nabízí volbu pro
libavcodec
nazývanou autoaspect,
která to za vás udělá. Nezvětšujte video jen proto, abyste dosáhli čtvercových
pixelů, pokud je vám milé místo na disku. Škálování by mělo být provedeno při
přehrávání, kdy přehrávač použije poměr stran uložený v AVI pro zajištění
správného rozlišení.
Naneštěstí ne všechny přehrávače uplatňují tuto autoškálovací informaci,
takže můžete přece jen chtít škálovat.
Pokud nebudete enkódovat v režimu konstantního kvantizeru, musíte zvolit velikost datového toku. Koncepce datového toku je velmi jednoduchá. Je to (průměrný) počet bitů spotřebovaný na jednu sekundu filmu. Normálně se datový tok udává v kilobitech (1000 bitů) za sekundu. Velikost vašeho filmu je pak datový tok násobený délkou filmu, plus malá režie (viz například sekci kontejner AVI). Ostatní parametry jako je škálování, ořezání atd. nezmění velikost souboru, pokud zároveň nezměníte datový tok!
Datový tok se nemění proporcionálně k rozlišení. Jinými slovy, soubor 320x240 při 200 kbit/sek nebude mít stejnou kvalitu jako ten samý film při 640x480 a 800 kbitech/sek! Jsou pro to dva důvody:
Dojem: MPEG artefakty jsou patrné tím více, čím jsou více zvětšené! Artefakty se objevují ve velikosti bloků (8x8). Vaše oko neodhalí chyby ve 4800 malých blocích tak snadno jako ve 1200 velkých (předpokládáme, že oboje budete škálovat na celou obrazovku).
Teoretický: Když zmenšíte obrázek, ale stále použijete stejnou velikost bloků (8x8) pro frekvenční prostorovou transformaci, přesunete více dat do oblasti vyšších frekvencí. Zjednodušeně řečeno, každý pixel nyní obsahuje více detailů, než předtím. Dokonce i když připustíme, že jste zmenšili obraz obsahující 1/4 informací o daném prostoru, stále může obsahovat mnoho detailů v daném frekvenčním pásmu (předpokládáme, že vysoké frekvence byly v originálním 640x480 snímku ořezány).
Dřívější návody doporučovaly volit datový tok a rozlišení rozpočítáním bitů na pixely, ale to obvykle není správně ze zmíněných důvodů. Mnohem lepším se zdá odhad, že je datový tok úměrný čtverci rozlišení, takže 320x240 při 400 kbit/sek by mělo být srovnatelné s 640x480 při 800 kbit/sek. Tato úměra však nebyla ověřena teoreticky ani empiricky. Navíc, vezmeme-li v úvahu to, že se filmy velmi liší šumem, počtem detailů, množstvím pohybu atd, je beznadějné vytvořit obecná doporučení pro počet bitů na délku diagonály (analogie bitů na pixel, avšak používá plochu obrazu).
Tolik k obtížnosti volby datového toku a rozlišení.
Následující kroky vás provedou výpočty rozlišení výsledného filmu tak,
abyste příliš nesnížili kvalitu videa s přihlédnutím k několika typům
informací o zdrojovém videu.
Nejdřív byste si měli spočítat enkódovaný poměr stran:
PSo = (Šo x (PSa / PRdvd )) / Vo
kde:
Šo a Vo jsou šířka a výška ořezaného videa,
PSa je zobrazovaný poměr stran, jež je obvykle 4/3 nebo 16/9,
PRdvd je poměr pixelů v DVD, který je roven 1.25=(720/576) pro DVD v PALu a 1.5=(720/480) pro DVD v NTSC,
Pak si můžete spočítat rozlišení X a Y podle určitého
faktoru kvality komprese (CQ):
RozY = INT(SQRT( 1000*Datový_tok/25/PSo/CQ )/16) * 16
a
RozX = INT( RozY * PSo / 16) * 16
Dobře, ale co je CQ? CQ odpovídá počtu bitů na pixel a na snímek po zakódování. Jinými slovy, čím vyšší je CQ, tím nižší je šance uvidět enkódovací artefakty. Pokud ovšem máte cílový rozměr vašeho filmu (1 nebo 2 CD například), máte jen omezené množství bitů, které můžete spotřebovat; takže je nutné najít vhodný kompromis mezi komprimovatelností a kvalitou.
CQ závisí na datovém toku, efektivitě video kodeku a na rozlišení filmu.
Abyste zvýšili CQ, obvykle zmenšíte daný film, takže je datový tok spočítán
ve funkci cílové velikosti a délky filmu, které jsou konstantní.
S MPEG-4 ASP kodeky jako jsou Xvid
a libavcodec
, vede CQ pod 0.18
obvykle k velmi čtverečkovanému obrázku, protože není dostatek bitů pro
zakódování informací každého makrobloku. (MPEG4, stejně jako mnoho
jiných kodeků seskupuje pixely do bloků při komprimaci obrázku; pokud není
dostatek bitů, jsou viditelné hranice těchto bloků.)
Proto je rozumné volit CQ v rozmezí 0.20 až 0.22 pro rip na 1 CD a
0.26 až 0.28 pro rip na 2 CD při standardních enkódovacích volbách.
Pokročilejší volby podobné těm zmiňovaným zde pro
libavcodec
a
Xvid
by měly umožnit dosažení stejné kvality při CQ v rozsahu od
0.18 do 0.20 pro rip na 1 CD a 0.24 až 0.26 pro rip na 2 CD.
S MPEG-4 ASP kodeky jako je x264
,
můžete použít CQ v rozmezí 0.14 až 0.16 při standardních enkódovacích volbách
a měli byste být schopni jít až na nízký od 0.10 do 0.12 s pokročilými
x264
enkódovacími volbami.
Prosíme berte v potaz, že CQ je jen informační pomůcka závisející na enkódovaném obsahu. CQ okolo 0.18 může být dostatečně dobrý pro Bergmana, na rozdíl od filmu jako je Matrix, který obsahuje mnoho rychlých scén. Na druhou stranu je zbytečné zvyšovat CQ výš než 0.30, jelikož budete plýtvat bity za minimální zisk kvality. Také berte v potaz, jak jsme již řekli, že videa s nízkým rozlišením vyžadují vyšší CQ (v porovnání s např. DVD rozlišením), aby vypadala dobře.
Naučit se používat video filtry MEncoderu je základem pro produkci dobrých videí. Veškeré úpravy videa jsou prováděny pomocí filtrů -- ořezání, škálování, úprava barev, odstranění šumu, zaostření, odstranění prokladu, telecinování, inverzní telecine a deblokování, abychom jmenovali alespoň některé. Spolu s vyčerpávajícím počtem podporovaných vstupních formátů je nabídka dostupných filtrů v MEncoderu jednou z jeho hlavních výhod oproti podobným aplikacím.
Filtry jsou nahrávány v řadě za použití volby -vf :
-vf filtr1=volby,filtr2=volby,...
Většina filtrů přebírá několik číselných voleb oddělených dvojtečkou, ale syntaxe voleb se liší od filtru k filtru, takže si přečtěte manuál pro více informací o filtru který chcete použít.
Filtry zpracovávají video v pořadí, v jakém jsou načteny. Například následující řada:
-vf crop=688:464:12:4,scale=640:464
nejprve vyřízne z obrázku oblast 688x464 s levým horním rohem v bodě (12,4) a výsledek pak zmenší na 640x464.
Určité filtry potřebují být nahrány na začátku, nebo co nejblíž začátku řetězu filtrů, aby mohly využívat informace z video dekodéru, které budou ztraceny nebo znehodnoceny ostatními filtry. Nejdůležitější příklady jsou pp (postprocesing, pouze pokud provádí deblok nebo dering operace), spp (další postprocesor pro odstranění MPEG artefaktů), pullup (inverzní telecine) a softpulldown (pro konverzi soft telecine na hard telecine).
Všeobecně byste měli filtrovat co nejméně je to možné, abyste zůstali co nejblíže DVD originálu. Ořezání je často nutné (vysvětleno výše), ale vyhněte se škálování videa. Ačkoli je zmenšení občas preferováno před použitím vyšších kvantizérů. My se musíme vyvarovat obou těchto případů: pamatujte, že jsme se již na začátku rozhodli obětovat bity za kvalitu.
Rovněž neupravujte gamu, kontrast, jas, atd. Co vypadá dobře na vaší obrazovce, nemusí vypadat dobře na ostatních. Tyto korekce by měly být prováděny výhradně při přehrávání.
Jednu věc byste však udělat mohli, a to protáhnout video velmi lehkým odšumovacím filtrem, jako je -vf hqdn3d=2:1:2. Zde je opět důvodem využití bitů k lepšímu účelu: proč jimi plýtvat na enkódování šumu, když si můžete šum přidat až při přehrávání? Zvýšením parametrů pro hqdn3d dále zvýší komprimovatelnost, ale pokud zvýšíte hodnoty příliš, riskujete zhoršení viditelnosti obrazu. Výše zmíněné hodnoty (2:1:2) jsou dost konzervativní; měli byste si zaexperimentovat s vyššími hodnotami a zhodnotit výsledky sami.
Téměř veškeré filmy jsou natáčeny při 24 snímcích/s. Jelikož NTSC má snímkovou rychlost 30000/1001 snímků/s, je třeba provést úpravu těchto 24 snímků/s videí, aby měly správnou NTSC snímkovou rychlost. Tato úprava se jmenuje 3:2 pulldown a obecně je známa jako telecine (protože je pulldown často prováděn během přenosu filmu na video) a, jednoduše řečeno, pracuje tak, že se film zpomalí na 24000/1001 snímků/s a každý čtvrtý snímek se zopakuje.
Naopak žádné speciální úpravy se neprovádějí videu pro PAL DVD, která běží při 25 snímcích/s. (Technicky lze na PAL provést telecine, tzv. 2:2 pulldown, ale v praxi se nepoužívá.) Film s 24 snímky/s je jednoduše přehráván rychlostí 25 snímků/s. Výsledkem je, že video běží o něco rychleji, ale pokud nejste vetřelec, tak si rozdílu ani nevšimnete. Většina filmů má navíc výškově korigovaný zvuk, takže při přehrávání 25 snímků/s vše zní jak má i přesto, že zvuk (a proto i celé video) má o 4% kratší dobu přehrávání než NTSC DVD.
Jelikož video na PAL DVD nebylo upravováno, nemusíte si dělat starosti s jeho snímkovou rychlostí. Zdroj má 25 snímků/s, váš rip také. Pokud ovšem ripujete NTSC DVD film, musíte provést inverzní telecine.
Filmy točené rychlostí 24 snímků/s jsou na NTSC DVD uloženy buď jako 30000/1001 po telecine, nebo jako progresivní (neprokládaný) se snímkovou 24000/1001 snímků/s, na kterých by měl provést telecine DVD přehrávač za letu. Není to ale zákon: některé TV série jsou prokládané (např. Buffy Lovec upírů), zatímco jiné jsou porůznu neprokládané nebo prokládané (např. Anděl, nebo 24 hodin).
Doporučujeme, abyste si přečetli sekci o tom Jak si poradit s telecine a prokladem na NTSC DVD a naučili se jak využít různé možnosti.
Pokud ovšem většinou ripujete pouze filmy, nejspíš se setkáváte s neprokládaným nebo prokládaným videem 24 snímků/s. V tom případě můžete použít pullup filtr -vf pullup,softskip.
Pokud je film, který chcete enkódovat, prokládaný (NTSC video nebo PAL video), budete si muset vybrat, zda jej chcete "odproložit" nebo ne. Zatímco odstranění prokladu učiní váš film použitelným na progresivně vykreslovaných zobrazovačích jako jsou počítačové monitory a projektory. Cenou za to je, snížení rychlosti z 50 nebo 60000/1001 půlsnímků za sekundu na 25 nebo 30000/1001 snímků za sekundu a zhruba polovina informací bude z vašeho filmu ztracena ve scénách s významným množstvím pohybu.
Proto pokud enkódujete ve vysoké kvalitě pro archivační účely, doporučujeme ponechat film prokládaný. Vždy můžete provést odstranění prokladu při přehrávání pokud zobrazujete na progresivně zobrazujícím zařízení. Výkon současných počítačů nutí přehrávače používat filtr prokladu, což působí mírnou degradaci kvality obrazu. Budoucí přehrávače však budou schopny napodobovat chování prokládané TV obrazovky, odstraňovat proklad v plné půlsnímkové rychlosti a odvozovat 50 nebo 60000/1001 úplných snímků za sekundu z prokládaného videa.
Když pracujete s prokládaným videem, musíte zvláště dbát na:
Výška a svislé odsazení pro ořezání musí být násobkem 4.
Jakékoli svislé škálování musí být provedeno v prokládaném režimu.
Postprocesní a odšumovací filtry nemusí pracovat podle očekávání, dokud nezařídíte, aby zpracovávaly najednou pouze jeden půlsnímek a mohou vám poškodit video při nesprávném použití.
S vědomím těchto souvislostí vám předkládáme první příklad:
mencoder capture.avi
-mc 0 -oac lavc -ovc lavc -lavcopts \
vcodec=mpeg2video:vbitrate=6000:ilme:ildct:acodec=mp2:abitrate=224
Povšimněte si voleb ilme a ildct.
MEncoderovy audio/video synchronizační
algoritmy byly navrženy se záměrem obnovy souborů s vadnou synchronizací.
V některých případech však můžou působit zbytečné zahazování a duplikaci snímků
a možná mírnou A/V desynchronizaci při použití s bezvadným vstupem
(přirozeně tyto A/V synchronizační omezení projeví pouze pokud kopírujete
zvukovou stopu při překódovávání videa, což je velmi doporučováno).
Můžete však přepnout do základní A/V synchronizace s volbou
-mc 0, nebo ji přidejte do svého konfiguračního souboru
~/.mplayer/mencoder
config file, aspoň pokud pracujete
pouze s kvalitními zdroji (DVD, zachytávaná TV, vysoce kvalitní MPEG-4 ripy,
atd) ale nikoli s vadnými ASF/RM/MOV soubory.
Chcete-li si dále pohlídat podivné zahazování snímků a duplikaci, můžete použít -mc 0 spolu s -noskip. To zamezí veškeré A/V synchronizaci a snímky se skopírují jedna k jedné, takže to nelze použít ve spojení s filtry, které v nestřženém okamžiku přidají nebo zahodí snímky, nebo pokud zdrojové video má proměnnou snímkovou rychlost! V tom případě není použití -noskip obecně doporučováno.
O takzvaném "tříprůchodovém" enkódování zvuku podporovaném MEncoderem bylo hlášeno, že způsobuje A/V desynchronizaci. To nastává tehdy, pokud je použito v kombinaci s některými filtry, takže není v tuto chvíli doporučováno používat tříprůchodové enkódování zvuku. Tato vlastnost je zachována pouze z důvodu kompatibility a pro expertní uživatele, kteří vědí, kdy je bezpečné ji použít a kdy ne. Pokud jste o tomto režimu nikdy předtím neslyšeli, zapoměňte, že jsme se o něm vůbec zmínili!
Existují rovněž hlášení o A/V desynchronizaci při enkódování ze stdin MEncoderem. Nedělejte to! Vždy použijte jako zdroj soubor nebo CD/DVD/atd zařízení.
Výběr vhodného video kodeku k použití závisí na několika faktorech, jako je velikost, kvalita, schopnost přehrávání po síti, použitelnost nebo obliba, z nichž některé jsou čistě věcí osobního vkusu, jiné závisí na technických omezeních.
Účinost komprimace:
Jednoduše můžeme říct, že většina kodeků novější generace je vytvořena
tak, aby dosahovala vyšší kvality a komrimace než předchozí generace.
Proto se autoři této příručky a mnoho jiných lidí, domnívají že
neuděláte chybu,
[1]
když zvolíte MPEG-4 AVC kodeky, jako
x264
místo MPEG-4 ASP kodeků
jako jsou libavcodec
MPEG-4, nebo
Xvid
.
(Pokročilé vývojáře kodeků by mohl zajímat názor Michaela Niedermayera na
"proč mě štve MPEG4-ASP".)
Podobně byste měli dosáhnout lepší kvality použitím MPEG-4 ASP místo
MPEG-2 kodeků.
Novější kodeky, které jsou v rozsáhlém vývoji, mohou obsahovat chyby, kterých si dosud nikdo nevšiml a které mohou zničit výsledek. To je daň za použití nejnovější technologie.
Navíc, v začátku používání nového kodeku se budete muset strávit nějaký čas seznámením se s jeho volbami, abyste se dověděli co kde nastavit pro dosažení požadované kvality obrazu.
Hardwarová kompatibilita:
Obvykle trvá dlouhou dobu, než začnou stolní video přehrávače podporovat
nejnovější videokodeky. Výsledkem toho je, že většina z nich podporuje
pouze kodeky MPEG-1 (jako VCD, XVCD a KVCD), MPEG-2 (jako DVD, SVCD a KVCD)
a MPEG-4 ASP (jako DivX,
LMP4 z libavcodec
u a
Xvid
)
(Pozor: obvykle nejsou podporovány všechny vlastnosti (features) MPEG-4 ASP).
Nahlédněte prosím do technických specifikací vašeho přehrávače (pokud jsou),
nebo si vygooglete více informací.
Nejlepší kvalita na enkódovací čas:
Kodeky, které již jsou zde nějakou dobu (jako
libavcodec
MPEG-4 a
Xvid
), jsou obvykle vysoce
optimalizovány všemi druhy chytrých algoritmů a SIMD assembly kódem.
Proto mají snahu dosahovat nejlepší poměr kvality na enkódovací čas.
Mohou však mít některé velmi pokročilé volby, které, pokud jsou zapnuty,
velmi spomalí enkódování při mizivém zisku.
Pokud vám jde o rychlost, měli byste se držet výchozího nastavení video kodeku (ačkoli byste stejně měli zkusit ostatní volby zmíněné v dalších částech této příručky).
Rovněž můžete zvážit použití kodeku, který umí vícevláknové zpracování,
což je ovšem k něčemu jen uživatelům víceprocesorových strojů.
libavcodec
MPEG-4 to umožňuje,
ale nárůst rychlosti je omezený a dostanete nepatrně méně kvalitní obraz.
Vícevláknový režim Xvid
, aktivovaný
volbou threads, můžete využít ke zvýšení rychlosti
enkódování — obvykle o 40–60% — s velmi malým nebo žádným
zhoršením obrazu.
x264
rovněž umožňuje vícevláknové
enkódování, které v současnosti zrychluje enkódování asi o 94% na každé procesorové
jádro, ale snížuje PSNR o 0.05dB.
Osobní vkus:
Zde jsme v rovině téměř iracionální: Ze stejného důvodu, pro který někteří
setrvávali léta u DivX 3 i když novější kodeky již dělaly zázraky,
preferují někteří lidé Xvid
nebo libavcodec
MPEG-4 před
x264
.
Udělejte si vlastní úsudek a neposlouchejte lidi, kteří přísahají na jediný kodek. Udělejte si několik vzorků ze surových zdrojů a porovnejte různé volby enkódování a kodeky, abyste nalezli ten, který vám vyhovuje nejlépe. Nejlepší kodek je ten, který nejlépe ovládáte a který vypadá nejlépe na vaší obrazovce [2]!
Seznam podporovaných kodeků najdete v sekci výběr kodeků a nosných formátů.
Zvuk je mnohem jednodušší problém k řešení: pokud prahnete po kvalitě, prostě jej nechte jak je. Dokonce i AC–3 5.1 datové proudy mají nanejvýš 448Kbitů/s a stojí za každý bit. Možná jste v pokušení převést zvuk do Ogg Vorbis při vysoké kvalitě, ale jen proto, že dnes nemáte A/V receiver pro hardwarové dekódování AC–3 neznamená, že jej nebudete mít zítra. Připravte své DVD ripy na budoucnost zachováním AC–3 datových proudů. Datový proud AC–3 můžete zachovat buď jeho zkopírováním přímo do video proudu během enkódování. Také můžete extrahovat AC–3 proud, abyste jej pak namixovali do nosičů jako je NUT nebo Matroska.
mplayerzdrojový_soubor.vob
-aid 129 -dumpaudio -dumpfilezvuk.ac3
vytáhne do souboru zvuk.ac3
zvukovou stopu
číslo 129 ze souboru zdrojový_soubor.vob
(NB: DVD
VOB soubory obvykle používají odlišné číslování audia,
což znamená, že VOB zvuková stopa 129 je druhou zvukovou stopou v souboru).
Někdy ovšem opravdu nemáte jinou možnost než dále komprimovat zvuk, aby vám zbylo více bitů na video. Většina lidí volí komprimaci buď pomocí MP3 nebo Vorbis audio kodeků. Zatímco ten druhý je efektivnější z prostorového hlediska, MP3 je lépe podporován hardwarovými přehrávači, ačkoli časy se mění.
Nepoužívejte -nosound, enkódujete-li soubor se zvukem, dokonce i v tom případě, že budete enkódovat a muxovat zvuk samostatně později. Ačkoli to může v ideálním případě fungovat, použití -nosound spíše skryje určité problémy v nastaveních enkódování na příkazovém řádku. Jinými slovy vám přítomnost zvukové stopy zajistí, pokud neuvidíte hlášky typu „Příliš mnoho audio paketů ve vyrovnávací paměti“, že budete schopni dosáhnout správné synchronizace.
Musíte nechat MEncoder zpracovat zvuk. Můžete například skopírovat originální zvukovou stopu během enkódování pomocí -oac copy, nebo jej převést na "tenký" 4 kHz mono WAV PCM pomocí -oac pcm -channels 1 -srate 4000. Jinak v některých případech vytvoříte video soubor, který nebude synchronní se zvukem. Tyto případy nastávají tehdy, když počet videosnímků ve zdroji neodpovídá celkové délce zvukových vzorků, nebo pokud je zvuk přerušovaný či překrývaný díky chybějícím či nadbývajícím audio vzorkům. Správným způsobem jak toto řešit, je vložení ticha nebo odstřižení zvuku na těchto místech. MPlayer to však neumí, takže pokud demuxujete AC–3 zvuk a enkódujete jej zvláštní aplikací (nebo jej dumpnete do PCM MPlayerem), zůstanou zmíněné vady jak jsou a jediný způsob jak je opravit je zahodit/namnožit video snímky v těchto místech. Dokud MEncoder sleduje zvuk při enkódování videa, může provádět toto zahazování/duplikování (což je obvykle OK, jelikož nastává při černé obrazovce/změně scény), ale pokud MEncoder nevidí zvuk, zpracuje snímky jak jsou a ty pak nepasují na konečnou zvukovou stopu když například spojíte svou video a zvukovou stopu do Matroska souboru.
Nejdříve ze všeho budete muset převést DVD zvuk do WAV souboru, který pak použije zvukový kodek jako vstup. Například:
mplayerzdrojový_soubor.vob
-ao pcm:file=výsledný_zvuk.wav
\ -vc dummy -aid 1 -vo null
vylije druhou zvukovou stopu ze souboru
zdrojový_soubor.vob
do souboru
výsledný_zvuk.wav
.
Měli byste normalizovat zvuk před enkódováním, protože DVD zvukové stopy jsou
obvykle nahrávány při nízkých hlasitostech.
Můžete například použít nástroj normalize, který je
k dispozici ve většině distribucí.
Pokud používáte Windows, stejnou práci udělá nástroj jako
BeSweet.
Komprimovat budete buď ve Vorbisu nebo MP3.
Například:
oggenc -q1 cílový_zvuk.wav
provede enkódování cílového_zvuku.wav
s kvalitou 1,
která přibližně odpovídá 80Kb/s a je to minimální kvalita na kterou byste měli
enkódovat, pokud vám záleží na kvalitě.
Poznamenejme, že MEncoder v současnosti neumí
muxovat Vorbis zvukové stopy do výstupního souboru, protože podporuje pouze
AVI a MPEG kontejnery jako výstup. Pro oba platí, že některé přehrávače mohou
mít problémy s udržením audio/video synchronizace, pokud je přítomen VBR zvuk
jako je Vorbis.
Nemějte obavy, v tomto dokumentu vám ukážeme, jak to lze udělat pomocí
programů třetích stran.
Nyní, když máte své video enkódované, budete jej nejspíš chtít muxovat s jednou nebo více zvukovými stopami do nosného filmového formátu, jako je AVI, MPEG, Matroska nebo NUT. MEncoder je zatím schopen nativně zapracovat zvuk a video pouze do nosných formátů MPEG a AVI. Například:
mencoder -oac copy -ovc copy -ovýstupní_film.avi
\ -audiofilevstupní_audio.mp2
vstupní_video.avi
To by mělo sloučit video soubor vstupní_video.avi
a zvukový soubor vstupní_audio.mp2
do AVI souboru výstupní_film.avi
.
Tento příkaz pracuje s MPEG-1 layer I, II a III (známým jako MP3) zvukem,
WAV a také několika dalšími formáty zvuku.
MEncoder obsahuje experimentální podporu pro
libavformat
, což je knihovna
z projektu FFmpeg, která podporuje muxování a demuxování celé řady nosných
formátů.
Například:
mencoder -oac copy -ovc copy -ovýstupní_film.asf
-audiofilevstupní_audio.mp2
\vstupní_video.avi
-of lavf -lavfopts format=asf
To provede stejnou činnost jako předchozí příklad, avšak výstupním formátem
bude ASF.
Prosím berte na vědomí, že tato podpora je velmi experimentální (ale den ode
dne lepší) a bude funkční pouze pokud jste zkompilovali
MPlayer s podporou pro
libavformat
(což znamená, že
předkompilovaná binární verze nebude většinou fungovat).
Můžete se dostat do vážných problémů s A/V sychronizací, pokud se snažíte muxovat video a některé zvukové stopy, kdy bez ohledu na nastavení zpoždění zvuku nedosáhnete správné synchronizace. To může nastat, pokud použijete některé video filtry, které zahodí nebo zdvojí některé snímky, jako jsou filtry pro inverzi telecine. Velmi doporučujeme přidat videofiltr harddup na samý konec řetězu videofiltrů pro potlačení tohoto problému.
Bez harddup, pokud chce MEncoder duplikovat snímek, závisí na muxeru, aby vložil značku do nosiče, takže bude poslední snímek zobrazen znovu, aby se dosáhlo synchronizace, přičemž se nezapíše žádný snímek. S harddup, MEncoder pustí poslední zobrazený snímek znovu do řetězu filtrů. To znamená, že enkodér obdrží stejný snímek dvakrát a comprimuje ho. To povede k o něco většímu souboru, ale nezpůsobí problémy při demuxování nebo remuxování do jiného nosného formátu.
Rovněž nemáte jinou možnost než použít harddup s těmi
nosnými formáty, které nejsou těsně spjaty s
MEncoderem, jako jsou ty, které jsou podporovány
přes libavformat
, které nemusí
podporovat duplikaci na úrovni nosného formátu.
Ačkoli je to po MPEG-1 nejpodporovanější nosný formát, má AVI i jisté zásadní nedostatky. Snad nejviditelnější je režie. Na každý chunk AVI souboru je 24 bajtů ztraceno na hlavičky a index. To se projeví asi 5 MB na hodinu, neboli 1-2.5% prodloužení 700 MB filmu. Nevypadá to jako mnoho, ale může to znamenat rozdíl mezi možností použít video při 700 kbitech/s nebo 714 kbitech/s a tady se každý bit projeví na kvalitě.
Navíc k této neefektivitě má AVI také následující hlavní omezení:
Může být uchováván pouze obsah s konstantní snímkovou rychlostí. To je zvláště omezující, když má původní materiál, který chcete enkódovat, smíšený obsah. Například směs NTSC videa a filmového materiálu. Jistěže jsou zde cestičky, které umožní uložit obsah se smíšenou snímkovou rychlostí v AVI, ale ty zvyšují (již tak velkou) režii pětinásobně nebo víc, proto nejsou praktické.
Zvuk v AVI musí mít buď konstantní datový tok (CBR) nebo konstantní velikost rámce (čili všechny rámce se dekódují na stejný počet vzorků). Naneštěstí ten nejefektivnější kodek, Vorbis, nesplňuje ani jeden z těchto požadavků. Pokud tedy plánujete uložit svůj film do AVI, budete muset použít méně efektivní kodek, jako MP3 nebo AC–3.
Z výše uvedených důvodů MEncoder zatím nepodporuje proměnnou snímkovou rychlost ani enkódování Vorbis. Nemusíte to však považovat za omezení, jestliže je MEncoder jediným nástrojem pro vaše enkódování. Nakonec je možné použít MEncoder pouze pro enkódování videa a pak použít externí nástroje pro enkódování zvuku a namuxování do jiného nosného formátu.
Matroska je svobodný a otevřený standard nosného formátu, zaměřený na nabídku mnoha pokročilých vlastností, které starší nosné formáty, jako AVI, nemohou poskytnout. Například Matroska podporuje zvuk s proměnným datovým tokem (VBR), proměnné snímkové rychlosti (VFR), kapitoly, přílohy souborů, kód pro detekci chyb (EDC) a moderní A/V kodeky jako "Advanced Audio Coding" (AAC), "Vorbis" nebo "MPEG-4 AVC" (H.264), z nichž žádný nelze použít v AVI.
Nástroje pro vytváření Matroska souborů jsou souhrnně nazvány mkvtoolnix a jsou dostupné pro většinu Unixových platforem a stejně tak Windows. Protože je Matroska otevřený standard, můžete najít jiné nástroje, které vám lépe padnou, ale protože mkvtoolnix je nejrozšířenější a je podporován přímo Matroska týmem, pokryjeme jen jejich použití.
Asi nejsnazší způsob, jak začít s Matroskou je použít MMG, grafickou nadstavbu dodávanou s mkvtoolnix a řídit se návodem k mkvmerge GUI (mmg)
Můžete rovněž muxovat zvukové a video soubory z příkazového řádku:
mkvmerge -ovýstup.mkv
vstupní_video.avi
vstupní_audio1.mp3
vstupní_audio2.ac3
To spojí video soubor vstupní_video.avi
a dva zvukové soubory vstupní_audio1.mp3
a vstupní_audio2.ac3
do Matroska souboru
výstup.mkv
.
Matroska, jak jsme již řekli, umí mnohem víc než to, jako více zvukových stop
(včetně doladění audio/video synchronizace), kapitoly, titulky, stříhání,
atd...
Detaily naleznete v dokumentaci k těmto aplikacím.
Co je to telecine? Pokud moc nerozumíte tomu, co je napsáno v tomto dokumentu, přečtěte si článek na Wikipedii. Je to srozumitelný a rozumně vyčerpávající popis co je to telecine.
Poznámka k číslům. Mnoho dokumentů, včetně výše odkazované příručky, udává hodnotu půlsnímků za sekundu NTSC videa jako 59.94 a odpovídající snímky za sekundu jako 29.97 (pro telecinované a prokládané video) a 23.976 (pro neprokládané). Pro jednoduchost některé dokumenty zaokrouhlují tyto hodnoty na 60, 30 a 24.
Přesně řečeno jsou všechna tato čísla přibližná. Černobílé NTSC video mělo přesně 60 půlsnímků za sekundu, ale později byla zvolena hodnota 60000/1001, aby bylo možné přidat barevná data a zůstat kompatibilní se starými černobílými televizemi. Digitální NTSC (např. na DVD) má rovněž rychlost 60000/1001 půlsnímků za sekundu. Z toho vyplývá, že prokládané a telecinované video má 30000/1001 snímků za sekundu; neprokládané video má 24000/1001 snímků za sekundu.
Starší verze dokumentace MEncoderu a mnoho zpráv v archivu konference hovoří o 59.94, 29.97 a 23.976. Všechna dokumentace MEncoderu byla aktualizována a používá zlomkových hodnot. Vy byste je měli používat také.
-ofps 23.976 je nesprávně. Místo toho byste měli použít -ofps 24000/1001.
Jak je používáno telecine. Veškeré video určené k zobrazení na NTSC televizi musí mít 60000/1001 půlsnímků za sekundu. Filmy vyráběné pro televizi jsou často natáčeny přímo ve 60000/1001 půlsnímcích za sekundu, ale většina filmů do kin je natáčena při 24 nebo 24000/1001 snímcích za sekundu. Když je film přepisován na DVD, je video upraveno pro televizi v procesu zvaném telecine.
Na DVD není video ve skutečnosti nikdy uloženo v 60000/1001 půlsnímcích za sekundu. Video jež bylo původně 60000/1001, bude mít každý pár půlsnímků zkombinován do podoby snímku s rychlostí 30000/1001 snímků za sekundu. Hardwarové DVD přehrávače pak čtou příznak, zabudovaný ve video proudu, který udává jestli první půlsnímek tvoří liché nebo sudé řádky.
Obsah ve 24000/1001 snímcích za sekundu obvykle zůstává tak jak byl v době přepisu na DVD a DVD přehrávač musí provést telecine za letu. Někdy je však video telecinováno před uložením na DVD; dokonce i když mělo původně 24000/1001 snímků za sekundu, bude mít 60000/1001 půlsnímků za sekundu. Pokud je uložen na DVD, páry půlsnímků jsou zkombinovány do formy 30000/1001 snímků za sekundu.
Když se podíváme na jednotlivé snímky vzniklé z videa o 60000/1001 půlsnímcích za sekundu, telecinovaného nebo ne, je zřetelně vidět toto prokládání jakmile je zde nějaký pohyb, jelikož jeden půlsnímek (řekněme liché řádky) reprezentuje časový okamžik o 1/(60000/1001) sekundy pozdější než ten druhý. Přehrávání prokládaného videa na počítači vypadá škaredě jak proto, že monitor má vyšší rozlišení, ale i proto, že video je zobrazováno snímek po snímku místo půlsnímek po půlsnímku.
Poznámky:
Tento odstavec platí pouze pro NTSC DVD, nikoli PAL.
Řádky s příklady spuštění MEncoderu v dokumentu
nejsou určeny pro opravdové použití.
Obsahují pouze nutné minimum vyžadované pro enkódování příslušné ke kategorii
videa. Jak dělat dobré DVD ripy nebo doladit
libavcodec
pro maximální kvalitu
není v záběru tohoto dokumentu.
Poznámky pod čarou příslušné pro tuto příručku jsou linkovány takto: [1]
Progresivní video je původně natočeno při 24000/1001 snímcích za sekundu a uloženo na DVD beze změn.
Když přehrajete progresivní DVD v MPlayeru, MPlayer vypíše následující řádek jakmile začne přehrávat:
demux_mpg: 24000/1001 fps progressive NTSC content detected, switching framerate.
Od tohoto okamžiku by demux_mpg neměl nikdy říct že našel "30000/1001 fps NTSC obsah"
Když sledujete progresivní video, neměli byste nikdy vidět žádný proklad. Dejte si ale pozor, jelikož je občas trošku telecine namixováno tam, kde byste to vůbec nečekali. Setkal jsem se s TV show na DVD, které měly sekundu telecine při každé změně scény nebo na zcela náhodných místech. Jednou jsem se díval na DVD, které bylo do půlky progresivní a od půlky telecinováno. Pokud chcete být opravdu důkladní, můžete oskenovat celý film:
mplayer dvd://1 -nosound -vo null -benchmark
Použití volby -benchmark nechá MPlayer přehrát film tak rychle, jak je to jen možné; stejně to ale, podle výkonu hardware, chvíli potrvá. Vždy, když demux_mpg ohlásí změnu snímkové rychlosti, řádek těsně nad hlášením ukáže čas ve kterém ke změně došlo.
Občas je progresivní video na DVD označeno jako "soft-telecine" protože je zamýšleno, aby telecine provedl DVD přehrávač.
Telecinované video bylo původně natočeno při 24000/1001, ale bylo telecinováno před zápisem na DVD.
MPlayer (nikdy) nehlásí žádnou změnu snímkové rychlosti, když přehrává telecinované video.
Při sledování telecinovaného videa uvidíte prokladové artefakty, které jako by "blikaly": opakovaně mizí a objevují se. Blíže se na to můžete podívat:
mplayer dvd://1
Převiňte na část s pohybem.
Použijte klávesu . pro krokování po jednom snímku.
Sledujte vzor prokládaně vypadajících a progresivně vypadajících snímků. Pokud je vzor, který sledujete PPPII,PPPII,PPPII,..., pak je video telecinováno. Pokud vidíte jiný vzor, pak mohlo být video telecinováno použitím nějaké nestandardní metody; MEncoder neumí bezztrátově převést nestandardní telecine do progresivního. Pokud nevidíte žádný vzor, pak je video nejspíš prokládané.
Někdy je telecinované video na DVD označeno jako "hard-telecine". Jelikož hard-telecine již je ve 60000/1001 půlsnímcích za sekundu, DVD přehrávač přehraje video bez jakýchkoli manipulací.
Dalším způsobem jak zjistíte, že je váš zdroj telecinován, je přehrát
jej s volbami -vf pullup a -v a
uvidíte, jak pullup nachází vzor.
Pokud je zdroj telecinován, mělibyste vidět na konzoli vzor 3:2 s opakujícím
se 0+.1.+2
a 0++1
.
Tato technika má tu výhodu, že nemusíte sledovat zdroj, abyste jej
identifikovali, což se může hodit, pokud chcete automatizovat enkódovací
proceduru, nebo ji provést vzdáleně přes pomalou linku.
Prokládané video bylo od samého začátku filmováno při 60000/1001 půlsnímcích za sekundu a uloženo na DVD ve 30000/1001 snímcích za sekundu. Efekt prokládání (často označovaný jako "roztřepení") je výsledkem skládání půlsnímků do snímků. Vzdálenost mezi půlsnímky má být 1/(60000/1001) sekundy a proto když jsou zobrazeny současně, je rozdíl jasně patrný.
Stejně jako u telecinovaného videa by MPlayer neměl hlásit jakékoli změny snímkové rychlosti při přehrávání prokládaného obsahu.
Když si prohlédnete video blíže pomocí krokování snímků pomocí klávesy ., uvidíte, že každý jednotlivý snímek je prokládaný.
Veškerý obsah "smíšeného progresivního a telecinovaného" videa měl původně 24000/1001 snímků za sekundu, ale některé části prošly telecine.
Když MPlayer přehrává tuto kategorii, bude (častoi opakovaně) přepínat mezi "30000/1001 snímky/s NTSC" a "24000/1001 snímky/s progresivním NTSC". Sledujte spodek MPlayerova výstupu, abyste zachytili tyto zprávy.
Měli byste prověřit části se "30000/1001 snímky/s NTSC", abyste měli jistotu, že jsou skutečně telecinovány a ne jen prokládané.
Jak jsem se zmínil na začátku, příklady příkazových řádků MEncoderu níže nejsou určeny pro praktické použití; pouze demonstrují, minimum voleb nutných k tomu, abyste správně enkódovali každou kategorii.
Progresivní video nevyžaduje žádné speciální filtrování pro enkódování. Jediná volba, která by určitě neměla chybět je -ofps 24000/1001. Jinak se MEncoder pokusí enkódovat při 30000/1001 snímcích/s a bude opakovat snímky.
mencoder dvd://1 -oac copy -ovc lavc -ofps 24000/1001
Často se stává, že video, které vypadá progresivně, má v sobě zamíchány kratičké telecinované části. Pokud si nejste jisti, je nejbezpečnější považovat video za smíšené progresivní a telecinované. Ztráta výkonu je jen malá [3].
Telecine lze obrátit a dostat tak původní 24000/1001 obsah, za použití metody zvané inverzní telecine. MPlayer má několik filtrů právě pro tuto činnost; nejlepší z těchto filtrů, pullup, je popsán v části smíšené progresivní a telecinované.
V praxi není většinou možné dostat kompletní progresivní video z prokládaného obsahu. Jediný způsob jak to udělat bez ztráty poloviny svislého rozlišení je zdvojením snímkové rychlosti a zkusit "odhadnout" co mám provést s odpovídajícími linkami každého z půlsnímků (má to ovšem i nevýhody – viz metoda 3).
Enkódujte video v prokládané formě. Obvykle prokládání způsobí těžkou újmu
schopnosti enkodéru dobře komprimovat, ale
libavcodec
má dvě volby určené právě
pro lepší ukládání prokládaného videa: ildct a
ilme. Rovněž velmi doporučujeme použití volby
mbd=2 [2]
protože bude enkódovat makrobloky jako neprokládané tam, kde není žádný pohyb.
Volba -ofps zde není nutná.
mencoder dvd://1 -oac copy -ovc lavc -lavcopts ildct:ilme:mbd=2
Použijte filtr odstraňující proklad před enkódováním. Je jich zde několik, můžete si vybrat. Každý z nich má svá pro i proti. Prohlédněte si výstup mplayer -pphelp a mplayer -vf help abyste zjistili, které jsou k dispozici (grep pro "deint"), přečtěte si Deinterlacing filters comparison od Michaela Niedermayera a vyhledejte e-mailové konference MPlayeru, kde naleznete mnoho diskusí o různých filtrech. Snímková rychlost se ani zde nemění, takže žádné -ofps. Odstranění proklady by rovněž mělo být provedeno po ořezání [1], ale před škálováním.
mencoder dvd://1 -oac copy -vf yadif -ovc lavc
Naneštěstí je tato volba vadná v MEncoderu; měla by dobře pracovat v MEncoder G2, ale ten tu zatím není. Stejně je určením -vf tfields vytvoření kompletního snímku z každého půlsnímku, což zvýší snímkovou rychlost na 60000/1001. Výhoda tohoto přístupu je v tom, že nepřijdete o žádná data; Protože však každý snímek pochází jen z jediného půlsnímku, musí být chybějící linky nějak dopočítány. Neexistuje mnoho dobrých metod, generujících chybějící data, takže výsledek bude trochu podobný tomu, když se použije některý filtr odstraňující proklad. Generováním chybějících linek vznikají další problémy tím, že se zdvojnásobí množství dat. Takže jsou potřeba vyšší datové toky pro enkódování, aby byla zachována kvalita a spotřebuje se více výkonu CPU jak pro enkódování, tak pro dekódování. tfields má několik různých voleb pro volbu způsobu generování chybějících linek. Pokud použijete tuto možnost, prostudujte si manuál a zvolte si volbu, která s vaším materiálem vypadá nejlépe. Poznamenejme, že při použití tfields musíte nastavit -fps a -ofps na dvojnásobek snímkové rychlosti originálu.
mencoder dvd://1 -oac copy -vf tfields=2 -ovc lavc \ -fps 60000/1001 -ofps 60000/1001
Pokud plánujete výrazné zmenšování, můžete extrahovat a enkódovat jen jeden z půlsnímků. Samozřejmě přijdete o polovinu svislého rozlišení, ale pokud plánujete zmenšení ideálně na 1/2 originální velikosti, nebude na této ztrátě vůbec záležet. Výsledek bude progresivní soubor s 30000/1001 snímky za sekundu. Celý postup spočívá v použití -vf field a následném ořezu [1] a příslušném škálování. Pamatujte, že musíte nastavit scale tak, aby kompenzoval zmenšení svislého rozměru na polovinu.
mencoder dvd://1 -oac copy -vf field=0 -ovc lavc
Abychom převedli smíšené progresivní a telecinované video zcela na progresivní video, musí být telecinované části inverzně telecinovány. K tomu lze dospět třemi postupy popsanými níže. Poznamenejme, že byste měli vždy provést inverzní telecine před jakýmkoliv škálováním; a v případě, že přesně nevíte co děláte, také před ořezáním [1]. Volba -ofps 24000/1001 je vyžadována, protože výstupní video bude mít 24000/1001 snímků za sekundu.
-vf pullup je navržen tak, aby inverzně telecinoval, ale progresivní data nechával jak jsou. Pro správnou funkci musí být pullup následován filtrem softskip, jinak MEncoder zhavaruje. pullup je však nejčistší a nejpřesnější dostupnou metodou pro enkódování jak telecinovaného, tak "smíšeného progresivního a telecinovaného".
mencoder dvd://1 -oac copy -vf pullup,softskip -ovc lavc -ofps 24000/1001
Starší metodou je, spíše než inverzně telecinovat telecinované části, telecinovat progresivní části a poté inverzně telecinovat celé video. Zní to zmateně? softpulldown je filtr, který projde celé video a převede celý soubor na telecinovaný. Pokud budeme následovat softpulldown buď detc nebo ivtc, bude konečný výsledek zcela progresivní. Nutná je volba -ofps 24000/1001.
mencoder dvd://1 -oac copy -vf softpulldown,ivtc=1 -ovc lavc -ofps 24000/1001
Osobně jsem nepoužil -vf filmdint, ale toto o něm (přibližně) řekl D Richard Felker III:
Je to OK, ale IMO to zkouší až příliš často odstraňovat proklad místo provádění inverzního telecine (stejně jako settop DVD přehrávače & progresivní televize) což vede ke škaredému třepotání a dalším artefaktům. Pokud jej chcete používat, měli byste předtím alespoň trochu času věnovat ladění voleb a sledováním výstupu, abyste měli jistotu, že vám to něco nekazí.
Máme dvě volby pro práci s touto kategorií, obě jsou však kompromisem. Měli byste se rozhodnout podle trvání/umístění každého typu.
Považujte to za progresivní. Prokládané části budou vypadat prokládaně a některé z prokládaných políček bude muset být zahozeno, což povede k nestejnoměrnému poskakování. Můžete proti tomu nasadit postprocesní filtr, pokud chcete, ale tím mírně degradujete progresivní části.
Této volbě byste se měli rozhodně vyhnout, pokud chcete nakonec zobrazovat video na zobrazovači s prokládaným obrazem (přes TV kartu například). Pokud máte prokládané snímky ve videu s rychlostí 24000/1001 snímků za sekundu, budou telecinovány spolu s progresivními snímky. Polovina prokládaných "snímků" bude zobrazena po dobu trvání třech snímků (3/(60000/1001) sekund), což povede k poskakování. Efekt "cukání zpět" vypadá skutečně zle. Pokud se o to přece pokusíte, musíte použít filtr odstraňující proklad, jako je lb nebo l5.
Špatnou volbou je to i pro progresivní zobrazovač. Ten zahodí páry po sobě jdoucích snímků, což povede k přerušování, které může být více viditelné, než při druhé metodě, která zobrazuje některé progresivní snímky dvakrát. Prokládané video se 30000/1001 snímky za sekundu je totiž poněkud trhané, protože by ve skutečnosti mělo být promítáno při 60000/1001 půlsnímcích za sekundu, takže zdvojení některých snímků není tak moc vidět.
V každém případě je nejlepší posoudit obsah a způsob, jakým bude zobrazován. Pokud je vaše video z 90% progresivní a nikdy jej nebudete pouštět na televizi, měli byste volit progresivní přístup. Pokud je progresívní jen z poloviny, pravděpodobně jej bude lepší enkódovat jako by bylo celé prokládané.
Pokládat jej za prokládané. Některé snímky v progresivních částech budou muset být duplikovány, což povede k nepravidelnému poskakování. Opět platí, že filtry pro odstranění prokladu mohou poněkud degradovat progresivní části.
K ořezu: Video data na DVD jsou ukládána ve formátu zvaném YUV 4:2:0. V YUV videu jsou, jasová ("černobílá"; angl. luma) a barvonosná (angl. chroma) složka ukládány odděleně. Protože je lidské oko méně citlivé na změnu barvy, než na jas, připadá v YUV 4:2:0 obrázku pouze jeden barvonosný pixel na každé čtyři jasové pixely. V progresivním obrázku má každý čtverec 2x2 jasových pixelů právě jeden barvonosný pixel. Proto musíte ořezávat progresivní YUV 4:2:0 na sudé rozměry a používat sudé odsazení (offsety). Například crop=716:380:2:26 je OK, ale crop=716:380:3:26 není.
Když máte co do činění s prokládaným YUV 4:2:0, je situace mnohem komplikovanější. Místo každých čtyřech pixelů ve snímku sdílejících barvonosný pixel, každé čtyři jasové pixely v každém půlsnímku sdílejí barvonosný pixel. Když jsou půlsnímky proloženy do snímku, každá linka má výšku jeden pixel. A nyní místo aby dané čtyři pixely tvořily čtverec, jsou první dva vedle sebe a druhé dva jsou vedle sebe o dvě linky níž. Dva pixely těsně pod nimi patří do jiného půlsnímku a proto sdílí jiný barvonosný pixel se dvěma jasovými pixely o dva řádky níž. Všechno tohle nás nutí mít svislé rozměry ořezání a odsazení bezezbytku dělitelné čtyřmi. Vodorovné stačí když budou sudé.
Pro telecinované video doporučuji, abyste ořezání prováděli až po inverzi telecine. Jakmile je video progresivní, stačí řezat jen na sudé rozměry. Pokud si však přece jen chcete dopřát mírné zrychlení, které může poskytnout časný ořez, musíte svisle dodržet násobky čtyřech, jinak nebude mít filtr pro inverzi telecine správná data.
Prokládané (nikoli telecinované) video musíte vždy ořezávat svisle násobky čtyř, pokud před ořezáním nepoužijete -vf field.
K volbám pro enkódování a kvalitě:
Jen proto, že doporučuji mbd=2 zde neznamená, že by tato
volba nemohla být použita jinde. V kombinaci s trell, je
mbd=2 jednou ze dvou voleb
libavcodec
u, které nejvíce zvyšují
kvalitu a vy byste měli vždy použít alespoň tyto dvě, pokud není na škodu
zpomalení rychlosti enkódování (např. při enkódování v reálném čase).
Mnoho dalších voleb libavcodec
u
zvyšuje kvalitu enkódování (a snižuje jeho rychlost), ale to je mimo zaměření
tohoto textu.
K výkonu filtru pullup: Použití pullup je bezpečné (spolu se softskip ) na progresivní video a je to obvykle dobrá volba, pokud nebyl zdroj prověřen, že je celý progresivní. Ve většině případů je ztráta výkonu malá. V ojedinělých případech enkódování způsobí pullup, že je MEncoder o 50% pomalejší. Přidání zpracování zvuku a pokročilých lavcopts zastíní tento rozdíl tak, že rozdíl v rychlosti působený použitím pullup se sníží na 2%.
libavcodec
zajišťuje jednoduché enkódování do mnoha zajímavých video a audio formátů.
Můžete enkódovat do následujících kodeků (více méně aktuální):
Jméno video kodeku | Popis |
---|---|
mjpeg | Motion JPEG |
ljpeg | lossless (bezztrátový) JPEG |
jpegls | JPEG LS |
targa | Targa obrázek |
gif | GIF obrázek |
bmp | BMP obrázek |
png | PNG obrázek |
h261 | H.261 |
h263 | H.263 |
h263p | H.263+ |
mpeg4 | standardní ISO MPEG-4 (DivX, Xvid kompatibilní) |
msmpeg4 | prvotní MPEG-4 varianta od MS, v3 (DivX3) |
msmpeg4v2 | prvotní MPEG-4 od MS, v2 (použitý ve starých ASF souborech) |
wmv1 | Windows Media Video, verze 1 (WMV7) |
wmv2 | Windows Media Video, verze 2 (WMV8) |
rv10 | RealVideo 1.0 |
rv20 | RealVideo 2.0 |
mpeg1video | MPEG-1 video |
mpeg2video | MPEG-2 video |
huffyuv | bezztrátová komprese |
ffvhuff | FFmpeg modifikovaná huffyuv bezztrátová komprese |
asv1 | ASUS Video v1 |
asv2 | ASUS Video v2 |
ffv1 | bezztrátový video kodek z FFmpeg |
svq1 | Sorenson video 1 |
flv | Sorenson H.263 používaný ve Flash Video |
flashsv | Flash Screen Video |
dvvideo | Sony Digital Video |
snow | Experimentální vlnkově orientovaný kodek z FFmpeg |
zbmv | Zip Blocks Motion Video |
První pole obsahuje názvy kodeků, které můžete přiřadit konfiguračnímu parametru
vcodec
,
např: -lavcopts vcodec=msmpeg4
Příklad s MJPEG kompresí:
mencoder dvd://2 -o titul2.avi
-ovc lavc -lavcopts vcodec=mjpeg -oac copy
Jméno audio kodeku | Popis |
---|---|
ac3 | Dolby Digital (AC-3) |
adpcm_* | Adaptivní PCM formáty – viz pomocnou tabulku |
flac | Free Lossless Audio Codec (FLAC) |
g726 | G.726 ADPCM |
libamr_nb | 3GPP Adaptive Multi-Rate (AMR) narrow-band |
libamr_wb | 3GPP Adaptive Multi-Rate (AMR) wide-band |
libfaac | Advanced Audio Coding (AAC) – používá FAAC |
libgsm | ETSI GSM 06.10 plný rozsah |
libgsm_ms | Microsoft GSM |
libmp3lame | MPEG-1 audio layer 3 (MP3) – používá LAME |
mp2 | MPEG-1 audio layer 2 (MP2) |
pcm_* | PCM formáty – viz pomocnou tabulku |
adpcm_ima_wav | IMA adaptivní PCM (4 bity na vzorek, komprese 4:1) |
sonic | experimentální FFmpeg ztrátový kodek |
roq_dpcm | Id Software RoQ DPCM |
sonicls | experimentální FFmpeg bezztrátový kodek |
vorbis | Vorbis |
wmav1 | Windows Media Audio v1 |
wmav2 | Windows Media Audio v2 |
Vprvním sloupci naleznate jména kodeků, které byste měli přiřadit parametru
acodec
, například: -lavcopts acodec=ac3
Příklad s kompresí AC–3:
mencoder dvd://2 -o titul2.avi
-oac lavc -lavcopts acodec=ac3 -ovc copy
Narozdíl od jejích videokodeků, audio kodeky z knihovny
libavcodec
neprovádějí inteligentní rozdělení přidělených bitů,
jelikož jim chybí byť jen minimální psychoakustický model (pokud vůbec),
který obsahuje většina implementací ostatních kodeků.
Vězte však, že všechny tyto kodeky zvuku jsou velmi rychlé a pracují
bez potíží všude, kde máte MEncoder se
zakompilovanou knihovnou libavcodec
(což je naprostá většina případů) a nezávisejí na externích knihovnách.
Název PCM/ADPCM kodeku | Popis |
---|---|
pcm_s32le | signed 32-bit little-endian |
pcm_s32be | signed 32-bit big-endian |
pcm_u32le | unsigned 32-bit little-endian |
pcm_u32be | unsigned 32-bit big-endian |
pcm_s24le | signed 24-bit little-endian |
pcm_s24be | signed 24-bit big-endian |
pcm_u24le | unsigned 24-bit little-endian |
pcm_u24be | unsigned 24-bit big-endian |
pcm_s16le | signed 16-bit little-endian |
pcm_s16be | signed 16-bit big-endian |
pcm_u16le | unsigned 16-bit little-endian |
pcm_u16be | unsigned 16-bit big-endian |
pcm_s8 | signed 8-bit |
pcm_u8 | unsigned 8-bit |
pcm_alaw | G.711 A-LAW |
pcm_mulaw | G.711 μ-LAW |
pcm_s24daud | signed 24-bit D-Cinema Audio format |
pcm_zork | Activision Zork Nemesis |
adpcm_ima_qt | Apple QuickTime |
adpcm_ima_wav | Microsoft/IBM WAVE |
adpcm_ima_dk3 | Duck DK3 |
adpcm_ima_dk4 | Duck DK4 |
adpcm_ima_ws | Westwood Studios |
adpcm_ima_smjpeg | SDL Motion JPEG |
adpcm_ms | Microsoft |
adpcm_4xm | 4X Technologies |
adpcm_xa | Phillips Yellow Book CD-ROM eXtended Architecture |
adpcm_ea | Electronic Arts |
adpcm_ct | Creative 16->4-bit |
adpcm_swf | Adobe Shockwave Flash |
adpcm_yamaha | Yamaha |
adpcm_sbpro_4 | Creative VOC SoundBlaster Pro 8->4-bit |
adpcm_sbpro_3 | Creative VOC SoundBlaster Pro 8->2.6-bit |
adpcm_sbpro_2 | Creative VOC SoundBlaster Pro 8->2-bit |
adpcm_thp | Nintendo GameCube FMV THP |
adpcm_adx | Sega/CRI ADX |
V ideálním případě byste asi chtěli jen říct enkodéru, aby se přepnul do režimu "vysoká kvalita" a šel na to. To by bylo jistě hezké, ale naneštěstí je to těžké zavést, jelikož různé volby enkódování vedou k různé kvalitě v závislosti na zdrojovém materiálu. To proto, že komprese závisí na vizuálních vlastnostech daného videa. Například anime a živá akce mají zcela rozdílné vlastnosti a tedy vyžadují odlišné volby pro dosažení optimálního enkódování. Dobrá zpráva je, že některé volby by nikdy neměly chybět, jako mbd=2, trell a v4mv. Podrobný popis obvyklých enkódovacích voleb naleznete níže.
Volby k nastavení:
vmax_b_frames: 1 nebo 2 je v pořádku,
v závislosti na filmu.
Poznamenejme, že pokud chcete mít svá videa dekódovatelná kodekem DivX5,
budete muset zapnout podporu uzavřeného GOP, pomocí volby
libavcodec
u cgop,
ale budete také muset vypnout detekci scény, což není dobrý nápad, jelikož
tak trochu zhoršíte efektivitu enkódování.
vb_strategy=1: pomáhá ve scénách s rychlým pohybem. Vyžaduje vmax_b_frames >= 2. V některých videích může vmax_b_frames snížit kvalitu, ale vmax_b_frames=2 spolu s vb_strategy=1 pomůže.
dia: okruh vyhledávání pohybu. Čím větší, tím lepší a pomalejší. Záporné hodnoty mají úplně jiný význam. Dobrými hodnotami jsou -1 pro rychlé enkódování, nebo 2-4 pro pomalejší.
predia: předprůchod pro vyhledávání pohybu. Není tak důležitý jako dia. Dobré hodnoty jsou 1 (výchozí) až 4. Vyžaduje preme=2, aby byla opravdu k něčemu.
cmp, subcmp, precmp: Porovnávací funkce pro odhad pohybu. Experimentujte s hodnotami 0 (výchozí), 2 (hadamard), 3 (dct) a 6 (omezení datového toku). 0 je nejrychlejší a dostatečná pro precmp. Pro cmp a subcmp je 2 dobrá pro anime a 3 zase pro živou akci. 6 může, ale nemusí být o něco lepší, ale je pomalá.
last_pred: Počet prediktorů pohybu přebíraných z předchozího snímku. 1-3 nebo tak pomůžou za cenu menšího zdržení. Vyšší hodnoty jsou však pomalé a nepřináší žádný další užitek.
cbp, mv0: Ovládá výběr makrobloků. Malá ztráta rychlosti za malý zisk kvality.
qprd: adaptivní kvantizace založená na komplexnosti makrobloku. Může pomoci i uškodit v závislosti na videu a ostatních volbách. Toto může způsobovat artefakty, pokud nenastavíte vqmax na nějakou rozumně malou hodnotu (6 je dobrá, možná byste ale měli jít až na 4); vqmin=1 může také pomoci.
qns: velmi pomalá, zvlášť v kombinaci s qprd. Tato volba nutí enkodér minimalizovat šum díky kompresi artefaktů, místo aby se snažil striktně zachovávat věrnost videa. Nepoužívejte ji, pokud jste již nezkusili všechno ostatní kam až to šlo a výsledek přesto není dost dobrý.
vqcomp: Vylepšení ovládání datového toku. Dobré hodnoty se liší podle videa. Můžete to bezpečně ponechat jak to je, pokud chcete. Snížením vqcomp pustíte více bitů do scén s nízkou komplexností, zvýšením je pošlete do scén s vysokou komplexností (výchozí: 0.5, rozsah: 0-1. doporučený rozsah: 0.5-0.7).
vlelim, vcelim: Nastaví jediný koeficient prahu eliminace pro jasové a barevné roviny. Ty jsou enkódovány odděleně ve všech MPEGu podobných algoritmech. Myšlenka stojící za těmito volbami je použití dobré heuristiky pro určení, zda je změna v bloku menší než vámi nastavený práh a v tom případě se blok enkóduje jako "nezměněný". To šetří bity a možná i zrychlí enkódování. vlelim=-4 a vcelim=9 se zdají být dobré pro hrané filmy, ale příliš nepomohou s anime; pokud enkódujete animované vido, měli byste je asi nechat beze změn.
qpel: Odhad pohybu s přesností na čtvrt pixelu. MPEG-4 používá přesnost na půl pixelu jako výchozí při vyhledávání pohybu, proto je tato volba spojena s určitou režií, jelikož se do výstupního souboru ukládá více informací. Kompresní zisk/ztráta závisí na filmu, ale obvykle to není příliš efektivní na anime. qpel vždy způsobí zvýšení výpočetní náročnosti dekódování (v praxi +25% času CPU).
psnr: neovlivní aktuální enkódování, ale zaznamená typ/velikost/kvalitu každého snímku do log souboru a na konci vypíše souhrnný PSNR (odstup signálu od šumu).
Volby se kterými nedoporučujeme si hrát:
vme: Výchozí je nejlepší.
lumi_mask, dark_mask: Psychovizuálně adaptivní kvantizace. Nehrajte si s těmito volbami, pokud vám jde o kvalitu. Rozumné hodnoty mohou být efektivní ve vašem případě, ale pozor, je to velmi subjektivní.
scplx_mask: Snaží se předcházet blokovým artefaktům, ale postprocesing je lepší.
Následující nastavení jsou příklady nastavení různých kombinací voleb enkodéru, které ovlivňují poměr rychlost versus kvalita při shodném cílovém datovém toku.
Veškerá nastavení byla testována na video vzorku 720x448 @30000/1001 snímků za sekundu, cílový datový tok byl 900kbps a prováděly se na AMD-64 3400+ při 2400 MHz v režimu 64 bitů. Každá kombinace nastavení má uvedenu změřenou rychlost enkódování (ve snímcích za sekundu) a ztrátu PSNR (v dB) oproti nastavení "velmi vysoká kvalita". Rozumějte však že, v závislosti na vašem zdrojovém materiálu, typu počítače a pokrokům ve vývoji, můžete dospět k velmi odlišným výsledkům.
Popis | Volby | Rychlost [fps] | Relativní ztráta PSNR [dB] |
---|---|---|---|
Velmi vysoká kvalita | vcodec=mpeg4:mbd=2:mv0:trell:v4mv:cbp:last_pred=3:predia=2:dia=2:vmax_b_frames=2:vb_strategy=1:precmp=2:cmp=2:subcmp=2:preme=2:qns=2 | 6 | 0 |
Vysoká kvalita | vcodec=mpeg4:mbd=2:trell:v4mv:last_pred=2:dia=-1:vmax_b_frames=2:vb_strategy=1:cmp=3:subcmp=3:precmp=0:vqcomp=0.6:turbo | 15 | -0.5 |
Rychlé enkódování | vcodec=mpeg4:mbd=2:trell:v4mv:turbo | 42 | -0.74 |
Enkódování v reálném čase | vcodec=mpeg4:mbd=2:turbo | 54 | -1.21 |
Díky této vlastnosti
libavcodec
u
můžete nastavit uživatelskou inter (I-snímky/klíčové snímky) a intra
(P-snímky/predikované (rozumějte vypočítané) snímky) matice. To je podporováno
mnoha kodeky:
mpeg1video
a mpeg2video
jsou hlášeny jako funkční.
Typické použití této vlastnosti je nastavení matic preferovaných KVCD specifikacemi.
Kvantizační Matice 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
Použití:
$ mencodervstup.avi
-ovýstup.avi
-oac copy -ovc lavc \ -lavcopts inter_matrix=...:intra_matrix=...
mencoder vstup.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
Takže jste si koupili zbrusu novou kopii filmu Harry Potter a Tajemná komnata (širokoúhlou verzi samozřejmě) a chcete si toto DVD ripnout, takže si jej můžete přidat do svého Domácího PC kina. Je to region 1 DVD, takže je v NTSC. Níže uvedený příklad je stále vhodný i pro PAL, jen musíte vynechat -ofps 24000/1001 (protože výstupní snímková rychlost je shodná se vstupní) a přirozeně budou rozdílné souřadnice pro ořez.
Po spuštění mplayer dvd://1, postupujeme podle informací obsažených v sekci Jak naložit s telecine a prokladem v NTSC DVD a zjistíme že je to 24000/1001 neprokládané video, takže nepotřebujeme použít inverzní telecine filtr, jako je pullup nebo filmdint.
Dále musíme zjistit vhodný ořezový obdélník, takže použijeme filtr cropdetect:
mplayer dvd://1 -vf cropdetect
Ujistěte se, že jste přešli přes zaplněný snímek (nějakou jasnou scénu mimo úvodní a koncové titulky) a v konzoli MPlayeru uvidíte:
crop area: X: 0..719 Y: 57..419 (-vf crop=720:362:0:58)
Potom přehrajeme film s tímto filtrem, abychom otestovali jeho správnost:
mplayer dvd://1 -vf crop=720:362:0:58
A zjistíme, že to vypadá zcela v pořádku. Dále se ujistíme, že šířka i výška jsou násobky 16. Šířka je v pořádku, výška ovšem ne. Protože jsme nepropadli v sedmé třídě z matematiky, víme, že nejbližším násobkem 16 nižším než 362 je 352.
Mohli bychom použít crop=720:352:0:58, ale bude lepší ustřihnout kousek nahoře i dole, takže zachováme střed. Zkrátili jsme výšku o 10 pixelů, ale nechceme zvýšit odsazení v ose y o 5 pixelů, protože je to liché číslo, což by nepříznivě ovlivnilo kvalitu. Místo toho zvýšíme odsazení v ose y o 4 pixely:
mplayer dvd://1 -vf crop=720:352:0:62
Další důvod pro odstřižení pixelů shora i zdola je to, že si můžeme být jisti odstřižením napůl černých pixelů pokud existují. Pokud je však vaše video telecinováno, ujistěte se, že máte v řetězu filtrů pullup filtr (nebo jiný filtr pro inverzi telecine, který hodláte použít) ještě před odstraněním prokladu a ořezem. (Pokud se rozhodnete zachovat vaše video prokládané, pak se ujistěte, že vaše vertikální odsazení (offset) je násobkem 4.)
Pokud si děláte starosti se ztrátou těch 10 pixelů, možná raději snížíte rozměry na nejbližší násobek 16. Řetězec filtrů by pak vypadal asi takto:
-vf crop=720:362:0:58,scale=720:352
Takto malé zmenšení videa bude znamenat ztrátu malého množství detailů, což bude pravděpodobně stěží postřehnutelné. Zvětšování by naopak vedlo ke snížení kvality (pokud byste nezvýšili datový tok). Ořez odstraní tyto pixely úplně. To je jedna z věcí, kterou byste si měli uvážit pro každý případ zvlášť. Například pokud bylo DVD video vyrobeno pro televizi, měli byste se vyvarovat vertikálnímu škálování, jelikož počet řádků odpovídá originální nahrávce.
Při prohlídce jsme zjistili, že video je poměrně akční, s vysokým počtem detailů, takže jsme zvolili datový tok 2400 Kbitů.
Nyní jsme připraveni provést dvouprůchodové enkódování. Průchod jedna:
+mencoder dvd://1 -ofps 24000/1001 -oac copy -o Harry_Potter_2.avi
-ovc lavc \
-lavcopts vcodec=mpeg4:vbitrate=2400:v4mv:mbd=2:trell:cmp=3:subcmp=3:autoaspect:vpass=1 \
-vf pullup,softskip,crop=720:352:0:62,hqdn3d=2:1:2
A průchod dva je stejný, jen nastavíme vpass=2:
mencoder dvd://1 -ofps 24000/1001 -oac copy -o Harry_Potter_2.avi
-ovc lavc \
-lavcopts vcodec=mpeg4:vbitrate=2400:v4mv:mbd=2:trell:cmp=3:subcmp=3:autoaspect:vpass=2 \
-vf pullup,softskip,crop=720:352:0:62,hqdn3d=2:1:2
Volby v4mv:mbd=2:trell velmi zvýší kvalitu za cenu časové
náročnosti enkódování. Vcelku není důvod tyto volby vypustit, pokud je
primárním cílem kvalita. Volby cmp=3:subcmp=3
vyberou porovnávací funkci, která poskytuje lepší kvalitu, než výchozí.
S tímto parametrem můžete zkusit experimentovat (nahlédněte do man stránky pro
seznam možných hodnot), jelikož různé funkce mohou mít velký vliv na kvalitu
v závislosti na zdrojovém materiálu. Například pokud zjistíte, že
libavcodec
produkuje příliš mnoho
čtverečkových artefaktů, můžete zkusit zvolit experimentální NSSE jako
porovnávací funkci přes *cmp=10.
V případě tohoto filmu bude výsledné AVI dlouhé 138 minut a veliké kolem 3GB. A protože jste řekli, že na velikosti nezáleží, je to přijatelná velikost. Ale pokud byste jej chtěli menší, můžete zkusit nižší datový tok. Efekt zvyšování datového toku se totiž neustále snižuje, takže zatímco je zlepšení po zvýšení z 1800 Kbitů na 2000 Kbitů zjevné, nemusí být již tak velké nad 2000 Kbitů. Beze všeho s tím experimentujte, dokud nebudete spokojeni.
Jelikož jsme protáhli video odšumovacím filtrem, měli bychom jej trochu přidat během přehrávání. To, spolu s spp post-procesním filtrem, znatelně zvýší vnímanou kvalitu a pomůže odstranit čtverečkové artefakty ve videu. S MPlayerovou volbou autoq může být množství postprocesingu prováděného filtrem spp přizpůsobováno vytížení CPU. V tuto chvíli rovněž můžete provést korekci gama a/nebo barevnou korekci k dosažení nejlepších výsledků. Například:
mplayer Harry_Potter_2.avi
-vf spp,noise=9ah:5ah,eq2=1.2 -autoq 3
Xvid
je svobodná knihovna pro
enkódování MPEG-4 ASP video datových proudů.
Před začátkem enkódování budete muset
nastavit MEncoder pro její podporu.
Tato příručka se zaměřuje na poskytování stejného druhu informací jako příručka enkódování s x264. Takže prosím začněte přečtením první části této příručky.
Začněte prosím pročtením sekce
Xvid
v manuálové stránce
MPlayeru.
Tato část má být doplněním man stránky.
Výchozí nastavení Xvid jsou dobrým kompromisem mezi rychlostí a kvalitou, takže je můžete bez obav použít, pokud vám nebude něco v dalším textu jasné.
vhq Tato volba ovlivní rozhodovací algoritmus makrobloku, kde vyšší nastavení znamená lepší rozhodování. Výchozí nastavení mohou být bezpečně použita pro každé enkódování, zatímco vyšší nastavení vždy pomohou PSNR, ale je znatelně pomalejší. Poznamenejme, že lepší PSNR nemusí nutně znamenat, že bude obraz vypadat lépe, ale udává, že je blíže originálu. Vypnutí této volby viditelně zrychlí enkódování; pokud je pro vás rychlost kritická, pak to stojí za to.
bvhq Tato volba provádí to samé co vhq, ale v B-snímcích. Má zanedbatelný vliv na rychlost a trochu vylepšuje kvalitu (kolem +0.1dB PSNR).
max_bframes Větší počet povolených po sobě jdoucích B-snímků obvykle zvyšuje komprimovatelnost, ačkoli to může vést k většímu počtu blokových artefaktů. Výchozí nastavení je dobrým kompromisem mezi komprimovatelností a kvalitou, ale můžete ji zvýšit nad 3, pokud toužíte po nízkém datovém toku. Můžete ji rovněž snížit na 1 nebo 0, pokud vám jde o perfektní kvalitu, ale v tom případě byste se měli ujistit, že máte nastaven dostatečně vysoký datový tok, aby byla jistota, že komrimátor nebude zvyšovat kvantizer, aby jej dosáhl.
bf_threshold Tato volba ovládá B-snímkovou citlivost enkodéru, kdy vyšší hodnota vede k častějšímu použití B-snímků (a naopak). Má být použita spolu s max_bframes; pokud jste blázen do datového toku, měli byste zvýšit jak max_bframes, tak bf_threshold, nebo naopak můžete zvýšit max_bframes a snížit bf_threshold, takže bude enkodér používat více B-snímků pouze na místech, které je opravdu potřebují. Nízká hodnota max_bframes a vysoká bf_threshold asi není nejrozumnější volbou, jelikož přinutí enkodér umísťovat B-snímky na místa, které z nich nebudou těžit, ale sníží se jejich vizuální kvalita. Pokud však potřebujete být kompatibilní s domácími přehrávači, které podporují pouze staré DivX profily (ty podporují pouze 1 po sobě jdoucí B-snímek), je to vaše jediná cesta ke zvýšení komprimovatelnosti pomocí B-snímků.
trellis Optimalizuje proces kvantizace pro dosažení nejlepšího kompromisu mezi PSNR a datovým tokem, což umožňuje znatelnou úsporu bitů. Ušetřené bity budou využity v jiných částech videa, což zvýší celkovou vizuální kvalitu. Měli byste ji vždy mít zapnutou, jelikož její kvalitativní přínos je značný. Dokonce i když potřebujete vyšší rychlost, nevypínejte ji, dokud jste nevypli vhq a nezredukovali ostatní volby náročné na CPU na minimum.
hq_ac Aktivuje metodu odhadu s menšími náklady na koeficienty, což trochu zmenší výstupní soubor (okolo 0,15 až 0,19%, což odpovídá zvýšení PSNR o méně než 0.01dB) při zanedbatelném vlivu na rychlost. Je proto doporučeno ponechat ji vždy zapnutou.
cartoon Volba navržená pro lepší enkódování kresleného obsahu. Nemá vliv na rychlost, pouze doladí heuristiku pro výběr režimu pro tento druh obsahu.
me_quality Tato volba ovládá přesnost vyhledávání pohybu. Čím vyšší me_quality, tím bude přesnější odhad původního pohybu a výsledný snímek přesněji zachytí originální pohyb.
Výchozí nastavení je nejlepší ve všech případech; takže ji nedoporučujeme vypínat, pokud nepotřebujete za každou cenu zvýšit rychlost, jelikož všechny bity ušetřené dobrým odhadem pohybu mohou být použity jinde a zvýšit tak celkovou kvalitu. Každopádně nechoďte níž než na 5, a když, tak jen jako poslední možnost.
chroma_me Zlepšuje odhad pohybu tím, že bere v potaz i chroma (barevnou) informaci, zatímco samotné me_quality používá pouze černobílou (luma). To spomalí enkódování o 5-10%, ale docela vylepší vizuální kvalitu omezením blokových artefaktů a zmenší velikost souboru asi o 1.3%. Pokud vám jde hlavně o rychlost, měli byste tuto volbu vypnout dříve, než začnete snižovat me_quality.
chroma_opt Je určena spíše ke zvýšení kvality barev a vyčištění bílých/černých okrajů, než k vylepšení koprimovatelnosti. To vám může pomoci omezit "red stairs" efekt.
lumi_mask Zkouší přiřadit nižší datový tok částem obrázku, které lidské oko dobře nevidí, což umožní enkodéru použít ušetřené bity na důležitějších místech obrázku. Kvalita výsledku značně závisí na osobních preferencích a na typu a nastavení monitoru použitého pro prohlížení (typicky to nebude vypadat dobře pokud je jasný, nebo je to TFT monitor).
qpel Zvýší počet možných vektorů pohybu zvýšením přesnosti vyhledávání pohybu z poloviny pixelu na čtvrtinu pixelu. Ideou je nalezení lepších vektorů pohybu, které naoplátku sníží datový tok (což zvýší kvalitu). Vektory pohybu s přesností na čtvrt pixelu však vyžadují pro sebe pár bitů navíc a výsledné vektory ne vždy dávají (o mnoho) lepší výsledky. Docela často vydá kodek bity na vyšší přesnost, ale dosáhne jen malého nebo žádného zvýšení kvality. Naneštěstí není způsob jak zjistit možný zisk qpel předem, takže musíte enkódovat s a bez ní, abyste měli jistotu.
qpel může až zdvojnásobit čas enkódování a vyžaduje až o 25% více výpočetního výkonu pro dekódování. Volba není podporována všemi stolními přehrávači.
gmc
Pokouší se ušetřit bity v panoramatických scénách použitím jediného
vektoru pohybu pro celý snímek.
To téměř vždy zvýší PSNR, ale znatelně zpomalí enkódování
(stejně jako dekódování).
V každém případě byste ji měli používat pouze pokud máte
vhq nastavené na maximum.
GMC v Xvid
je mnohem
sofistikovanější než v DivX, ale je podporována jen několika
stolními přehrávači.
Xvid podporuje enkódovací profily pomocí volby profile, což je využíváno pro k zařazení omezení nastavení Xvid videoproudu tak, aby byl přehratelný na všem, co podporuje vybraný profil. Omezení se vstahují k rozlišením, datovému toku a různým MPEG-4 vlastnostem. Následující tabulka ukazuje, co který profil podporuje.
Simple | Advanced Simple | DivX | ||||||||||||||
Název profilu | 0 | 1 | 2 | 3 | 0 | 1 | 2 | 3 | 4 | 5 | Handheld | Portable NTSC | Portable PAL | Home Theater NTSC | Home Theater PAL | HDTV |
Šířka [pixely] | 176 | 176 | 352 | 352 | 176 | 176 | 352 | 352 | 352 | 720 | 176 | 352 | 352 | 720 | 720 | 1280 |
Výška [pixely] | 144 | 144 | 288 | 288 | 144 | 144 | 288 | 288 | 576 | 576 | 144 | 240 | 288 | 480 | 576 | 720 |
Snímková rychlost [fps] | 15 | 15 | 15 | 15 | 30 | 30 | 15 | 30 | 30 | 30 | 15 | 30 | 25 | 30 | 25 | 30 |
Max průměrný datový tok [kbps] | 64 | 64 | 128 | 384 | 128 | 128 | 384 | 768 | 3000 | 8000 | 537.6 | 4854 | 4854 | 4854 | 4854 | 9708.4 |
Nejvyšší průměrný datový tok za poslední 3 sekundy [kbps] | 800 | 8000 | 8000 | 8000 | 8000 | 16000 | ||||||||||
Max. B-snímků | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 2 | ||||||
MPEG kvantizace | X | X | X | X | X | X | ||||||||||
Adaptivní kvantizace | X | X | X | X | X | X | X | X | X | X | X | X | ||||
Enkódování prokládaného | X | X | X | X | X | X | X | X | X | |||||||
Čtvrtpixelová přesnost | X | X | X | X | X | X | ||||||||||
Globální kompenzace pohybu | X | X | X | X | X | X |
Následující nastavení jsou příklady nastavení různých kombinací voleb enkodéru, které ovlivňují poměr rychlost versus kvalita při shodném cílovém datovém toku.
Veškerá nastavení byla testována na video vzorku 720x448 @30000/1001 snímků za sekundu, cílový datový tok byl 900kbps a prováděly se na AMD-64 3400+ při 2400 MHz v režimu 64 bitů. Každá kombinace nastavení má uvedenu změřenou rychlost enkódování (ve snímcích za sekundu) a ztrátu PSNR (v dB) oproti nastavení "velmi vysoká kvalita". Rozumějte však že, v závislosti na vašem zdrojovém materiálu, typu počítače a pokrokům ve vývoji, můžete dospět k velmi odlišným výsledkům.
Popis | Volby | Rychlost [fps] | Relativní ztráta PSNR [dB] |
---|---|---|---|
Velmi vysoká kvalita | chroma_opt:vhq=4:bvhq=1:quant_type=mpeg | 16 | 0 |
Vysoká kvalita | vhq=2:bvhq=1:chroma_opt:quant_type=mpeg | 18 | -0.1 |
Rychlé enkódování | turbo:vhq=0 | 28 | -0.69 |
Enkódování v reálném čase | turbo:nochroma_me:notrellis:max_bframes=0:vhq=0 | 38 | -1.48 |
x264
je svobodná knihovna pro
enkódování H.264/AVC video proudů.
Pře zahájením enkódování budete muset
nastavit její podporu v MEncoderu.
Začněte prosím prohlídkou sekce
x264
man stránky
MPlayeru.
Tato sekce je zamýšlena jako doplněk manuálové stránky.
Zde naleznete tipy, které volby budou nejspíše zajímat většinu lidí.
Man stránka je více uhlazená, ale také více vyčerpávající a
občas nabízí mnohem lepší technické detaily.
Tato příručka pokrývá dvě hlavní kategorie enkódovacích voleb:
Volby které mění dobu enkódování za kvalitu
Volby které mohou být použitelné pro naplnění různých osobních preferencí a speciálních požadavků
Nakonec jen vy můžete rozhodnout, které volby jsou nejlepší pro vaše účely. Rozhodování v první kategorii voleb je nejjednodušší: stačí když zhodnotíte zda změny kvality ospravedlní rychlostní rozdíly. Druhá skupina voleb může být mnohem subjektivnější záležitostí a v úvahu může přijít více faktorů. Poznamenejme, že některé volby "osobních preferencí a speciálních požadavků" mohou také značně ovlivnit kvalitu nebo rychlost enkódování, ale to není jejich hlavní funkce. Několik voleb "osobních preferencí" může dokonce způsobit změny, po kterých se někomu zdá být výsledek lepší a jinému horší.
Než budeme pokračovat, poznamenejme, že tento návod používá jediné měřítko kvality: celkový PSNR. Stručné vysvětlení co je to PSNR, naleznete ve Wikipedii pod heslem PSNR. Celkové PSNR je poslední hlášené PSNR číslo při zařazení volby psnr v x264encopts. Kdykoli píšeme o PSNR, je jedním z předpokladů tohoto sdělení to, že jsou použity shodné datové toky.
Téměř všechny komentáře v tomto návodu předpokládají, že enkódujete dvouprůchodově. Při porovnávání voleb jsou zde dva hlavní důvody pro použití dvouprůchodového enkódování. Zaprvé, dvouprůchodové enkódování vám získá zhruba 1dB PSNR, což je znatelný rozdíl. Zadruhé, testování voleb pomocí přímého porovnání kvality v jednoprůchodových výsledcích je pochybné, jelikož se datový tok značně liší s každým enkódováním. Není vždy snadné určit, zda se změnila kvalita díky změně voleb, nebo z větší části odpovídají změnám datového toku.
subq: Z voleb, které umožňují vyměnit čas za kvalitu, jsou obvykle nejdůležitější subq a frameref (viz níže). Máte-li zájem ovlivnit jak rychlost, tak kvalitu, jsou to první volby, které byste měli zvážit. Ve smyslu rychlosti se spolu volby frameref a subq velmi silně ovlivňují. Zkušenosti ukazují, že při jednom referenčním snímku si subq=5 vezme asi o 35% více času než subq=1. Při 6 referenčních snímcích naroste spomalení nad 60%. Vliv subq na PSNR se zdá být poměrně stálý, bez ohledu na počet referenčních snímků. Typicky subq=5 získá 0.2-0.5 dB celkového PSNR přes subq=1. To je obvykle již viditelné.
Režim subq=6 je pomalejší a vede k vyšší kvalitě za rozumnou cenu. Oproti subq=5 obvykle získává 0.1-0.4 dB celkového PSNR za cenu ztráty rychlosti 25%-100%. Narozdíl od ostatních úrovní subq nezávisí chování subq=6 tolik na frameref a me. Místo toho závisí efektivita subq=6 hlavně na počtu použitých B-snímků. Při běžném použití to znamená, že subq=6 má velký vliv jak na rychlost, tak na kvalitu v komplexních, velmi pohyblivých scénách, ale nemusí mít takový vliv ve scénách s malým pohybem. Poznamenejme, že stále doporučujeme nastavit bframes na nenulovou hodnotu (viz níže).
subq=7 je nejpomalejší, s nejvyšší kvalitou. V porovnání s subq=6, obvykle získá 0.01–0.05 dB globálního PSNR za zpomalení v rozmezí 15%–33%. Jelikož je poměr získané kvality ku ztrátě rychlosti docela malý, měli byste tuto volbu používat pouze pokud chcete ušetřit každý možný bit a doba enkódování není problém.
frameref: Výchozí nastavení frameref je 1, ale nemělo by to být bráno tak, že je rozumné nastavovat jej na 1. Pouhé zvýšení frameref na 2 získá okolo 0.15dB PSNR s 5-10% spomalením, což je zřejmě dobrý obchod. frameref=3 získá kolem 0.25dB PSNR navíc k frameref=1, což již může být viditelný rozdíl. frameref=3 je asi o 15% pomalejší než frameref=1. Naneštěstí se zisk rychle vytrácí. Při frameref=6 můžete očekávat zisk pouze 0.05-0.1 dB nad frameref=3 při dodatečném 15% zpomalení. Nad frameref=6 je zisk kvality obvykle velmi malý (ačkoli byste měli mít na paměti, že se to může výrazně lišit v závislosti na zdrojovém materiálu). V poměrně typickém případě zlepší frameref=12 celkový PSNR o pouhé 0.02dB nad frameref=6, při spomalení o 15%-20%. Při tak vysokých hodnotách frameref lze říct pouze jedinou dobrou věc, a to že jejich další zvyšování téměř nikdy nesníží PSNR, ale další zisk kvality je stěží měřitelný, natož viditelný.
Zvýšení frameref na nemístně vysokou hodnotu může a obvykle taky sníží efektivitu kódování, pokud vypnete CABAC. Se zapnutým CABAC (výchozí chování) se zdá být možnost nastavit frameref "příliš vysoko" příliš vzdálená na to, abyste se tím museli trápit a v budoucnu mohou optimalizace tuto možnost zcela vyloučit.
Pokud vám záleží na rychlosti, bývá vhodným kompromisem použít nízké hodnoty subq a frameref v prvním průchodu a zvýšit je ve druhém. Typicky to má zanedbatelný záporný vliv na konečnou kvalitu: Pravděpodobně stratíte méně než 0.1dB PSNR, což by měl být až příliš malý rozdíl, než aby byl vidět. Odlišné hodnoty frameref však mohou místy ovlivnit volbu typu snímku. Nejspíš to budou ojedinělé případy, ale chcete-li si být zcela jisti, zjistěte, jestli vaše video obsahuje buď blýskavé vzory přes celou obrazovku, nebo rozsáhlé krátkodobé změny, které by mohly vynutit I-snímek. Nastavte frameref pro první průchod tak, aby byl dostatečně velký pro pokrytí doby bliknutí (nebo změny). Například, pokud scéna přepíná tam a zpět mezi dvěma obrázky přes tři snímky, nastavte frameref pro první průchod na 3 a více. Tento případ je nejspíš zcela ojedinělý v hraných filmech, ale občas se vyskytuje v záznamech z videoher.
me: Tato volba je určena pro výběr metody vyhledávání pohybu. Změnou této volby jednoduše měníte poměr kvalita-versus-rychlost. Volba me=dia je jen o málo procent rychlejší než výchozí vyhledávání za cenu pod 0.1dB globálního PSNR. Výchozí nastavení (me=hex) je rozumným kompromisem mezi rychlostí a kvalitou. Volba me=umh získá o trošku méně než 0.1dB globální PSNR, při spomalení, které se liší v závislosti na frameref. Při vysokých hodnotách frameref (řekněme 12 nebo tak), je me=umh asi o 40% pomalejší než výchozí me=hex. Při frameref=3, klesne způsobené spomalení na 25%-30%.
Volba me=esa používá tak rozsáhlé vyhledávání, že je příliš pomalá pro praktické využití.
partitions=all: Tato volba zapíná použití bloků 8x4, 4x8 a 4x4 v predikovaných makroblocích (navíc k výchozím blokům). Její aktivace vede k poměrně stálé 10%-15% ztrátě rychlosti. Tato volba je poměrně neužitečná ve zdroji obsahujícím pouze pomalý pohyb, naproti tomu u některých zdrojů s rychlým pohybem, přesněji zdrojů s velkým množstvím malých pohyblivých objektů, můžete očekávat zisk okolo 0.1dB.
bframes: Použitelnost B-snímků je ve většině ostatních kodeků diskutabilní. V H.264 se to změnilo: jsou zde nové techniky a typy bloků pro použití v B-snímcích. Obvykle i naivní algoritmus pro výběr B-snímku může zajistit znatelný zisk PSNR. Také je zajímavé, že pokud vypnete adaptivní rozhodování o B-snímku (nob_adapt), zvýší obvykle enkódování s bframes o trochu rychlost enkódování.
S vypnutým adaptivním rozhodováním o B-snímku (x264encopts - volba nob_adapt), optimální hodnota tohoto nastavení nebývá obvykle vyšší než bframes=1, jinak mouhou utrpět velmi pohyblivé scény. Se zapnutým adaptivním rozhodováním o B-snímku (výchozí chování), je obvykle bezpečné použít vyšší hodnoty; enkodér se pokusí snížit použití B-snímků ve scénách, kde by snížily kompresi. Enkodér zřídka použije více než 3 nebo 4 B-snímky; nastavení této volby na vyšší hodnotu bude mít jen nepatrný vliv.
b_adapt: Poznámka: Výchozí je zapnuto.
Je-li tato volba zapnuta, bude enkodér používat rychlou heuristiku pro snížení počtu B-snímků ve scénách, kde by jejich použitím příliš nezískaly. Můžete použít b_bias pro nastavení jak přátelský bude enkodér k B-snímkům. Spomalení působené adaptivními B-snímky je nyní spíše malé, ale stejně tak potenciální zisk kvality. Obvykle však nijak neškodí. Poznamenejme, že ovlivňuje rychlost a rozhodování o typu snímku pouze v prvním průchodu. b_adapt a b_bias nemají žádný vliv v následných průchodech.
b_pyramid: Pokud používáte >=2 B-snímky, můžete také zapnout tuto volbu; jak říká man stránka, dostanete malé zvýšení kvality bez ztráty rychlosti. Poznamenejme, že tato videa nelze číst dekodéry založenými na libavcodec staršími než 5. března 2005.
weight_b: V typických případech tato volba nepřináší velký zisk. V prolínacích nebo stmívacích scénách však vážená predikce umožňuje poměrně velkou úsporu datového toku. V MPEG-4 ASP bývá stmívání obvykle nejlépe kódováno jako série velkých I-snímků; použití vážené predikce v B-snímcích umožňuje změnit alespoň některé z nich na rozumně menší B-snímky. Spomalení enkódování se zdá být minimální, pokud nějaké je. Rovněž, v rozporu s tím, co si někteří lidé mohou myslet, požadavky dekodéru na CPU nejsou váženou predikcí ovlivněny, ostatní možnosti jsou stejně náročné.
Naneštěstí má aktuálně algoritmus adaptivního rozhodování o B-snímcích výraznou tendenci vyvarovat se B-snímků při stmívání. Dokud se to nezmění, bude dobré přidat nob_adapt do x264encopts, pokud očekáváte, že stmívání bude mít znatelný vliv ve vašem konkrétním klipu.
threads:
Tato volba umožňuje vytvořit více vláken pro enkódování na více procesorech.
Jejich počet si můžete nastavit ručně, nebo raději nastavte
threads=auto a ponechte
x264
detekovat kolik máte procesorů
k dispozici a zvolit vhodný počet vláken.
Pokud máte víceprocesorový stroj, měli byste tuto volbu uvážit, jelikož dokáže
lineárně zvýšit rychlost podle počtu procesorových jader
(okolo 94% na jádro) při velmi malém snížení kvality (asi 0,005dB pro duální procesor
a okolo 0,01dB pro čtyřprocesorový stroj).
Dvouprůchodové enkodování: Výše jsme doporučovali vždy používat dvouprůchodové enkódování, ale stále existují důvody proč jej nepoužít. Například pokud zachytáváte TV vysílání a enkódujete v reálném čase, nemáte jinou možnost, než použít jeden průchod. Jeden průchod je samozřejmě rychlejší než dva; pokud použijete stejné volby v obou průchodech, pak je dvouprůchodové enkódování téměř dvakrát pomalejší.
Stále jsou však velmi dobré důvody pro použití dvouprůchodového režimu. Volič datového toku v jednoprůchodovém režimu není oduševnělý a často dělá nerozumné volby, protože nevidí celkový obraz. Předpokládejme, že máte například dvouminutové video skládající se ze dvou částí. První polovina je vysoce pohyblivá scéna dlouhá 60 sekund, která samostatně vyžaduje kolem 2500kbps, aby vypadala slušně. Hned za ní následuje méně náročná 60 sekundová scéna, která vypadá dobře při 300kbps. Vyžádáte si 1400kbps, což je teoreticky dostatečné pro pokrytí obou scén. Jednoprůchodový volič datového toku v tom případě učiní několik "chyb". První blok může skončit těžce překvantizovaný, takže bude nepoužitelně a zbytečně čtverečkovaný. Druhá část bude velmi podkvantizovaná; to může vypadat dobře, ale spotřeba bitů na tento vzhled je nerozumně vysoká. Čeho se dá ještě hůře vyvarovat je problém přechodu mezi těmito scénami. První sekundy málo pohyblivé poloviny budou těžce překvantizovány, protože volič toku stále očekává nároky na datový tok, se kterými se potýkal v první polovině videa. Tato "chybová doba" překvantizované málo pohyblivé scény bude vypadat neskutečně špatně a skutečně použije méně než 300kbps, které by potřebovala, aby vypadala dobře. Existují způsoby pro zmírnění nástrah jednoprůchodového enkódování, ale ty mohou tíhnout ke zvyšování nepřesnosti datového toku.
Víceprůchodový volič datového toku nabízí velké výhody oproti jednomu průchodu. Díky statistikám generovaným v prvním průchodu může enkodér určit, s rozumnou přesností, bitovou náročnost enkódování každého snímku při jakémkoli kvantizéru. To umožňuje mnohem racionálnější, lépe naplánovanou spotřebu bitů mezi drahými (hodně pohyblivými) a levnými (málo pohyblivými) scénami. Několik nápadů jak upravit tuto spotřebu podle svého naleznete níže viz qcomp.
Navíc dva průchody nemusí trvat dvakrát tak dlouho jako jeden. Můžete upravit volby prvního průchodu pro nejvyšší rychlost a nižší kvalitu. Pokud si dobře zvolíte své volby, můžete mít velmi rychlý první průchod. Výsledná kvalita ve druhém průchodu bude trochu horší, protože predikce velikosti je méně přesná, ale rozdíl v kvalitě je obvykle příliž malý, aby byl vidět. Zkuste např. přidat subq=1:frameref=1 do x264encopts prvnímu průchodu. Pak ve druhém průchodu použijte pomalejší volby pro vyšší kvalitu: subq=6:frameref=15:partitions=all:me=umh
Tříprůchodové enkódování? x264 nabízí možnost provádět větší počet následných průchodů. Pokud zadáte pass=1 v prvním průchodu a pak použijete pass=3 v následujícím průchodu, pak tento průchod jak načte statistiky z předchozího, tak zapíše své vlastní. Další průchod po něm pak bude mít velmi dobrou základnu pro vysoce přesnou predikci velikosti snímků při zvoleném kvantizéru. V praxi se celková kvalita z toho vzešlá blíží nule a je možné, že třetí průchod bude mít horší celkový PSNR než jeho předchúdce. Při běžném použití tři průchody pomůžou, pokud dostanete buď špatnou predikci datového toku, nebo špatně vypadající přechody mezi scénami po použití pouze dvou průchodů. To se nejspíš může stát v extrémně krátkých klipech. Je rovněž několik zvláštních případů, ve kterých jsou tři a více průchodů dobré pro pokročilé uživatele, ale pro stručnost se zde těmito případy zabývat nebudeme.
qcomp: qcomp mění poměr počtu bitů alokovaných "drahým" velmi pohyblivým snímkům k "levným" málo pohyblivým snímkům. V jednom extrému, qcomp=0 vede k čistě konstantnímu datovému toku. Což typicky činí velmi pohyblivé scény velmi ošklivé, zatímco scény s malým pohybem vypadají perfektně, ale spotřebovávají mnohem větší datový tok, než by potřebovaly k tomu, aby ještě vypadaly skvěle. Ve druhém extrému, qcomp=1, dostanete téměř konstantní kvantizační parametr (QP). Konstantní QP nevypadá špatně, ale většina lidí soudí, že je rozumnější snížit trochu datový tok v extrémně náročných scénách (kde snížení kvality není tak vidět) a realokovat je do scén, které je snadnější enkódovat při excelentní kvalitě. Výchozí hodnota qcomp je 0.6, což může být, podle některých lidí poněkud málo (běžně se rovněž používá 0.7-0.8).
keyint: keyint je výhradně pro výměnu míry převinutelnosti za efektivitu kódování. Výchozí hodnota keyint je 250. V materiálu 25 snímků za sekundu to zajišťuje schopnost převíjení s 10 sekundovou přesností. Pokud soudíte, že bude důležité a užitečné být schopen převíjet s přesností 5 sekund, nastavte keyint=125; to ovšem trochu sníží kvalitu/datový tok. Pokud vám jde jen o kvalitu, nikoli převinutelnost, můžete si nastavit mnohem vyšší hodnoty (rozumějte že zisk z toho klesá a může být neznatelný až žádný). Video proud bude stále mít převíjecí body, pokud jsou zde nějaké změny scény.
deblock: Tato věc začíná být trochu kontroverzní.
H.264 definuje jednoduchou deblokovací proceduru I-bloků, která používá přednastavených sil a prahů závislých na QP daného bloku. Výchozí je, že bloky s vysokým QP jsou filtrovány silně a bloky s nízkým QP nejsou deblokovány vůbec. Přednastavené síly definované standardem jsou dobře zvoleny a vyváženy tak, že jsou optimální z hlediska PSNR pro libovolné video, které zkoušíte enkódovat. Volba deblock umožňuje nastavit offsety přednastaveným deblokovacím prahům.
Zdá se, že si mnoho lidí myslí, že je dobré snížit sílu deblokovacího filtru o vysokou hodnotu (řekněme, -3). To však není téměř nikdy dobrý nápad a v mnoha případech lidé, kteří to dělají, nerozumí dobře tomu, jak pracuje výchozí deblokování.
První a nejdůležitější věc, kterou byste měli vědět o in-loop deblokovacím filtru, je, že výchozí prahy jsou téměř vždy optimální z hlediska PSNR. V řídkých případech, kdy nejsou, je ideální offset plusmínus 1. Úprava deblokovacích parametrů o větší hodnotu téměř zaručeně poškodí PSNR. Zesílení filtru setře více detailů; oslabení filtru povede k zvýšené viditelnosti blokování.
Rozhodně je hloupost snižovat deblokovací prahy pokud má vaše video převážně nízkou plošnou komplexnost (čili málo detailů nebo šumu). In-loop filtr odvádí téměř výbornou práci v ukrývání artefaktů, které se mohou vyskytnout. Pokud má zdroj vysokou plšnou komplexnost, pak jsou artefakty méně viditelné. To proto, že kroužkování vypadá podobně jako detail nebo šum. Lidské oko snadno rozpozná, pokud je odstraněn detail, ale ne už tak snadno pozná, že je šum reprezentován špatně. Když příjde na subjektivní kvalitu, pak jsou detaily a šum do jisté míry zaměnitelné. Oslabením deblokovacího filtru nejspíše zvýšíte chybu, přidáním kroužkových artefaktů, ale oko si toho nevšimne, jelikož je zamění za detaily.
Ani to však neospravedlňuje oslabení deblokovacího filtru. Obecně dostanete kvalitnější šum pomocí postprocesingu. Pokud vaše H.264 videa vypadají příliš neostře nebo rozmazaně, zkuste si pohrát s -vf noise při přehrávání. Volba -vf noise=8a:4a by měla skrýt většinu středně silných artefaktů. Téměř určitě to bude vypadat lépe, než výsledky, které byste mohli dosáhnout pohráváním si s deblokovacím filtrem.
Následující nastavení jsou příklady nastavení různých kombinací voleb enkodéru, které ovlivňují poměr rychlost versus kvalita při shodném cílovém datovém toku.
Veškerá nastavení byla testována na video vzorku 720x448 @30000/1001 snímků za sekundu, cílový datový tok byl 900kbps a prováděly se na AMD-64 3400+ při 2400 MHz v režimu 64 bitů. Každá kombinace nastavení má uvedenu změřenou rychlost enkódování (ve snímcích za sekundu) a ztrátu PSNR (v dB) oproti nastavení "velmi vysoká kvalita". Rozumějte však že, v závislosti na vašem zdrojovém materiálu, typu počítače a pokrokům ve vývoji, můžete dospět k velmi odlišným výsledkům.
Popis | Volby | Rychlost [fps] | Relativní ztráta PSNR [dB] |
---|---|---|---|
Velmi vysoká kvalita | subq=6:partitions=all:8x8dct:me=umh:frameref=5:bframes=3:b_pyramid=normal:weight_b | 6 | 0 |
Vysoká kvalita | subq=5:8x8dct:frameref=2:bframes=3:b_pyramid=normal:weight_b | 13 | -0.89 |
Rychlé enkódování | subq=4:bframes=2:b_pyramid=normal:weight_b | 17 | -1.48 |
Video for Windows poskytuje jednoduché enkódování pomocí binárních videokodeků. Můžete enkódovat následujícími kodeky (pokud jich máte víc, řekněte nám to prosím!)
Pamatujte, že podpora těchto kodeků je velmi experimentální a některé z nich nemusí pracovat správně. Některé kodeky budou pracovat pouze v určitých barevných prostorech. Pokud kodek selže, zkuste -vf format=bgr24 a -vf format=yuy2.
Název souboru videokodeku | Popis (FourCC) | md5sum | Poznámka |
---|---|---|---|
aslcodec_vfw.dll | Alparysoft bezztrátový kodek vfw (ASLC) | 608af234a6ea4d90cdc7246af5f3f29a | |
avimszh.dll | AVImszh (MSZH) | 253118fe1eedea04a95ed6e5f4c28878 | vyžaduje -vf format |
avizlib.dll | AVIzlib (ZLIB) | 2f1cc76bbcf6d77d40d0e23392fa8eda | |
divx.dll | DivX4Windows-VFW | acf35b2fc004a89c829531555d73f1e6 | |
huffyuv.dll | HuffYUV (bezztrátový) (HFYU) | b74695b50230be4a6ef2c4293a58ac3b | |
iccvid.dll | Cinepak Video (cvid) | cb3b7ee47ba7dbb3d23d34e274895133 | |
icmw_32.dll | Motion Wavelets (MWV1) | c9618a8fc73ce219ba918e3e09e227f2 | |
jp2avi.dll | ImagePower MJPEG2000 (IPJ2) | d860a11766da0d0ea064672c6833768b | -vf flip |
m3jp2k32.dll | Morgan MJPEG2000 (MJ2C) | f3c174edcbaef7cb947d6357cdfde7ff | |
m3jpeg32.dll | Morgan Motion JPEG Codec (MJPG) | 1cd13fff5960aa2aae43790242c323b1 | |
mpg4c32.dll | Microsoft MPEG-4 v1/v2 | b5791ea23f33010d37ab8314681f1256 | |
tsccvid.dll | TechSmith Camtasia Screen Codec (TSCC) | 8230d8560c41d444f249802a2700d1d5 | shareware chyba na windows |
vp31vfw.dll | On2 Open Source VP3 Codec (VP31) | 845f3590ea489e2e45e876ab107ee7d2 | |
vp4vfw.dll | On2 VP4 Personal Codec (VP40) | fc5480a482ccc594c2898dcc4188b58f | |
vp6vfw.dll | On2 VP6 Personal Codec (VP60) | 04d635a364243013898fd09484f913fb | |
vp7vfw.dll | On2 VP7 Personal Codec (VP70) | cb4cc3d4ea7c94a35f1d81c3d750bc8d | vadné FourCC? |
ViVD2.dll | SoftMedia ViVD V2 kodek VfW (GXVE) | a7b4bf5cac630bb9262c3f80d8a773a1 | |
msulvc06.DLL | MSU Lossless kodek (MSUD) | 294bf9288f2f127bb86f00bfcc9ccdda | Dekódovatelný Window Media Playerem, MPlayerem nikoli (zatím). |
camcodec.dll | CamStudio lossless video kodek (CSCD) | 0efe97ce08bb0e40162ab15ef3b45615 | sf.net/projects/camstudio |
První pole obsahuje názvy kodeků, které by měly být zadány parametru
codec
, například:
-xvfwopts codec=divx.dll
Kód FourCC používaný jednotlivými kodeky jsou uvedeny v závorce.
Příklad převodu ISO DVD upoutávku na VP6 flash video soubor s použitím compdata nastavení datového toku:
mencoder -dvd-devicezeiram.iso
dvd://7 -oupoutavka.flv
\ -ovc vfw -xvfwopts codec=vp6vfw.dll:compdata=onepass.mcf -oac mp3lame \ -lameopts cbr:br=64 -af lavcresample=22050 -vf yadif,scale=320:240,flip \ -of lavf
Pro enkódování s Video for Windows kodeky, budete muset nastavit datový tok a další volby. Funkčnost je potvrzena na platformně x86 na *NIX i Windows.
Nejprve musíte sestavit program vfw2menc. Ten je umístěn v podadresáři TOOLS zdrojových kódů MPlayeru. Pro sestavení na Linuxu můžete použít Wine:
winegcc vfw2menc.c -o vfw2menc -lwinmm -lole32
Pro sestavení na Windows v MinGW nebo Cygwin použijte:
gcc vfw2menc.c -o vfw2menc.exe -lwinmm -lole32
Pro sestavení v MSVC budete potřebovat getopt. Getopt lze najít v originálním vfw2menc archivu dostupném na stránkách: MPlayer on win32 projektu.
Níže uvádíme příklad s VP6 kodekem.
vfw2menc -f VP62 -d vp6vfw.dll -s firstpass.mcf
To otevře dialogové okno VP6 kodeku.
Pro druhý průchod opakujte tento krok, ale
použijte -s secondpass.mcf
.
Uživatelé Windows mohou použít -xvfwopts codec=vp6vfw.dll:compdata=dialog, aby dostali dialogové okno kodeku před zahájením enkódování.
Je několik důvodů, proč můžete chtít vytvářet QuickTime-kompatibilní soubory.
Chcete, aby byl každý počítačový anlfabet schopen sledovat vaše videa na jakékoli rozšířené platformě (Windows, Mac OS X, Unixy …).
QuickTime je schopen využít více harwarových i softwarových urychlovacích funkcí Mac OS X, než platformně nezávislý přehrávač, jako MPlayer nebo VLC. To znamená, že vaše soubory mají šanci na plynulé přehrávání na starších strojích s G4.
QuickTime 7 podporuje H.264, kodek nové generace, který poskytuje podstatně lepší kvalitu obrazu, než předchozí generace kodeků (MPEG-2, MPEG-4 …).
QuickTime 7 podporuje H.264 video a AAC zvuk, ale nepodporuje je, pokud jsou namuxovány v AVI kontejneru. Můžete však použít MEncoder pro enkódování videa a zvuku a pak použít externí program, např. mp4creator (součást MPEG4IP suite) pro přemuxování do MP4 kontejneru.
Podpora H.264 v QuickTime je omezená, takže se budete muset vzdát některých pokročilých vlastností. Pokud enkódujete video s vlastnostmi, které QuickTime 7 nepodporuje, budou přehrávače založené na QuickTime zobrazovat pouze hezky bílou obrazovku, místo očekávaného videa.
B-snímky: QuickTime 7 podporuje maximálně 1 B-snímek, čili -x264encopts bframes=1. To znamená, že b_pyramid a weight_b nebudou mít žádný efekt, jelikož vyžadují, aby bframes bylo vyšší než 1.
Makrobloky: QuickTime 7 nepodporuje 8x8 DCT makrobloky. Tato volba (8x8dct) je výchozí vypnuto, takže se ujistěte, že ji explicitně nezapnete. To také znamená, že volba i8x8 nebude mít žádný efekt, jelikož vyžaduje 8x8dct.
Poměr stran: QuickTime 7 nepodporuje SAR (sample aspect ratio) informace v MPEG-4 souborech; předpokládá, že SAR=1. Přečtěte si sekci o škálování, abyste to obešli.
Řekněme, že chcete ripnout svou nově zakoupenou kopii "Letopisů Narnie". Vaše DVD je region 1, což znamená že je v NTSC. Příklad níže lze aplikovat na PAL, jen musíte vynechat -ofps 24000/1001 a použijete trošku jiné crop a scale rozměry.
Po spuštění mplayer dvd://1, postupujete podle pokynů uvedených v sekci Jak si poradit s telecine a prokladem v NTSC DVD a zjistíte, že je to 24000/1001 fps progresivní video. To poněkud zjednoduší proces, jelikož nepotřebujete použít inverzní telecine filtr jako pullup nebo filtr odstranění prokladu jako yadif.
Dále potřebujete odstřihnout černé okraje na zhora a zdola obrazu, podle postupu uvedeného v této předešlé sekci.
Další krok je opravdu srdcervoucí. QuickTime 7 nepodporuje MPEG-4 videa se vzorkovým poměrem stran jiným než 1, takže budete muset obraz roztáhnout (to vyplýtvá spoustu diskového prostoru) nebo zmenšit (čímž ztratíme některé detaily ze zdrojového videa) na čtvercové pixely. Ať zvolíte jakkoli, je to velmi neefektivní, ale nelze se tomu vyhnout, pokud chcete, aby se video dalo přehrávat pomocí QuickTime 7. MEncoder může provést vhodné zvětšení nebo zmenšení uvedením buď -vf scale=-10:-1 nebo -vf scale=-1:-10. Takto naškálujete video na správnou šířku pro ořezanou výšku, zarovnanou na nejbližší násobek 16 pro optimální kompresi. Pamatujte, že pokud ořezáváte, měli byste nejprve ořezávat, potom škálovat:
-vf crop=720:352:0:62,scale=-10:-1
Protože budete muxovat do odlišného nosného formátu, měli byste vždy použít volbu harddup, abyste se ujistili, že duplikované snímky budou duplikovány ve video výstupu. Bez této volby MEncoder jen vloží do video proudu značky pro duplikované snímky a je jen na přehrávači, aby zobrazil snímek dvakrát. Naneštěstí tato "měkká duplikace" nepřežije přemuxování, takže se zvuk může pomalu rozjíždět s videem.
Celý řetěz filtrů pak vypadá takto:
-vf crop=720:352:0:62,scale=-10:-1,harddup
Jako vždy je výběr datového toku otázkou technických parametrů zdroje, jak jsou objasněny zde, stejně jako otázkou vkusu. Tento film je dost akční a obsahuje mnoho detailů, ale H.264 video vypadá dobře při mnohem menším datovém toku než XviD nebo jiné MPEG-4 kodeky. Po dlouhém experimentování se autor této příručky rozhodl enkódovat tento film při 900kbps a myslí, že vypadá dobře. Můžete snížit datový tok, pokud potřebujete ušetřit místo, nebo jej zvýšit, chcete-li zvýšit kvalitu.
Nyní jste připraveni enkódovat video. Jelikož nám leží na srdci kvalita,
samozřejmě použijeme víceprůchodové enkódování. Chcete-li poněkud
urychlit enkódování, můžete přidat volbu turbo
do prvního průchodu; to snižuje subq a
frameref na 1. Pro zvýšení diskového prostoru, můžete
použít volbu ss pro odstranění prvních několika sekund
videa. (Zjistil jsem, že tento konkrétní film má 32 sekund
log a titulků.) bframes může být 0 nebo 1.
Ostatní volby jsou dokumentovány v Enkódování s
x264
kodekem a
v man stránce.
mencoder dvd://1 -o /dev/null -ss 32 -ovc x264 \ -x264encopts pass=1:turbo:bitrate=900:bframes=1:\ me=umh:partitions=all:trellis=1:qp_step=4:qcomp=0.7:direct_pred=auto:keyint=300 \ -vf crop=720:352:0:62,scale=-10:-1,harddup \ -oac faac -faacopts br=192:mpeg=4:object=2 -channels 2 -srate 48000 \ -ofps 24000/1001
Pokud máte víceprocesorový stroj, nenechte si ujít příležitost podstatně zvýšit
enkódování zapnutím
x264
vícevláknového režimu
přidáním threads=auto do x264encopts
na příkazovém řádku.
Druhý průchod je stejný, jen nastavíte výstupní soubor a nastavíte pass=2.
mencoder dvd://1 -o narnia.avi -ss 32 -ovc x264 \ -x264encopts pass=2:turbo:bitrate=900:frameref=5:bframes=1:\ me=umh:partitions=all:trellis=1:qp_step=4:qcomp=0.7:direct_pred=auto:keyint=300 \ -vf crop=720:352:0:62,scale=-10:-1,harddup \ -oac faac -faacopts br=192:mpeg=4:object=2 -channels 2 -srate 48000 \ -ofps 24000/1001
Výsledné AVI by mělo perfektně hrát v MPlayeru, ale QuickTime jej nepřehraje, jelikož nepodporuje H.264 muxovaný v AVI. Takže dalším krokem je přemuxovat video do MP4 konteineru.
Existuje spousta způsobů, jak remuxovat AVI do MP4. Můžete použít mp4creator, který je součástí MPEG4IP suite.
Nejprve demuxujte AVI do oddělených zvukových a video proudů, pomocí MPlayeru.
mplayer narnia.avi -dumpaudio -dumpfile narnia.aac mplayer narnia.avi -dumpvideo -dumpfile narnia.h264
Jména souborů jsou důležitá; mp4creator
vyžaduje, aby AAC zvukové proudy byly pojmenovány .aac
a H.264 video proudy zase .h264
.
Nyní použijte mp4creator pro vytvoření nového MP4 souboru ze zvukového a video proudů.
mp4creator -create=narnia.aac narnia.mp4 mp4creator -create=narnia.h264 -rate=23.976 narnia.mp4
Narozdíl od enkódovacího kroku, musíte zadat snímkovou rychlost jako desetinné číslo (např. 23.976), nikoli zlomek (např. 24000/1001).
Tento narnia.mp4
soubor by měl být přehratelný
jakoukoli QuickTime 7 aplikací, jako je
QuickTime Player nebo
iTunes. Pokud plánujete sledovat video ve
webovém prohlížeči s QuickTime
pluginem, měli byste rovněž označkovat film, aby jej
QuickTime plugin mohl začít přehrávat už
v době stahování. mp4creator
umí vytvořit značkovací (hint) stopy:
mp4creator -hint=1 narnia.mp4 mp4creator -hint=2 narnia.mp4 mp4creator -optimize narnia.mp4
Můžete ověřit výsledek, abyste se ujistili, že značkovací stopy byly vytvořeny úspěšně:
mp4creator -list narnia.mp4
Měli byste vidět seznam stop: 1 zvukovou, 1 video a 2 značkovací stopy.
Track Type Info 1 audio MPEG-4 AAC LC, 8548.714 secs, 190 kbps, 48000 Hz 2 video H264 [email protected], 8549.132 secs, 899 kbps, 848x352 @ 23.976001 fps 3 hint Payload mpeg4-generic for track 1 4 hint Payload H264 for track 2
Pokud chcete přidat stopy, které se objevují v iTunes, můžete použít AtomicParsley.
AtomicParsley narnia.mp4 --metaEnema --title "The Chronicles of Narnia" --year 2005 --stik Movie --freefree --overWrite
Volba --metaEnema odstraňuje existující metadata (mp4creator vkládá své jméno do "encoding tool" tagu) a --freefree uvolní místo po smazaných metadatech. Volba --stik nastaví typ videa (jako Film nebo TV šou), což iTunes používá pro sdružování podobných video souborů. Volba --overWrite přepisuje původní soubor; bez ní vytvoří AtomicParsley nový automaticky pojmenovaný soubor ve stejném adresáři a ponechá původní soubor nedotčen.
MEncoder je schopen vytvořit soubory ve
formátu MPEG pro VCD, SCVD a DVD pomocí knihovny
libavcodec
.
Tyto soubory pak mohou být použity ve spojení s programem
vcdimager
nebo
dvdauthor
pro vytváření disků přehratelných na stolním přehrávači.
Formáty DVD, SVCD a VCD mají silná omezení. K dispozici máte pouze malý výběr velikostí enkódovaného obrazu a poměrů stran. Pokud váš film nesplňuje tyto požadavky, budete jej muset škálovat, ořezat nebo přidat černé okraje, aby byl kompatibilní.
Formát | Rozlišení | V. kodec | V. dat. tok | Vzork. kmitočet | A. kodec | A. dat. tok | FPS | Poměr stran |
---|---|---|---|---|---|---|---|---|
NTSC DVD | 720x480, 704x480, 352x480, 352x240 | MPEG-2 | 9800 kbps | 48000 Hz | AC–3,PCM | 1536 kbps (max) | 30000/1001, 24000/1001 | 4:3, 16:9 (pouze pro 720x480) |
NTSC DVD | 352x240[a] | MPEG-1 | 1856 kbps | 48000 Hz | AC–3,PCM | 1536 kbps (max) | 30000/1001, 24000/1001 | 4:3, 16:9 |
NTSC SVCD | 480x480 | MPEG-2 | 2600 kbps | 44100 Hz | MP2 | 384 kbps (max) | 30000/1001 | 4:3 |
NTSC VCD | 352x240 | MPEG-1 | 1150 kbps | 44100 Hz | MP2 | 224 kbps | 24000/1001, 30000/1001 | 4:3 |
PAL DVD | 720x576, 704x576, 352x576, 352x288 | MPEG-2 | 9800 kbps | 48000 Hz | MP2,AC–3,PCM | 1536 kbps (max) | 25 | 4:3, 16:9 (pouze pro 720x576) |
PAL DVD | 352x288[a] | MPEG-1 | 1856 kbps | 48000 Hz | MP2,AC–3,PCM | 1536 kbps (max) | 25 | 4:3, 16:9 |
PAL SVCD | 480x576 | MPEG-2 | 2600 kbps | 44100 Hz | MP2 | 384 kbps (max) | 25 | 4:3 |
PAL VCD | 352x288 | MPEG-1 | 1152 kbps | 44100 Hz | MP2 | 224 kbps | 25 | 4:3 |
[a] Tato rozlišení jsou zřídka použita pro DVD, protože mají docela nízkou kvalitu. |
Pokud má vaše video poměr stran 2.35:1 (většina současných akčních filmů), budete muset přidat černé okraje, nebo ořezat video na 16:9, abyste mohli vytvořit DVD nebo VCD. Pokud přidáváte černé okraje, zkuste je napasovat do 16 pixelových okrajů, abyste minimalizovali vliv na výkon enkódování. Naštěstí má DVD dostatečně vysoký datový tok, takže se nemusíte příliš zabývat efektivitou enkódování, ale u SVCD a VCD je k dispozici jen malý datový tok, takže vyžaduje větší snahu pro dosažení přijatelné kvality.
DVD, VCD a SVCD vás rovněž omezují na relativně nízké GOP (skupina obrázků) velikosti. Pro materiál 30 snímků za sekundu je největší povolená GOP velikost 18. Pro 25 nebo 24 snímků/s je maximum 15. Velikost GOP je nastavena pomocí volby keyint.
VCD video musí být CBR při 1152 kbps. Tento velmi omezující požadavek je zde spolu s velmi malou vbv vyrovnávací pamětí 327 kilobitů. SVCD umožňuje proměnné datové toky až do 2500 kbps a poněkud méně omezující velikost vbv bufferu 917 kilobitů. Datové toky pro DVD mohou být libovolné až do 9800 kbps (ačkoli typické datové toky jsou asi poloviční) a velikost vbv buferu je 1835 kilobitů.
MEncoder má volby pro ovládání výstupního formátu. Pomocí těchto voleb jej můžete instruovat, aby použil správný typ souboru.
Volby pro VCD a SVCD se nazývají xvcd a xsvcd, protože to jsou rozšířené formáty. Nejsou přesně kompatibilní hlavně proto, že výstup neobsahuje skenovací offsety. Pokud potřebujete generovat SVCD obraz, měli byste protáhnout výstupní soubor programem vcdimager.
VCD:
-of mpeg -mpegopts format=xvcd
SVCD:
-of mpeg -mpegopts format=xsvcd
DVD (s časovými značkami v každém snímku, je-li to možné):
-of mpeg -mpegopts format=dvd:tsaf
DVD s NTSC Pullup:
-of mpeg -mpegopts format=dvd:tsaf:telecine -ofps 24000/1001
Toto umožňuje enkódovat 24000/1001 fps progresivní materiál při 30000/1001 fps při zachování slučitelnosti s DVD.
Argument aspect z -lavcopts se používá pro zakódování poměru stran souboru. Během přehrávání je pak tato hodnota použita pro obnovení videa na správnou velikost.
16:9 neboli "Widescreen"
-lavcopts aspect=16/9
4:3 neboli "Fullscreen"
-lavcopts aspect=4/3
2.35:1 neboli "Cinemascope" NTSC
-vf scale=720:368,expand=720:480 -lavcopts aspect=16/9
Pro výpočet správné velikosti pro škálování, použijte rozšířenou NTSC šířku 854/2.35 = 368
2.35:1 neboli "Cinemascope" PAL
-vf scale=720:432,expand=720:576 -lavcopts aspect=16/9
Pro výpočet správné velikosti pro škálování, použijte rozšířenou PAL šířku 1024/2.35 = 432
Aby byla zachována synchronizace zvuku s videem během enkódování, musí MEncoder zahazovat nebo duplikovat snímky. To funguje celkem dobře při muxování do AVI souboru, ale téměř s jistotou neudrží A/V synchronizaci s jinými muxery jako MPEG. To je důvodem pro nutnost přidání video fitru harddup na konec řetězu filtrů, abychom se tomuto problému vyhnuli. Více technických informací o harddup naleznete v sekci Zlepšení muxování a A/V synchronizace, nebo v man stránce.
Pokud není vzorkovací kmitočet zvuku takový, jaký je vyžadován cílovým formátem, je nutný převod vzorkovacího kmitočtu. To zajišťuje použití volby -srate spolu se zvukovým filtrem -af lavcresample.
DVD:
-srate 48000 -af lavcresample=48000
VCD a SVCD:
-srate 44100 -af lavcresample=44100
libavcodec
můžete použít pro
vytvoření videa kompatibilního s VCD/SVCD/DVD použitím příslušných voleb.
Zde máte seznam polí v -lavcopts, která je nutné změnit, abyste dostali video vhodné pro VCD, SVCD, nebo DVD:
acodec: mp2 pro VCD, SVCD nebo PAL DVD; ac3 je obecně používán pro DVD. PCM zvuk může být rovněž použitý pro DVD, ale většinou je to velké plýtvání místem. Poznamenejme, že MP3 není slučitelné s žádným z těchto formátů, ale přehrávače s jeho přehrátím obvykle nemají problém.
abitrate: 224 pro VCD; do 384 pro SVCD; do 1536 pro DVD, ale obvykle se hodnoty pohybují od 192 kbps pro stereo do 384 kbps pro 5.1 kanálový zvuk.
vcodec: mpeg1video pro VCD; mpeg2video pro SVCD; mpeg2video je obvykle použitý pro DVD, ale můžete použít také mpeg1video pro CIF rozlišení.
keyint: Použitý pro nastavení velikosti GOP. 18 pro 30fps materiál, nebo 15 pro 25/24 fps materiál. Zdá se, že komerční producenti preferují interval mezi klíčovými snímky 12. Je možné použít vyšší hodnotu a stále být kompatibilní s většinou přehrávačů. keyint na 25 by neměla nikdy způsobit potíže.
vrc_buf_size: 327 pro VCD, 917 pro SVCD a 1835 pro DVD.
vrc_minrate: 1152, pro VCD. Může být vynecháno pro SVCD a DVD.
vrc_maxrate: 1152 pro VCD; 2500 pro SVCD; 9800 pro DVD. Pro SVCD a DVD, můžete použít nižší hodnoty v závislosti na vašich osobních preferencích a potřebách.
vbitrate: 1152 pro VCD; do 2500 pro SVCD; do 9800 pro DVD. Pro dva poslední formáty by mělo být vbitrate nastaveno podle vlastního uvážení. Například pokud trváte na umístění asi 20 hodin na DVD, mohli byste použít vbitrate=400. Výsledná kvalita bude nejspíš hrozná. Pokud se pokoušíte dosáhnout maximální možné kvality na DVD, použijte vbitrate=9800, ale pak se vám nevejde ani celá hodina záznamu na jednovrstvé DVD.
vstrict: Pro vytváření DVD by mělo být použito vstrict=0. Bez této volby vytvoří MEncoder datový proud, který některé stolní přehrávače neumí správně dekódovat.
Toto je typická minimální sada -lavcopts pro enkódování videa:
VCD:
-lavcopts vcodec=mpeg1video:vrc_buf_size=327:vrc_minrate=1152:\ vrc_maxrate=1152:vbitrate=1152:keyint=15:acodec=mp2
SVCD:
-lavcopts vcodec=mpeg2video:vrc_buf_size=917:vrc_maxrate=2500:vbitrate=1800:\ keyint=15:acodec=mp2
DVD:
-lavcopts vcodec=mpeg2video:vrc_buf_size=1835:vrc_maxrate=9800:vbitrate=5000:\ keyint=15:vstrict=0:acodec=ac3
Pro vyšší kvalitu enkódování můžete také přidat kvalitu zlepšující volby do lavcopts, jako je trell, mbd=2 a další. Poznamenejme, že qpel a v4mv, které jsou často dobré pro MPEG-4, nejsou použitelné s MPEG-1 nebo MPEG-2. Pokud se snažíte vytvořit DVD s velmi vasokou kvalitou, může být vhodné přidat dc=10 do lavcopts. Takto to můžete pomoci omezit oběvování bloků ve stálobarevných plochách. Podtrženo sečteno, zde máte příklad nastavení lavcopts pro DVD s vyšší kvalitou:
-lavcopts vcodec=mpeg2video:vrc_buf_size=1835:vrc_maxrate=9800:vbitrate=8000:\ keyint=15:trell:mbd=2:precmp=2:subcmp=2:cmp=2:dia=-10:predia=-10:cbp:mv0:\ vqmin=1:lmin=1:dc=10:vstrict=0
VCD a SVCD podporují zvuk MPEG-1 layer II. Použít můžete
toolame
,
twolame
,
nebo MP2 enkodér z libavcodec
u.
MP2 libavcodecu je dalek toho, aby byl stejně dobrý jako druhé dvě knihovny,
avšak měl by být vždy po ruce.
VCD podporuje pouze zvuk s konstantním datovým tokem (CBR), zatímco SVCD
podporuje také proměnný datový tok (VBR).
Používejte VBR opatrně, jelikož některé mizerné stolní přehrávače jej
nemusí dobře podporovat.
Pro DVD zvuk se používá AC–3 kodek z
libavcodec
.
Tato sekce obsahuje kompletní příkazy pro vytvoření VCD/SVCD/DVD kompatibilních videí.
mencoder -oac lavc -ovc lavc -of mpeg -mpegopts format=dvd:tsaf \ -vf scale=720:576,harddup -srate 48000 -af lavcresample=48000 \ -lavcopts vcodec=mpeg2video:vrc_buf_size=1835:vrc_maxrate=9800:vbitrate=5000:\ keyint=15:vstrict=0:acodec=ac3:abitrate=192:aspect=16/9 -ofps 25 \ -ofilm.mpg
film.avi
mencoder -oac lavc -ovc lavc -of mpeg -mpegopts format=dvd:tsaf \ -vf scale=720:480,harddup -srate 48000 -af lavcresample=48000 \ -lavcopts vcodec=mpeg2video:vrc_buf_size=1835:vrc_maxrate=9800:vbitrate=5000:\ keyint=18:vstrict=0:acodec=ac3:abitrate=192:aspect=16/9 -ofps 30000/1001 \ -ofilm.mpg
film.avi
Pokud již má zdroj AC–3 zvuk, použijte -oac copy místo reenkódování.
mencoder -oac copy -ovc lavc -of mpeg -mpegopts format=dvd:tsaf \ -vf scale=720:576,harddup -ofps 25 \ -lavcopts vcodec=mpeg2video:vrc_buf_size=1835:vrc_maxrate=9800:vbitrate=5000:\ keyint=15:vstrict=0:aspect=16/9 -ofilm.mpg
film.avi
Pokud již má zdroj AC–3 zvuk a video je NTSC @ 24000/1001 fps:
mencoder -oac copy -ovc lavc -of mpeg -mpegopts format=dvd:tsaf:telecine \ -vf scale=720:480,harddup -lavcopts vcodec=mpeg2video:vrc_buf_size=1835:\ vrc_maxrate=9800:vbitrate=5000:keyint=15:vstrict=0:aspect=16/9 -ofps 24000/1001 \ -ofilm.mpg
film.avi
mencoder -oac lavc -ovc lavc -of mpeg -mpegopts format=xsvcd -vf \ scale=480:576,harddup -srate 44100 -af lavcresample=44100 -lavcopts \ vcodec=mpeg2video:mbd=2:keyint=15:vrc_buf_size=917:vrc_minrate=600:\ vbitrate=2500:vrc_maxrate=2500:acodec=mp2:abitrate=224 -ofps 25 \ -ofilm.mpg
film.avi
mencoder -oac lavc -ovc lavc -of mpeg -mpegopts format=xsvcd -vf \ scale=480:480,harddup -srate 44100 -af lavcresample=44100 -lavcopts \ vcodec=mpeg2video:mbd=2:keyint=18:vrc_buf_size=917:vrc_minrate=600:\ vbitrate=2500:vrc_maxrate=2500:acodec=mp2:abitrate=224 -ofps 30000/1001 \ -ofilm.mpg
film.avi
mencoder -oac lavc -ovc lavc -of mpeg -mpegopts format=xvcd -vf \ scale=352:288,harddup -srate 44100 -af lavcresample=44100 -lavcopts \ vcodec=mpeg1video:keyint=15:vrc_buf_size=327:vrc_minrate=1152:\ vbitrate=1152:vrc_maxrate=1152:acodec=mp2:abitrate=224 -ofps 25 \ -ofilm.mpg
film.avi
mencoder -oac lavc -ovc lavc -of mpeg -mpegopts format=xvcd -vf \ scale=352:240,harddup -srate 44100 -af lavcresample=44100 -lavcopts \ vcodec=mpeg1video:keyint=18:vrc_buf_size=327:vrc_minrate=1152:\ vbitrate=1152:vrc_maxrate=1152:acodec=mp2:abitrate=224 -ofps 30000/1001 \ -ofilm.mpg
film.avi
[1] Buďte však opartní: Dekódování MPEG-4 AVC videa v DVD rozlišení vyžaduje rychlý stroj (např.Pentium 4 nad 1.5GHz, nebo Pentium M nad 1GHz).
[2] Stejný film nemusí vypadat stejně na monitoru někoho jiného, nebo když je přehráván jiným dekodérem, takže si prověřujte své výtvory přehráváním na různých sestavách.
8.1. Vývoj | |
Otázka: | Jak vytvořím správně patch pro MPlayer? |
Odpověď: | Sepsali jsme krátký dokument popisující všechny nezbytné detaily. Následujte tyto instrukce. |
Otázka: | Jak přeložím MPlayer do nového jazyka? |
Odpověď: | Přečtěte si translation HOWTO, to vám objasní vše. Podrobnější pomoc můžete dostat v e-mailové konferenci MPlayer–translations. |
Otázka: | Jak mohu podpořit vývoj MPlayeru? |
Odpověď: | Rádi přijmeme vaše hardwarové a softwarové příspěvky. Ty nám pomáhají neustále vylepšovat MPlayer. |
Otázka: | Jak se mohu stát vývojářem MPlayeru? |
Odpověď: | Vždy uvítáme nové kodéry i dokumentaristy. Přečtěte si technickou dokumentaci abyste dostali obecnou představu. Pak byste se měli přihlásit do MPlayer-dev-eng e-mailové konference a začít psát kód. Pokud chcete pomoci s dokumentací, připojte se do konference MPlayer-docs. |
Otázka: | Proč nepoužíváte autoconf/automake? |
Odpověď: | Máme modulární, ručně dělaný konfigurační a překladový systém, který odvádí docela dobrou práci, tak proč to měnit? Konec konců se nám nelíbí auto* nástroje, stejně jako ostatním lidem. |
8.2. Kompilace a instalace | |
| |
Otázka: |
Kompilace skončí s chybou a gcc vypíše nějakou
záhadnou zprávu obsahující frázi
|
Odpověď: | Právě jste narazili na chybu v gcc. Nahlaste ji prosím týmu gcc, nikoli nám. Z nějakého důvodu se zdá, že MPlayer často spouští chyby kompileru. Přesto je však nebudeme odstraňovat, ani je v našich zdrojových textech obcházet. Chcete-li se vyhnout těmto problémům, zůstaňte věrni té verzi kompileru, která je známa jako spolehlivá a stabilní, nebo často upgradujte. |
Otázka: | Existují binární (RPM/Debian) balíčky MPlayeru? |
Odpověď: | |
Otázka: | Jak mohu skompilovat 32 bitový MPlayer na 64 bitovém Athlonu? |
Odpověď: | Vyzkoušejte následující volby configure: ./configure --target=i386-linux --cc="gcc -m32" --as="as --32" --with-extralibdir=/usr/lib
|
Otázka: | Configure skončí s následujícím textem a MPlayer se nezkompiluje! Your gcc does not support even i386 for '-march' and '-mcpu'
|
Odpověď: | Vaše gcc není správně nainstalováno, detaily naleznete v souboru config.log. |
Otázka: |
Mám Matrox G200/G400/G450/G550, jak zkompiluji/použiji ovladač
|
Odpověď: | Přečtěte si sekci mga_vid. |
Otázka: | Během 'make', si MPlayer stěžuje na chybějící X11 knihovny. Tomu nerozumím, vždyť mám nainstalovány X11!? |
Odpověď: | ... ale nemáte nainstalován vývojářský (dev/devel) balíček pro X11. Nebo ne zprávně. V Red Hatu se nazývá XFree86-devel*, v Debianu Woody je to xlibs-dev, v Debianu Sarge je to libx11-dev. Také se přesvědčte, že symlinky /usr/X11 a /usr/include/X11 existují. |
Otázka: | Kompilace na Mac OS 10.3 vede k několika linkovacím chybám. |
Odpověď: | Chyba linkování, kterou zakoušíte vypadá nejspíš takto: ld: Undefined symbols: _LLCStyleInfoCheckForOpenTypeTables referenced from QuartzCore expected to be defined in ApplicationServices _LLCStyleInfoGetUserRunFeatures referenced from QuartzCore expected to be defined in ApplicationServices Tento problém působí vývojáři Apple, kteří používají 10.4 pro kompilaci svého software a distribuují binárky uživatelům 10.3 přes Software Update. Nedefinované symboly jsou přítomny v Mac OS 10.4, ale nikoli 10.3. Jedním z řešení může být downgrade na QuickTime 7.0.1. Následující řešení je však lepší. Získejte starší verzi frameworků. Získáte zde komprimovaný soubor obsahující QuickTime 7.0.1 Framework a 10.3.9 QuartzCore Framework. Rozbalte soubory někde mimo adresář System. (čili neinstalujte tyto frameworky do svého /System/Library/Frameworks! Použití těchto starších verzí slouží jen k obejití linkovacích chyb!) gunzip < CompatFrameworks.tgz | tar xvf -
V config.mak byste měli přidat
Výsledná binárka MPlayeru bude využívat
framework nainstalovaný na vašem systému přes dynamické linkování
prováděné za běhu.
(Můžete si to ověřit pomocí |
8.3. Obecné dotazy | |
| |
Otázka: | Existují nějaké e-mailové konference pro MPlayer? |
Odpověď: | Ano. Podívejte se do sekce e-mailových konferencí naší domácí stránky. |
Otázka: | Našel/našla jsem odpornou chybu když jsem chtěl(a) přehrát svůj oblíbený film! Komu to mám oznámit? |
Odpověď: | Přečtěte si prosím postupy hlášení chyb a následujte instrukce. |
Otázka: | Mám potíže s přehráváním souborů s ... kodekem. Mohu je používat? |
Odpověď: | Prověřte stav kodeku, pokud neobsahuje váš kodek, přečtěte si Win32 codec HOWTO a kontaktujte nás. |
Otázka: | Při startu přehrávání dostanu následující hlášku, ale jinak vše vypadá dobře: Linux RTC init: ioctl (rtc_pie_on): Permission denied
|
Odpověď: | Potřebujete speciálně nastavené jádro, abychom mohli použít RTC časování. Detaily naleznete v RTC části dokumentace. |
Otázka: | Jak si mohu udělat snímek obrazovky? |
Odpověď: | Abyste si mohli udělat snímek, musíte použít video výstupní rozhraní, které nepoužívá překrývání. Jde to například pod X11 s -vo x11, pod Windows funguje -vo directx:noaccel.
Alternativně můžete spustit MPlayer s video filtrem
|
Otázka: | Co znamenají čísla na stavovém řádku? |
Odpověď: | Příklad: A: 2.1 V: 2.2 A-V: -0.167 ct: 0.042 57/57 41% 0% 2.6% 0 4 49% 1.00x
Většina z nich je určena pro ladění chyb. Použijte volbu -quiet, aby zmizely. U některých souborů můžete vidět, že zatížení CPU video_outem je nulové (0%). To proto, že je volán přímo video kodekem a nelze jej měřit odděleně. Pokud chcete znát rychlost video_out, porovnejte rozdíl při přehrávání souboru do -vo null a do obvyklého video výstupního zařízení. |
Otázka: | Objevuje se chybová zpráva o chybějícím souboru /usr/local/lib/codecs/ ... |
Odpověď: | Stáhněte si a nainstalujte binární kodeky z naší download stránky. |
Otázka: | Jak zařídit, aby si MPlayer pamatoval volby, které používám pro konkrétní soubor, např. film.avi? |
Odpověď: | Vytvořte soubor s názvem film.avi.conf s volbami jen pro tento soubor a umístěte jej do ~/.mplayer nebo do adresáře s filmem. |
Otázka: | Titulky jsou hezké, nejkrásnější jaké jsem viděl, ale zpomalují přehrávání! Vím že je to nepravděpodobné ... |
Odpověď: |
Poté co provedete ./configure,
vyeditujte config.h a nahraďte
|
Otázka: | Nemohu se dostat do GUI menu. Kliknu pravým tlačítkem, ale nemám přístup k žádné z položek! |
Odpověď: | Používáte FVWM? Zkuste následující:
|
Otázka: | Jak mohu spustit MPlayer na pozadí? |
Odpověď: | Použijte: mplayer
|
8.4. Potíže s přehráváním | |
| |
Otázka: | Nemohu přijít na příčinu nějakého podivného problému při přehrávání. |
Odpověď: | Máte zatoulaný soubor codecs.conf v ~/.mplayer/, /etc/, /usr/local/etc/ a podobně? Odstraňte jej, protože zastaralé codecs.conf soubory mohou způsobit obskurní potíže a jsou zamýšleny jen pro použití vývojáři pracujícími na podpoře kodeků. Tento soubor má přednost před vestavěným nastavením kodeků MPlayeru, což způsobí katastrofu, jakmile dojde k nekompatibilním změnám v nových verzích programu. Pokud není používán experty, jedná se jistou cestu do pekel, působící náhodné a těžko odhalitelné pády aplikace a problémy s přehráváním. Pokud jej tedy stále ještě někde máte, ihned se jej zbavte. |
Otázka: | Jak dostanu titulky do černých okrajů kolem filmu? |
Odpověď: |
Použijte video filtr mplayer -vf expand=0:-100:0:0 -slang de dvd://1
|
Otázka: | Jak mohu vybrat audio/titulkové stopy z DVD, OGM, Matroska nebo NUT souboru? |
Odpověď: | Musíte použít -aid (ID zvuku) nebo -alang (jazyk zvuku), -sid(ID titulků) nebo -slang (jazyk titulků), například: mplayer -alang eng -slang eng Chcete-li vědět jaké jsou k dispozici: mplayer -vo null -ao null -frames 0 -v
|
Otázka: | Zkouším přehrávat náhodný stream z internetu, ale nedaří se mi to. |
Odpověď: | Zkuste přehrávat stream s volbou -playlist. |
Otázka: | Stáhnul jsem si film přes P2P síť ale nefunguje! |
Odpověď: | Váš soubor je poškozený nebo falešný. Pokud jej máte od kámoše a jemu funguje, zkuste si porovnat md5sum hashe. |
Otázka: | Nedaří se mi přimět titulky, aby se zobrazovaly, pomoc!! |
Odpověď: |
Ujistěte se, že máte správně nainstalovány fonty. Znovu proveďte kroky v části
Fonty a OSD sekce instalace.
Pokud používáte TrueType fonty, ověřte zda máte nainstalovánu
|
Otázka: | Proč MPlayer nefunguje na Fedora Core? |
Odpověď: | Ve Fedoře je špatná spolupráce mezi exec-shieldem, prelinkem a jakoukoli aplikací používající Windows DLL (tak jako MPlayer). Problém je v tom, že exec-shield znáhodní načítací adresy všech systémových knihoven. Toto znáhodnění nastane v době předlinkování (prelink time)(jednou za dva týdny). Když se MPlayer pokouší nahrát Windows DLL, chce ji umístit na specifickou adresu (0x400000). Pokud tam ale již je důležitá systémová knihovna, MPlayer zhavaruje. (Typickým projevem je segmentation fault při pokusu o přehrání Windows Media 9 souborů.) Pokud narazíte na tento problém, máte dvě možnosti:
|
Otázka: | MPlayer zhavaruje s hláškou MPlayer interrupted by signal 4 in module: decode_video nebo MPlayer přerušen signálem 4 v modulu: decode_video
|
Odpověď: | Nepoužívejte MPlayer na CPU odlišném než na jakém byl kompilován, nebo jej rekompilujte s detekcí CPU za běhu (./configure --enable-runtime-cpudetection). |
Otázka: | Když zkouším grabovat z tuneru, funguje to, ale jsou divné barvy. V jiných programech je to OK. |
Odpověď: | Pravděpodobně vaše karta hlásí některé barevné režimy jako podporované, i když je nepodporuje. Zkuste to s YUY2 místo výchozího YV12 (viz sekci TV). |
Otázka: | Dostávám podivné procentní hodnoty (příliš velké) při přehrávání na notebooku. |
Odpověď: | To je práce power managementu / systému šetřícímu energií vašeho notebooku (BIOS, nikoli jádro). Zapojte konektor vnějšího napájení před zapnutím notebooku. Můžete také zkusit zda vám pomůže cpufreq (rozhraní k SpeedStep pro Linux). |
Otázka: |
Synchronizace zvuku a videa se úplně rozpadne když spustím
MPlayer jako
|
Odpověď: | Toto je opět práce power managementu (viz výš). Zapněte externí napájení před zapnutím notebooku, nebo použijte volbu -nortc. |
Otázka: | Při přehrávání souboru se začne přehrávání zadrhávat a dostanu následující hlášení: Badly interleaved AVI file detected - switching to -ni mode... nebo Detekován špatně prokládaný AVI soubor – přepínám do režimu -ni...
|
Odpověď: | Špatně prokládané soubory a volba -cache nejdou moc dohromady. Zkuste -nocache. |
8.5. Potíže video/audio ovaldače (vo/ao) | |
| |
Otázka: | Když přejdu do celoobrazovkového režimu, dostanu pouze černé okraje kolem obrazu bez jeho zvětšení na celou obrazovku. |
Odpověď: |
Vaše výstupní video rozhraní nepodporuje hardwarové škálování a protože
softwarové škálování může být neskutečně pomalé, nezapíná jej
MPlayer automaticky. Pravděpodobně používáte
rozhraní |
Otázka: | Právě jsem nainstaloval MPlayer. Když chci však otevřít video soubor, nastane fatální chyba: Error opening/initializing the selected video_out (-vo) device. nebo Selhalo otevření/inicializace vybraného video_out (-vo) rozhraní. Jak mohu vyřašit své problémy? |
Odpověď: | Změňte své video výstupní zařízení. Spusťte následující příkaz, abyste dostali seznam dostupných video rozhraní: mplayer -vo help Jakmile jste si vybrali správné video výstupní rozhraní, přidejte jej do svého konfiguračního souboru. Přidejte
vo = do ~/.mplayer/config a/nebo
vo_driver = do ~/.mplayer/gui.conf. |
Otázka: |
Mám problémy s |
Odpověď: | Přečtěte si postup hlášení chyb a pošlete nám správné hlášení chyby. Rovněž zkuste experimentovat s volbou -fstype. |
Otázka: | Zvuk se během přehrávání AVI souboru rozejde s videem. |
Odpověď: | Zkuste volbu -bps nebo -nobps. Pokud se to nezlepší, přečtěte si postup hlášení chyb a nahrejte soubor na FTP. |
Otázka: | Můj počítač přehrává MS DivX AVI s rozlišeními ~ 640x300 a stereo MP3 zvukem příliš pomalu. Když použiji volbu -nosound, vše je v pořádku (jen bez zvuku). |
Odpověď: | Váš počítač je příliš pomalý, nebo máte vadný ovladač zvukové karty. Prostudujte si dokumentaci, abyste zjistili, zda nemůžete zvýšit výkon. |
Otázka: | Jak mohu použít dmix spolu s MPlayerem? |
Odpověď: | Poté co nastavíte asoundrc musíte použít -ao alsa:device=dmix. |
Otázka: | Nemám zvuk při přehrávání videa a dostanu chybovou zprávu podobnou této: AO: [oss] 44100Hz 2ch Signed 16-bit (Little-Endian) audio_setup: Nelze otevřít audio zařízení /dev/dsp: Zařízení nebo rozhraní je již používáno nelze otevřít/inicializovat audio zařízení -> BEZ ZVUKU Audio: bez zvuku!!! Začínám přehrávat...
|
Odpověď: | Máte spuštěno KDE nebo GNOME s aRts nebo ESD zvukovým démonem? Zkuste zakázat zvukový démon, nebo použijte volbu -ao arts nebo -ao esd, aby MPlayer použil aRts nebo ESD. Možná provozujete ALSA bez OSS emulace, zkuste nahrát jaderné moduly pro ALSA OSS, nebo nařiďte použití výstupního rozhraní ALSA přidáním volby -ao alsa do příkazového řádku. |
Otázka: | Pokus spustím MPlayer pod KDE, dostanu pouze černou obrazovku a nic se neděje. Asi po minutě se video spustí. |
Odpověď: | Zvukový démon KDE aRts blokuje zvukové zařízení. Buď čekejte až se video spustí, nebo zakažte démona aRts v ovládacím centru. Chcete-li použít aRts zvuk, nastavte výstup zvuku přes naše nativní aRts zvukové rozhraní (-ao arts). Pokud selže, nebo není zakompilováno, zjuste SDL (-ao sdl). Ujistěte se však, že vaše SDL umí pracovat s aRts zvukem. Další možností je spustit MPlayer s artsdsp. |
Otázka: | Mám problémy s A/V synchronizací. Některé mé AVI hrají dobře, ale některé s dvojnásobnou rychlostí! |
Odpověď: |
Máte vadnou zvukovou kartu nebo její ovladač. Nejspíš je pevně nastavena na
44100Hz a vy se pokoušíte přehrát soubor s 22050Hz zvukem. Zkuste zvukový filtr
|
Otázka: | Když přehrávám tento soubor, rozjede se mi zvuk s obrazem a/nebo MPlayer havaruje s hláškou: DEMUXER: Too many (945 in 8390980 bytes) video packets in the buffer! nebo DEMUXER: Příliš mnoho (945 v 8390980 bytech) video paketů ve vyrovnávací paměti!
|
Odpověď: | To může mít několik příčin.
|
Otázka: | Jak se zbavím A/V desynchronizace při převíjení v RealMedia proudech? |
Odpověď: | -mc 0.1 může pomoci. |
8.6. Přehrávání DVD | |
| |
Otázka: | Což takhle DVD navigace/nabídky? |
Odpověď: | MPlayer nepodporuje DVD nabídky díky závažným omezením svého návrhu znemožňujícím správné nakládání se stabilními obrázky a interaktivním obsahem. Pokud chcete mít své oblíbené nabídky (menu), budete muset použít jiný přehrávač jako xine, vlc nebo Ogle. Pokud chcete mít DVD navigaci v MPlayeru, musíte si ji naprogramovat, ale uvědomte si, že to bude velká akce. |
Otázka: | Nepřehraji žádná současná DVD od Sony Pictures/BMG. |
Odpověď: | To je normální; byli jste podfouknuti a prodali vám uměle defektní disk. Jediný způsob, jak přehrávat tato DVD je obcházet špatné bloky na disku použitím DVDnav místo mpdvdkit2. Toho lze dosáhnout kompilací MPlayeru s podporou DVDnav a následně záměnou dvd:// za dvdnav:// na příkazovém řádku. DVDnav se zatím vzájemně vylučuje s mpdvdkit2, takže musíte configure skriptu předat volbu --disable-mpdvdkit. |
Otázka: | Co takhle titulky? Umí je MPlayer zobrazovat? |
Odpověď: | Ano. Viz kapitola DVD. |
Otázka: | Jak nastavím kód regionu na mé DVD mechanice? Nemám Windows! |
Odpověď: | Použijte nástroj regionset. |
Otázka: | Nemohu přehrát DVD, MPlayer skončí nebo vypíše chyby "Encrypted VOB file!". |
Odpověď: | CSS dešifrovací kód nepracuje s některými DVD mechanikami, pokud správně nenastavíte kód regionu. Viz odpověď na předchozí otázku. |
Otázka: | Musím být (setuid) root, abych mohl(a) přehrávat DVD? |
Odpověď: | Ne. Ačkoli musíte mít příslušná práva k souboru DVD zařízení (v /dev/). |
Otázka: | Je možné přehrát/enkódovat pouze vybrané kapitoly? |
Odpověď: | Ano, vyzkoušejte volbu -chapter. |
Otázka: | Přehrávání DVD je zdlouhavé! |
Odpověď: | Použijte volbu -cache (popsanou v man stránce) a zkuste zapnout DMA pro DVD mechaniku pomocí nástroje hdparm (popsaného v CD kapitole). |
Otázka: | Zkopíroval(a) jsem DVD pomocí vobcopy. Jak jej mohu přehrát/enkódovat z harddisku? |
Odpověď: | Použijte volbu -dvd-device pro nastavení adresáře, které obsahují soubory:
mplayer dvd://1 -dvd-device
|
8.7. Požadavky na vlastnosti | |
Otázka: | Pokud je MPlayer v pauze a já se pokusím převíjet, nebo stisknu jakoukoli klávesu, MPlayer se odpauzuje. Rád(a) bych převíjel(a) film v pauze. |
Odpověď: | Je velmi choulostivé zavést tuto vlastnost bez ztráty A/V synchronizace. Všechny pokusy zatím selhaly, ale patche jsou vítány. |
Otázka: | Rád(a) bych převíjel(a) o +/- 1 snímek místo o 10 sekund. |
Odpověď: | Můžete se posunout o jedno pole vpřed stiskem .. Pokud není film pauzován, zapauzuje se pak (detaily viz man stránka). Krokování zpět pravděpodobně nebude v dohledné době implementováno. |
8.8. Enkódování | |
| |
Otázka: | Jak mohu enkódovat? |
Odpověď: | Přečtěte si sekci MEncoder. |
Otázka: | Jak mohu "nahrát" celý DVD titul do souboru? |
Odpověď: | Jakmile jste vybrali svůj titul a ujistili se, že jej lze dobře přehrát MPlayerem, použijte volbu -dumpstream. Například:
mplayer dvd://5 -dumpstream -dumpfile
nahraje 5. titul z DVD do souboru
|
Otázka: | Jak vytvořím (S)VCD automaticky? |
Odpověď: | Zkuste skript mencvcd.sh z podadresáře TOOLS. Pomocí něj můžete enkódovat DVD nebo jiné filmy do VCD nebo SVCD formátu a dokonce je vypálit přímo na CD. |
Otázka: | Jak vytvořím (S)VCD? |
Odpověď: | Novější verze MEncoderu umí přímo generovat MPEG-2 soubory, které mohou být použity jako základ pro vytvoření VCD nebo SVCD a měly by být přehratelné jak jsou na všech platformách (například pro sdílení videa z digitálního kamkodéru se svými počítačově negramotnými přáteli). Více informací naleznete v sekci Použití MEncoderu pro vytvoření VCD/SVCD/DVD-kompatibilních souborů. |
Otázka: | Jak spojím dva video soubory? |
Odpověď: | MPEGy mohou být spojeny do jediného souboru s trochou štěstí přímo. Pro AVI soubory můžete využít podporu pro více souborů v MEncoderu takto: mencoder -ovc copy -oac copy -o To však bude pracovat pouze tehdy, mají-li soubory stejné rozlišení a používají stejný kodek. Také můžete zkusit avidemux a avimerge (součást sady nástrojů transcode). |
Otázka: | Jak mohu opravit AVI soubory s vadným indexem nebo prokládáním? |
Odpověď: | Abyste se zbavili nutnosti používat -idx pro zprovoznění převíjení v AVI souborech s vadným indexem nebo -ni pro přehrávání špatně prokládaných souborů, použijte příkaz mencoder který zkopíruje video a audio proudy do nového AVI souboru, přičenž vygeneruje správný index a správně uloží data (opraví proklad). Tento způsob samozřejmě nedokáže odstranit chyby ve video a/nebo audio proudech. |
Otázka: | Jak mohu opravit poměr stran videa v AVI souboru? |
Odpověď: | Poměr stran lze opravit díky volbě MEncoderu -force-avi-aspect, která přepíše poměr stran uložený v AVI OpenDML vprp hlavičce. Například: mencoder
|
Otázka: | Jak mohu zálohovat a enkódovat VOB soubor s poškozeným začátkem? |
Odpověď: | Hlavní problém, když chcete enkódovat VOB soubor, který je poškozen [3], je to, že bude velmi těžké získat enkódovaný soubor s perfektní A/V synchronizací. Jedna z možností je vystřihnout poškozenou část a enkódovat jen čistou část. Nejdřív musíte zjistit, kde čistá část začíná: mplayer Pak můžete vytvořit nový soubor obsahující pouze bezchybnou část: dd if=
|
Otázka: | Nemohu zakódovat DVD titulky do AVI! |
Odpověď: | Musíte správně nastavit volbu -sid. |
Otázka: | Jak mohu enkódovat pouze některé kapitoly z DVD? |
Odpověď: | Použijte správně volbu -chapter, jako: -chapter 5-7. |
Otázka: | Zkouším pracovat s 2GB+ soubory na souborovém systému VFAT. Bude to fungovat? |
Odpověď: | Ne, VFAT nepodporuje 2GB+ soubory. |
Otázka: | Co znamenají čísla na stavovém řádku během enkódování? |
Odpověď: | Příklad: Pos: 264.5s 6612f ( 2%) 7.12fps Trem: 576min 2856mb A-V:0.065 [2126:192]
|
Otázka: | Jakto že je doporučený datový tok vypisovaný MEncoderem záporný? |
Odpověď: | Protože datový tok při kterém enkódujete audio je příliš velký, aby se film vešel na jakékoli CD. Ověřte si, že máte dobře nainstalovaný libmp3lame. |
Otázka: | Nemohu kompilovat ASF soubor do AVI/MPEG-4 (DivX) protože používá 1000 fps. |
Odpověď: | Protože ASF používá variabilní snímkovou rychlost zatímco AVI pevnou, musíte ji nastavit ručně pomocí volby -ofps. |
Otázka: | Jak vložím titulky do výstupního souboru? |
Odpověď: | Jen přidejte volbu -sub <soubor> (nebo obdobně volbu -sid) do příkazového řádku MEncoderu. |
Otázka: | Jak zakóduji pouze zvuk z hudebního videa? |
Odpověď: | Přímo to není možné, ale můžete zkusit toto (všimněte si & na konci příkazu mplayer): mkfifo Toto vám umožňuje použít jakýkoli enkodér, ne jen LAME, jen zaměňte lame svým oblíbeným enkodérem zvuku v příkazu výše. |
Otázka: | Proč přehrávače třetích stran selhávají při přehrávání MPEG-4 filmů enkódovaných MEncoderem pozdější verze než 1.0pre7? |
Odpověď: |
mencoder
Poznamenejme, že takto nastavíte FourCC na XVID spíše než DIVX.
Toto doporučujeme, protože DIVX FourCC znamená DivX4, což je velmi jednoduchý
MPEG-4 kodek, zatímco jak DX50, tak XVID jsou plnohodnotné MPEG-4 (ASP).
Takže pokud nastavíte FourCC na DIVX, nekteré špatné softwarové nebo
hardwarové přehrávače si mohou vylámat zuby na pokročilýchvlastnostech, které
|
Otázka: | Jak mohu enkódovat soubor jen se zvukem? |
Odpověď: | Použijte aconvert.sh z podadresáře TOOLS ve zdrojových kódech MPlayeru. |
Otázka: | Jak mohu přehrát titulky zabudované v AVI? |
Odpověď: | Použijte avisubdump.c z podadresáře TOOLS, nebo si přečtěte tento dokument o extrakci/demultiplexování titulků zabudovaných v OpenDML AVI souborech. |
Otázka: | MPlayer neumí... |
Odpověď: | Proberte se podadresářem TOOLS, ve kterém naleznete řadu skriptů a udělátek. Dokumentaci k nim naleznete v souboru TOOLS/README. |
[3] Navíc některé formy ochrany proti kopírování používané na DVD mohou být považovány za poškození obsahu.
Dobrá hlášení chyb jsou velmi cenným příspěvkem do vývoje jakéhokoli softwarového projektu. Ale je to s nimi jako se psaním dobrého programu, sepsání dobrého hlášení problému vyžaduje trochu práce. Prosím berte na vědomí, že většina vývojářů je velmi zaneprázdněna a dostává kvanta e-mailů. Takže ačkoli je vaše zpětná vazba kritická pro vylepšování MPlayeru a velmi ceněná, prosíme pochopte, že musíte poskytnout veškeré informace které požadujeme a postupovat přesně podle instrukcí v tomto dokumentu.
V případě že jste nalezli exploitovatelnou chybu, chtěli byste udělat správnou věc a nechali nás ji opravit než ji odhalíte, budeme rádi, když nám pošlete bezpečnostní hlášení na [email protected]. Do hlavičky prosíme přidejte [SECURITY] nebo [ADVISORY]. Ujistěte se, že vaše hlášení obsahuje úplnou a podrobnou analýzu chyby. Zaslání opravy je velice žádoucí. Prosíme neodkládejte hlášení do doby než vytvoříte 'dokazovací' exploit, ten nám můžete zaslat dalším mailem.
Pokud si myslíte, že máte potřebné schopnosti, pak vás vybízíme abyste opravil(a) chybu samostatně. Nebo jste to již udělal(a)? Přečtěte si prosím tento krátký dokument, abyste se dozvěděli jak zahrnout váš kód do MPlayeru. Lidé z konference MPlayer-dev-eng vám pomohou, pokud budete mít otázky.
Občas nastane problém typu 'předtím to fungovalo, teď už ne...'. Zde přinášíme postup krok za krokem, jak vyhledat, kdy problém nastal. Toto není určeno příležitostným uživatelům.
Nejprve si musíte opatřit zdrojové kódy MPlayeru ze Subversion. Instrukce lze nalést v sekci Subversion stránky download.
Tak dostanete v adresáři mplayer/ obraz Subversion stromu na straně klienta. Nyní aktualizujte tento obraz k datu, které chcete:
cd mplayer/ svn update -r {"2004-08-23"}
Formát data je YYYY-MM-DD HH:MM:SS. Požití tohoto datového formátu zajišťuje, že budete schopni extrahovat patche podle data, kdy byly zapsány (commit) stejně, jak jsou v MPlayer-cvslog archivu.
A teď proveďte sestavení jako při normální aktualizaci:
./configure make
Pokud to čte nějaký neprogramátor, nejrychlejší metodou, jak se dostat k bodu, kde problém nastal, je použití binárního vyhledávání – to je vyhledávání data poruchy opakovaným dělením vyhledávacího intervalu napůl. Například pokud problém nastal v 2003, začneme v polovině roku a ptáme se, „Už je tu problém?“. Pokud ano, vraťte se na prvního dubna; pokud ne, běžte na prvního října a tak dále.
Pokud máte spoustu místa na disku (plná kompilace obvykle zabírá 100 MB a kolem 300–350 MB, pokud jsou zapnuty debugovací symboly), zkopírujte nejstarší známou funkční verzi před jejím updatem; to vám ušetří čas, pokud se budete vracet. (Obvykla je nutné spustit 'make distclean' před rekompilací starší verze, takže pokud si neuděláte záložní kopii originálního zdrojového stromu, budete v něm muset rekompilovat vše, až se vrátíte do současnosti.)
Pokud jste našli den, kdy k problému došlo, pokračujte v hledání pomocí archivu mplayer-cvslog (řazeného podle data) a preciznějším cvs update s uvedením hodiny, minuty a sekundy:
cvs update -PAd -D "2004-08-23 15:17:25"
To vám umožní lehce najít patch, který problém způsobil.
Pokud jste našli patch, který je příčinou problému, máte téměř vyhráno; ohlaste to do MPlayer Bugzilly nebo se přihlaste do MPlayer-users a pošlete to tam. Je šance, že autor navrhne opravu. Rovněž si můžete patch rozpitvat, dokud z něj nevytlučete, kde je chyba :-).
Nejprve, prosím, vyzkoušejte poslední Subversion verzi MPlayeru, jelikož vaše chyba již mohla být odstraněna. Vývoj je velmi rychlý, většina chyb v oficiálních balíčcích je nahlášena během několika dnů, nebo dokonce hodin, takže prosím používejte pouze Subversion pro hlášení chyb. To zahrnuje binární balíčky MPlayeru. Subversion instrukce naleznete na konci této stránky, nebo v souboru README. Pokud to nepomůže, prostudujte si prosím seznam známých chyb a zbytek dokumentace. Pokud je váš problém neznámý nebo jej nelze řešit pomocí našich instrukcí pak jej nahlaste jako chybu.
Prosíme, neposílejte hlášení chyb soukromě jednotlivým vývojářům. Toto je týmová práce a proto se o ně může zajímat více lidí. Čas od času měli ostatní uživatelé stejný problém a vědí jak jej obejít, dokonce i když se jedná o chybu v kódu MPlayeru.
Prosíme popište svůj problém tak podrobně, jak je to jen možné. Proveďte malé pátrání po okolnostech za kterých problém nastává. Projevuje se ta chyba jen v určitých situacích? Je vlastní určitým souborům nebo typům souborů? Stává se pouze s jedním kodekem, nebo je nezávislá na použitém kodeku? Dokážete ji zopakovat se všemi výstupními rozhraními nebo ovladači? Čím více nám poskytnete informací, tím je větší šance na odstranění problému. Nezapomeňte také připojit hodnotné informace požadované níže, jinak nebudeme schopni stanovit příčinu problému.
Skvělá, dobře napsaná příručka jak se ptát ve veřejných konferencích je How To Ask Questions The Smart Way od Erica S. Raymonda. Další příručka je How to Report Bugs Effectively od Simona Tathama. Pokud budete postupovat podle těchto rad, jistě se vám dostane pomoci. Pochopte však, že my všichni sledujeme konference dobrovolně ve svém volném čase. Máme mnoho práce a nemůžeme vám zaručit že vyřešíme váš problém nebo že vůbec dostanete odpověď.
Přihlaste se do e-mailové konference MPlayer-users: http://lists.mplayerhq.hu/mailman/listinfo/mplayer-users a pošlete své hlášení o chybách na adresu mailto:[email protected] kde o tom můžeme diskutovat.
Pokud chcete, můžete místo toho použít zbrusu novou Bugzillu.
Jazykem konference je Angličtina. Zachovávejte prosím Pravidla Netikety a neposílejte HTML mail do žádné z našich konferencí. Jinak můžete být ignorováni nebo vyhozeni. Pokud nevíte co je to HTML mail, nebo proč je tak zatracován, přečtěte si tento výborný dokument. Zde se dovíte detaily včetně instrukcí pro vypnutí HTML. Poznamenejme též, že nebudeme individuálně dělat CC (kopie) lidem, takže je dobré se přihlásit, abyste obdrželi svou odpověď.
Bude potřeba připojit log, konfiguraci nebo vzorky souborů ke svému hlášení chyb. Pokud jsou některé z nich opravdu velké, pak je raději nahrajte na náš HTTP server v komprimovaném formátu (preferujeme gzip a bzip2) a do zprávy zahrňte pouze cestu a název souboru. Naše konference mají limit velikosti zprávy 80k, pokud máte něco většího, musíte to zkomprimovat a nahrát na FTP.
Vaše Linuxová distribuce nebo operační systém a jeho verze jako:
Red Hat 7.1
Slackware 7.0 + devel packs from 7.1 ...
verze jádra:
uname -a
verze libc:
ls -l /lib/libc[.-]*
verze gcc a ld:
gcc -v ld -v
verze binutils:
as --version
Pokud máte problémy s celoobrazovkovým režimem:
Druh Window manageru a jeho verze
Pokud máte problémy s XVIDIX:
Hloubka barev v X:
xdpyinfo | grep "depth of root"
Pokud je chybné pouze GUI:
verze GTK
verze GLIB
GUI situace kdy se chyba projevila
CPU info (to funguje pouze v Linuxu):
cat /proc/cpuinfo
Výrobce a model videokarty, např:
ASUS V3800U chip: nVidia TNT2 Ultra pro 32MB SDRAM
Matrox G400 DH 32MB SGRAM
Typ video ovladače a jeho verze, např.:
vestavěný ovladač z X
nVidia 0.9.623
Utah-GLX CVS 2001-02-17
DRI z X 4.0.3
Typ zvukové karty a ovladač, např.:
Creative SBLive! Gold s OSS ovladačem od oss.creative.com
Creative SB16 s OSS ovladači z jádra
GUS PnP s ALSA OSS emulací
Pokud si nejste jisti a používáte systém Linux, přidejte výstup z lspci -vv.
Pokud nastanou chyby během běhu ./configure, nebo selže autodetekce něčeho, prostudujte config.log. Možná naleznete odpověď zde. Například několik verzí stejné knihovny v systému, nebo jste zapomněli nainstalovat vývojový (devel) balíček (to jsou ty s koncovkou -dev). Pokud si myslíte, že je zde chyba, přidejte config.log do svého hlášení.
Zahrňte prosíme výstup MPlayeru v upovídaném režimu úrovně 1 ale dejte pozor, abyste jej nezkrátili při kopírování do mailu. Vývojáři potřebují všechny zprávy pro dobrou diagnózu problému. Takto můžete přesměrovat výstup do souboru:
mplayer -vvolby
film
> mplayer.log 2>&1
Pokud se problém vztahuje k jednomu nebo více souborům, pak prosím nahrajte potížisty na: http://streams.videolan.org/upload/
Rovněž zde nahrajte malý textový soubor se stejným základním jménem a příponou .txt. Popište problém který máte s daným souborem a připojte svůj e-mail a také výstup MPlayeru v upovídaném režimu úrovně 1. Pro reprodukci problému stačí obvykle prvních 1-5 MB souboru, ale pro jistotu vás žádáme o:
dd if=váš_soubor
of=malý_soubor
bs=1024k count=5
To vezme prvních pět megabajtů 'vašeho_souboru' a zapíše je do 'malého_souboru'. Pak znovu zkuste tento malý vzorek a pokud se na něm chyba projeví, pak je tento vzorek pro nás dostatečný. Prosíme nikdy neposílejte tyto soubory e-mailem! Nahrajte je na FTP a pošlete pouze cestu/název_souboru daného souboru na FTP serveru. Pokud je soubor přístupný na internetu, pak stačí poslat přesnou adresu URL.
Musíte spustit MPlayer z gdb a poslat nám úplný výstup nebo pokud máte core dump z pádu, můžete nám vyextrahovat užitečné informace ze souboru Core. Jak to udělat:
Překompilujte MPlayer se zapnutým debugovacím kódem:
./configure --enable-debug=3 make
a spusťte MPlayer z gdb pomocí:
gdb ./mplayer
Nyní jste v gdb. Zadejte:
run -vvolby-pro-mplayer
soubor
a zopakujte pád. Jakmile to dokážete, vrátí se gdb do režimu příkazového řádku, kde musíte zadat
bt disass $pc-32,$pc+32 info all-registers
Pokud jste vytvořili příkladné hlášení chyby pomocí výšeuvedených kroků a jste si jisti, že chyba je v MPlayeru, nikoli v kompilátoru nebo poškozený soubor, již jste si přečetli dokumentaci, ale nenalezli řešení, vaše ovladače zvuku jsou OK, pak byste se měli přihlásit do konference MPlayer-advusers a poslat hlášení chyb zde, abyste dostali lepší a rychlejší odpověď.
Mějte na paměti, že pokud zde pošlete nováčkovské otázky nebo otázky zodpovězené v manuálu, budete ignorováni nebo peskováni, místo abyste dostali vhodnou odpověď. Takže nám nenadávejte a přihlaste se do -advusers pouze pokud opravdu víte co děláte a cítíte se být pokročilým uživatelem MPlayeru, nebo vývojářem. Pokud splňujete tato kritéria, nebude pro vás těžké se přihlásit...
Nemá to sice nic společného s formátem skinu, ale měli byste vědět, že MPlayer nemá vestavěný skin, takže si musíte alespoň jeden skin nainstalovat, chcete-li používat GUI.
Adresáře prohledávané na skiny jsou (v tomto pořadí):
$(DATADIR)/skins/
$(PREFIX)/share/mplayer/skins/
~/.mplayer/skins/
Poznamenejme, že první z cest se může lišit podle toho, jak je MPlayer zkonfigurován (viz volby configure skriptu --prefix a --datadir).
Každý skin je instalován do vlastního adresáře v některém z výše uvedených. Například:
$(PREFIX)/share/mplayer/skins/default/
Obrázky musí být truecolor (24 nebo 32 bpp) PNG.
V hlavním okně a v přehrávači (viz níž) můžete použít obrázky s 'průhledností': Oblasti vyplněné barvou #FF00FF (magenta) jsou plně průhledné, pokud jsou zobrazovány MPlayerem. To znamená, že můžete mít tvarovaná okna, pokud má váš X server XShape rozšíření.
Skiny mají poměrně volný formát (narozdíl například od pevného formátu skinů Winampu/XMMS), takže je jen na vás, zda vytvoříte něco skvělého.
V současnosti jsou zde čtyři okna, která můžete dekorovat: hlavní okno, podokno, ovládací panel a nabidka (tu lze aktivovat pravým myšítkem).
MPlayer je ovládán v hlavním okně a/nebo v ovládacím panelu. Pozadím okna je obrázek. Následující součásti mohou (a musí) být umístěny v okně: tlačítka, potenciometry (šoupátka) a popisky. Každé součásti musíte nastavit pozici a velikost.
A tlačítko má tři stavy (stisknuto, puštěno a zakázáno), proto musí být jeho obraz svisle rozdělen do tří částí. Detaily viz součást tlačítko.
A potenciometr (hlavně používaný pro lištu převíjení a ovládání hlasitosti/stereováhy) může mít libovolný počet fází dělících jeho obraz na jednotlivé části pod sebou. Detaily viz hpotenciometr.
Popisky jsou poněkud zvláštní: Znaky potřebné pro jejich vykreslení jsou brány z obrazového souboru a znaky v obrázku jsou popsány souborem popisu fontu. Tento (druhý) soubor je prostý textový soubor, který popisuje pozici x,y a velikost každého znaku v obrázku (obrázkový soubor a soubor popisu fontu spolu tvoří font). Detaily viz dlabel.
Všechny obrázky mohou mít plnou průhlednost, jak je popsána v sekci o formátech obrázků. Pokud X server nepodporuje rozšíření XShape, budou průhledné části černé. Pokud byste chtěli využít tuto vlastnost, musí být šířka pozadí hlavního okna celočíselně dělitelná 8.
Podokno je to okno, kde se zobrazuje film. Může v něm být zobrazen určený obrázek, pokud není načten žádný film (je docela únavné, pokud zde není nic :-)). Poznámka: průhlednost zde není povolena.
Nabídka je jen způsob, jak ovládat MPlayer položkami menu. Vyžadovány jsou dva obrázky: jeden z nich jako menu v normálním stavu a druhý se zvýrazněnými položkami. Když pak vyvoláte menu, je zobrazen první obrázek. Při pohybu myší přes položky, je zkopírována aktuálně vybraná položka z druhého obrázku přes ten první pod kursorem (druhý obrázek není nikdy zobrazen celý).
Položka menu je definována svou pozicí a velikostí v obrázku (detaily viz sekce nabídka).
Jednu důležitou věc jsme ještě nezmínili: Mají-li tlačítka, potenciometry a položky menu pracovat, musí MPlayer vědět, co má udělat, pokud je na ně kliknuto. To je zajištěno pomocí zpráv (událostí). Pro tyto členy tedy musíte definovat zprávy, které budou při kliku generovány.
Pro výrobu skinu budete potřebovat následující:
Konfigurační soubor jménem skin řekne MPlayeru, jak má dát jednotlivé části skinu dohromady a co udělat, kliknete-li někde v okně.
Obrázek pozadí hlavního okna.
Obrázky položek hlavního okna (včetně jednoho nebo více souborů s popisem fontu pro vykreslování popisek).
Obrázek pro zobrazení v podokně (volitelný).
Dva obrázky pro nabídku (ty jsou potřeba pouze pokud chcete vytvořit menu).
S výjimkou konfiguračního souboru skinu si můžete pojmenovat ostatní soubory jak chcete (s tím, že vaše soubory s popisem fontu budou mít příponu .fnt).
Jak jsme již řekli, je to konfigurační soubor skinu. Soubor je řádkově
orientován; řádky s komentářem začínají znakem ';
'
(před ním jsou povoleny jen mezery a tabulátory).
Soubor je složen ze sekcí. Každá sekce popisuje skin pro aplikaci a má následující formu:
section = název cekce
.
.
.
end
Zatím máme jen jednu aplikaci, takže potřebujete jen jednu sekci: její název je movieplayer.
Uvnitř sekce je každé okno posáno blokem, který má následující formu:
window = název okna
.
.
.
end
kde název okna
může být jeden z těchto řetězců:
main - pro hlavní okno
sub - pro podokno
menu - pro nabídku
playbar - ovládací panel
(Bloky sub a menu jsou volitelné - nemusíte vytvářet nabídku nebo vyzdobit podokno.)
Uvnitř window bloku můžete definovat každou položku okna řádkem v tomto tvaru:
položka = parametr
Kde položka
je řetězec označující typ položky GUI a
parametr
je číselná nebo textová hodnota (nebo seznam hodnot
oddělených čárkami).
Dáte-li to všechno dohromady, celý soubor vypadá asi takto:
section = movieplayer window = main ; ... položky hlavního okna ... end window = sub ; ... položky podokna ... end window = menu ; ... položky menu ... end window = playbar ; ... položky ovládacího panelu ... end end
Jméno souboru s obrázkem musí být zadáno bez úvodních adresářů - obrázky jsou
vyhledávány v adresáři skins.
Měli byste (ale nemusíte) zadat příponu souboru. Pokud soubor neexistuje,
zkouší MPlayer načíst soubor
<jméno>.<příp>, kdy jsou za
<příp> zkoušeny přípony png
a PNG
(v tomto pořadí). Použitý bude první vyhovující soubor.
Aby bylo vše jasné, uvedeme příklad. Řekněme, že máte obrázek jménem main.png, který použijeme pro hlavní okno:
base = main, -1, -1
MPlayer se pokusí nahrát soubory main, main.png, main.PNG.
Nakonec několik slov o pozicování. Hlavní okno a podokno lze
umístit do odlišných rohů obrazovky zadáním souřadnic X
a Y
. 0
horní nebo levý,
-1
je střed a -2
je vpravo nebo dole, jak
je vidět na obrázku:
(0, 0)----(-1, 0)----(-2, 0) | | | | | | (0,-1)----(-1,-1)----(-2,-1) | | | | | | (0,-2)----(-1,-2)----(-2,-2)
Níže uvádíme seznam položek, které mohou být použity v blocích
'window = main
' ... 'end
',
a 'window = playbar
' ... 'end
'.
decoration = enable|disable
Zapne (enable) nebo vypne (disable) dekoraci hlavního okna, produkovanou okenním manažerem. Výchozí je disable.
V okně display to nefunguje, není to potřeba.
base = obrázek, X, Y
Umožňuje nastavit obrázek pozadí hlavního okna. Okno bude vykresleno na
zadaných souřadnicích X,Y
na obrazovce a bude mít velikost
obrázku.
Tyto koordináty zatím nefungují pro okno display.
Průhledné oblasti v obrázku (obarvené #FF00FF) budou černé na X serverech bez XShape rozšíření. Šířka obrázku musí být celočíselně dělitelná 8.
button = obrázek, X, Y, šířka, výška, zpráva
Umístí tlačítko rozměru šířka
* výška
na pozici X,Y
. Zadaná zpráva
je
generována při kliku na tlačítko. Zadaný obrázek
musí
mít tři části pod sebou (odpovídající možným stavům tlačítka) takto:
+------------+ | stisknuto | +------------+ | uvolněno | +------------+ | zakázáno | +------------+
hpotmeter = tlačítko, tšířka, tvýška, fáze, počet_fází, výchozí, X, Y, šířka, výška, zpráva
vpotmeter = tlačítko, tšířka, tvýška, fáze, počet_fází, výchozí, X, Y, šířka, výška, zpráva
Umístí vodorovný (hpotmeter) nebo svislý (vpotmeter) potenciometr velikosti
šířka
* výška
na pozici
X,Y
. Obrázek může být rozdělen do různých částí pro různé
fáze potenciometru (Například můžete mít potenciometr pro nastavení hlasitosti,
jehož dráha se barví ze zelené na červenou, jak se jeho hodnota mění od nejmenší
do největší.). hpotmeter
může mít táhlo, které může být
vodorovně taženo. Význam parametrů:
tlačítko
- obrázek, který se použije pro
tlačítko (musí mít tři části pod sebou, stejně jako v případě tohoto
tlačítka)
tšířka
, tvýška
-
velikost tlačítka
fáze
- obrázek použitý pro různé fáze
hpotmetru. Pokud žádný obrázek nechcete, můžete použít speciální hodnotu
NULL
. Obrázek musí být rozdělen svisle na
počet_fází
částí takto:
+------------+ | fáze #1 | +------------+ | fáze #2 | +------------+ ... +------------+ | fáze #n | +------------+
numphases
- number of phases stored in the
počet_fází
- počet fází uložených v
obrázku fáze
výchozí
- výchozí hodnota pro hpotmeter
(v rozsahu 0
až 100
)
X
, Y
- pozice pro hpotmeter
šířka
, výška
- šířka a výška
hpotmeter
u
zpráva
- zpráva generovaná při změně
hodnoty hpotmeter
u
font = soubor_fontu, id_fontu
Definuje font. soubor_fontu
je jméno souboru popisu fontu
s příponou .fnt (zde příponu nezadávejte).
id_fontu
je použit jako ukazatel na font
(viz dlabel
a slabel). Definováno může být více než 25 fontů.
slabel = X, Y, id_fontu, "text";
Umístí statický popisek na pozici X,Y
.
text
je zobrazen fontem identifikovaným pomocí
id_fontu
. Text je surový řetězec
($x
proměnné nefungují), který musí být uzavřen
ve dvojitých uvozovkách (ale znak " nesmí být součástí textu).
Popisek je zobrazen fontem identifikovaným pomocí id_fontu
.
dlabel = X, Y, délka, zarovnání, id_fontu, "text"
Umístí dynamický popisek na pozici X,Y
. Popisek je
dynamický proto, že je jeho text periodicky obnovován. Maximální délka
popisku je nastavena na délka
(jeho výškou je výška
znaku). Pokud je zobrazovaný text širší, pak bude rolován,
jinak bude zarovnán do určeného prostoru podle hodnoty parametru
zarovnání
: 0
je zarovnání vpravo,
1
na střed, 2
vlevo.
Text k zobrazení je zadán parametrem text
: Musí být uzavřen
do dvojitých uvozovek (ale znak " nesmí být součástí textu).
Popisek je zobrazen fontem identifikovaným pomocí id_fontu
.
V textu můžete použít tyto proměnné:
Proměnná | Význam |
---|---|
$1 | čas přehrávání ve formátu hh:mm:ss |
$2 | čas přehrávání ve formátu mmmm:ss |
$3 | čas přehrávání ve formátu hh (hodiny) |
$4 | čas přehrávání ve formátu mm (minuty) |
$5 | čas přehrávání ve formátu ss (sekundy) |
$6 | délka filmu ve formátu hh:mm:ss |
$7 | délka filmu ve formátu mmmm:ss |
$8 | čas přehrávání ve formátu h:mm:ss |
$v | hlasitost ve formátu xxx.xx% |
$V | hlasitost ve formátu xxx.x |
$U | hlasitost ve formátu xxx |
$b | stereováha ve formátu xxx.xx% |
$B | stereováha ve formátu xxx.x |
$D | stereováha ve formátu xxx |
$$ | znak $ |
$a | znak podle typu audia (žádné: n ,
mono: m , stereo: t ) |
$t | číslo stopy (v playlistu) |
$o | název souboru |
$f | název souboru malými písmeny |
$F | název souboru velkými písmeny |
$T | znak podle typu datového proudu (soubor: f ,
Video CD: v , DVD: d ,
URL: u )
|
$p | znak p (pokud přehráváte soubor a font obsahuje znak p) |
$s | znak s character (pokud přehráváte soubor a font obsahuje znak s) |
$e | znak e (pokud je přehrávání pozastaveno a font obsahuje znak e) |
$x | šířka filmu |
$y | výška filmu |
$C | název použitého kodeku |
Proměnné $a, $T, $p, $s
a $e
vracejí znaky, které by měly být zobrazovány jako speciální symboly
(například, e vrací symbol pauza, který obvykle vypadá
jako ||). Měli byste mít font pro normální znaky a
jiný font pro symboly. Více informací viz sekce o
symbolech.
Následující vstupy mohou být použity v bloku
'window = sub
' . . . 'end
'.
base = obrázek, X, Y, šířka, výška
Obrázek, který bude zobrazen v okně. Okno se zobrazí na pozici zadané
souřadnicemi X,Y
na obrazovce (0,0
je
levý horní roh). Můžete nastavit -1
pro střed a
-2
pro vpravo (X
) a dole
(Y
). Okno bude stejně velké jako obrázek.
šířka
a výška
udávají velikost okna; jsou volitelné (pokud chybí, má okno
rozměry shodné s obrázkem).
background = R, G, B
Umožňuje nastavit barvu pozadí. To je užitečné, pokud je obrázek menší než
okno. R
, G
a B
označují červenou, zelenou a modrou složku barvy
(každá z nich je dekadická hodnota 0 až 255).
Jak již bylo dříve řečeno, nabídka je zobrazena pomocí dvou obrázků. Normální
položky nabídky jsou brány z obrázku určeného položkou base
,
zatímco aktuálně zvolený vstup je brán z obrázku určeného položkou
selected
. Musíte definovat pozici a rozměr každé položky
nabídky.
Následující vstupy mohou být použity v bloku
'window = menu
'. . .'end
'.
Jak jsme již zmínili v sekci o částech skinu, font je definován obrázkem a souborem popisu. Můžete rozmístit znaky v obrázku libovolně, ale ujistěte se, že je jejich velikost a pozice je uvedena v souboru popisu přesně.
Soubor popisu fontu (s příponou .fnt) může obsahovat
řádky s komentářem začínající ';
'. Soubor musí obsahovat
řádek ve formě
image = obrázek
Kde
je název obrázku
použitého pro font (nemusíte zadávat příponu).
obrázek
"char" = X, Y, šířka, výška
Zde X
a Y
udávají pozici
char
znaku v obrázku (0,0
je levý
horní roh). šířka
a výška
jsou
rozměry znaku v pixelech.
Tento příklad definuje znaky A, B, C s použítím font.png.
; Zde může být jen "font" místo "font.png". image = font.png ; Tři znaky pro ilustraci stačí :-) "A" = 0,0, 7,13 "B" = 7,0, 7,13 "C" = 14,0, 7,13
Některé znaky mají speciální význam, jsou-li vráceny některou z proměnných
použitých v dlabel. Tyto znaky mají být
zobrazovány jako symboly, takže mohou být zobrazeny věci jako pěkné DVD logo
místo znaku 'd
' pro DVD datový proud.
Následující tabulka obsahuje znaky, které mohou být použity k zobrazení symbolů (a tudíž vyžadují odlišný font).
Znak | Symbol |
---|---|
p | play |
s | stop |
e | pauza |
n | bez zvuku |
m | mono zvuk |
t | stereo zvuk |
f | datový proud je soubor |
v | datový proud je Video CD |
d | datový proud je DVD |
u | datový proud je URL |
Tyto zprávy mohou být generovány tlačítky, potenciometry a položkami nabídky.
Prázdná zpráva, nemá žádný efekt (možná s výjimkou Subversion verzí :-)).
Ovládání přehrávání:
Zahájí přehrávání.
Zastaví přehrávání.
Skočí na předchozí stopu v playlistu.
Skočí na následující stopu v playlistu.
Otevře soubor (otevřením okna prohlížeče souborů, kde si soubor vyberete).
Stejné jako evLoad
, ale navíc se okamžitě spustí přehrávání
otevřeného souboru.
Otevře soubor se zvukem (pomocí prohlížeče souborů)
Otevře soubor s titulky (pomocí prohlížeče souborů)
Vypne aktuálně použité titulky.
Otevře/zavře okno playlistu.
Zkusí otevřít disk v zadané CD-ROM mechanice.
Zkusí otevřít disk v zadané DVD-ROM mechanice.
Zobrazí dialogové okno pro volbu URL.
Protiklad evPauseSwitchToPlay
. Tato zpráva zahájí přehrávání
a zobrazí obrázek pro tlačítko evPauseSwitchToPlay
(pro indikaci, že tlačítko může být stisknuto pro pozastavení přehrávání).
Tvoří přepínač společně s evPlaySwitchToPause
. Ty mohou
být použity k vytvoření tradičního play/pauza tlačítka. Obě zprávy by měly
být přiřazeny tlačítkům umístěným na stejné pozici v okně. Tato zpráva
pozastaví přehrávání a zobrazen bude obrázek pro
evPlaySwitchToPause
talčítko (pro indikaci, že tlačítko
může být stisknuto pro obnovení přehrávání).
Převíjení:
Převine zpět o 10 sekund.
Převine zpět o 1 minutu.
Převine zpět o 10 minut.
Převine vpřed o 10 sekund.
Převine vpřed o 1 minutu.
Převine vpřed o 10 minut.
Převine na danou pozici (může být přiřazeno potenciometru; použije se relativní hodnota (0-100%) potenciometru).
Ovládání videa:
Nastaví velikost okna filmu na poloviční velikost.
Nastaví velikost okna filmu na dvojnásobnou velikost.
Přepíná do celoobrazovkového režimu a zpět.
Nastaví velikost okna na normální velikost.
Ovládání zvuku:
Sníží hlasitost.
Zvýší hlasitost.
Nastaví hlasitost (může být sdruženo s potenciometrem; použije se relativní hodnota potenciometru (0-100%)).
Vypne/zapne zvuk.
Nastaví stereováhu (může být sdruženo s potenciometrem; použije se relativní hodnota potenciometru (0-100%)).
Zapne/vypne ekvalizér.
Různé:
Otevře okno o aplikaci.
Otevře okno předvoleb.
Otevře okno voliče skinů.
Minimalizuje okno.
Ukončí program.
Co když jste si přečetli o skinech pro GUI MPlayeru, odvedli to nejlepší s Gimpem a chcete nám poslat svůj skin? Přečtěte si pár návodů, abyste se vyhnuli běžným omylům a vytvořili vysoce kvalitní skin.
Chceme, aby skiny, které přidáme do našeho repozitáře odpovídaly určitým standardům kvality. Je zde také mnoho věcí, které můžete udělat, abyste nám ulehčili práci.
Za příklad si vemte skin Blue
.
Ten splňuje všechna kritéria od verze 1.5.
Ke každému skinu by měl být soubor README, obsahující informace o vás jako autorovi, o copyrightu a licenci a vše ostatní, co chcete dodat. Chcete-li mít changelog, tento soubor je dobrým místem.
Měl by tu být soubor VERSION neobsahující nic jiného, než číslo verze na jediném řádku (např. 1.0).
Horizontální a vertikální ovládání (posuvníky jako hlasitost nebo pozice) by měly mít střed knoflíku správně zarovnán na stred posuvníku. Mělo by být možné posouvat knoflík na oba konce posuvníku, ale ne za ně.
Jednotlivé součásti skinu by měly mít správné rozměry deklarované v souboru skin. Pokud to tak není, můžete kliknout mimo např. tlačítko a to se stejně stiskne, nebo kliknout na jeho plochu a nestisknout jej.
Soubor skin by měl být srovnán na znaky a neobsahovat tabulátory. Srovnán na znaky znamená, že se čísla budou rovnat do úhledných sloupců.