7.7. Použití MEncoderu pro vytvoření QuickTime-kompatibilních souborů

7.7.1. Proč by někdo chtěl vytvářet QuickTime-kompatibilní soubory?

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

7.7.2. QuickTime 7 omezení

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.

7.7.3. Ořez

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

7.7.4. Škálování

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

7.7.5. A/V synchronizace

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

7.7.6. Datový tok

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.

7.7.7. Příklad enkódování

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.

7.7.8. Přemuxování do MP4

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 Main@5.1, 8549.132 secs, 899 kbps, 848x352 @ 23.976001 fps
3       hint    Payload mpeg4-generic for track 1
4       hint    Payload H264 for track 2

7.7.9. Přidání stop s meta daty

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.