7.8. Použití MEncoderu k vytváření VCD/SVCD/DVD-kompatibilních souborů.

7.8.1. Omezení Formátů

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

7.8.1.1. Omezení Formátů

FormátRozlišeníV. kodecV. dat. tokVzork. kmitočetA. kodecA. dat. tokFPSPoměr stran
NTSC DVD720x480, 704x480, 352x480, 352x240MPEG-29800 kbps48000 HzAC–3,PCM1536 kbps (max)30000/1001, 24000/10014:3, 16:9 (pouze pro 720x480)
NTSC DVD352x240[a]MPEG-11856 kbps48000 HzAC–3,PCM1536 kbps (max)30000/1001, 24000/10014:3, 16:9
NTSC SVCD480x480MPEG-22600 kbps44100 HzMP2384 kbps (max)30000/10014:3
NTSC VCD352x240MPEG-11150 kbps44100 HzMP2224 kbps24000/1001, 30000/10014:3
PAL DVD720x576, 704x576, 352x576, 352x288MPEG-29800 kbps48000 HzMP2,AC–3,PCM1536 kbps (max)254:3, 16:9 (pouze pro 720x576)
PAL DVD352x288[a]MPEG-11856 kbps48000 HzMP2,AC–3,PCM1536 kbps (max)254:3, 16:9
PAL SVCD480x576MPEG-22600 kbps44100 HzMP2384 kbps (max)254:3
PAL VCD352x288MPEG-11152 kbps44100 HzMP2224 kbps254: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.

7.8.1.2. Omezení velikosti GOP

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.

7.8.1.3. Omezení datového toku

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

7.8.2. Výstupní volby

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.

7.8.2.1. Poměr stran

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

7.8.2.2. Zachování A/V synchronizace

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.

7.8.2.3. Převod vzorkovacího kmitočtu

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

7.8.3. Použití libavcodec pro enkódování VCD/SVCD/DVD

7.8.3.1. Úvodem

libavcodec můžete použít pro vytvoření videa kompatibilního s VCD/SVCD/DVD použitím příslušných voleb.

7.8.3.2. lavcopts

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.

7.8.3.3. Příklady

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

7.8.3.4. Pokročilé volby

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

7.8.4. Enkódování zvuku

VCD a SVCD podporují zvuk MPEG-1 layer II. Použít můžete toolame, twolame, nebo MP2 enkodér z libavcodecu. 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.

7.8.4.1. toolame

Pro VCD a SVCD:

-oac toolame -toolameopts br=224

7.8.4.2. twolame

Pro VCD a SVCD:

-oac twolame -twolameopts br=224

7.8.4.3. libavcodec

Pro DVD s 2 kanálovým zvukem:

-oac lavc -lavcopts acodec=ac3:abitrate=192

Pro DVD s 5.1 kanálovým zvukem:

-channels 6 -oac lavc -lavcopts acodec=ac3:abitrate=384

Pro VCD a SVCD:

-oac lavc -lavcopts acodec=mp2:abitrate=224

7.8.5. Spojení všeho dohromady

Tato sekce obsahuje kompletní příkazy pro vytvoření VCD/SVCD/DVD kompatibilních videí.

7.8.5.1. PAL DVD

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 \
  -o film.mpg film.avi

7.8.5.2. NTSC DVD

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 \
  -o film.mpg film.avi

7.8.5.3. PAL AVI obsahující AC–3 zvuk do DVD

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 -o film.mpg film.avi

7.8.5.4. NTSC AVI obsahující AC–3 zvuk do DVD

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 \
  -o film.mpg film.avi

7.8.5.5. PAL SVCD

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 \
    -o film.mpg film.avi

7.8.5.6. NTSC SVCD

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 \
    -o film.mpg film.avi

7.8.5.7. PAL VCD

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 \
    -o film.mpg film.avi

7.8.5.8. NTSC VCD

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 \
    -o film.mpg film.avi