12.2. Mit kezdjünk a telecine-nel és az átlapolással NTSC DVD-ken
Előző | 12. fejezet - Kódolás a MEncoderrel | Következő

## 12.2. Mit kezdjünk a telecine-nel és az átlapolással NTSC DVD-ken

### 12.2.1. Bevezetés

Mi az a telecine? Ha nem érted teljesen, ami ebben a dokumentumban le van írva, olvasd el a Wikipedia telecine szócikkét. Ez egy érthető és meglehetősen átfogó leírás arról, hogy mi is az a telecine.

Megjegyzés a számokhoz. Sok dokumentáció, beleértve a fent belinkelt cikket is, az NTSC videó mező per másodperc értékét 59.94-ként határozza meg, és a megfelelő képkocka per másodperc értéket 29.97-nek (telecine-s és átlapolt) és 23.976-nak írja (progresszív). Az egyszerűség kedvéért sok dokumentáció még ezeket a számokat is lekerekíti 60-ra, 30-ra és 24-re.

Pontosan fogalmazva az összes szám csak közelítés. A fekete-fehér NTSC videó pontosan 60 mező per másodperces volt, de később 60000/1001-et választottak, hogy a szín adatokat hozzáigazítsák, de kompatibilisek maradjanak a kortárs fekete-fehér televíziókkal. A digitális NTSC videó (mint ami a DVD-n van) is 60000/1001 mező per másodperces. Ebből származik, hogy az átlapolt és telecine-lt videó 30000/1001 képkocka per másodperces; a progresszív videó 24000/1001 képkocka per másodperces.

A MEncoder dokumentációjának régebbi változatai és számos archivált levelezési listára küldött levél az 59.94-re, 29.97-re és a 23.976-ra hivatkozik. Az összes MEncoder dokumentáció frissítve lett a tört számokra és neked is ajánlatos ezeket használni.

`-ofps 23.976` helytelen. `-ofps 24000/1001` használandó helyette.

A telecine használata. Az összes videónak, amit NTSC televízión szándékoznak megjeleníteni, 60000/1001 mező per másodperc sebességűnek kell lennie. A TV-nek készített filmeket és show-kat gyakran direkt 60000/1001 mező per másodperces sebességgel fényképezik, de a mozifilmek nagy része 24 vagy 24000/1001 képkocka per másodperccel készül. Amikor a mozis film DVD-jét készítik, a videót egy telecine-nek nevezett eljárás keretében televíziós formátumra konvertálják.

Egy DVD-n a videót tulajdonképpen soha sem 60000/1001 mező per másodperccel tárolják. Abban a videóban, ami eredetileg 60000/1001-es volt, egy pár mező alkot egy képkockát, 30000/1001 képkocka per másodperces sebességet eredményezve. A hardveres DVD lejátszók ezután beolvasnak egy, a videó folyamban benne lévő jelzőt, hogy megállapítsák, hogy a páros vagy páratlan sorszámú sorok alkotják-e az első mezőt.

Általában a 24000/1001 képkocka per másodperces tartalom változatlan marad, ha DVD-re kódolják és a DVD lejátszónak kell telecine-t végezni menet közben. De néha a videót a DVD-re mentés előtt telecine-lik, akkor is, ha eredetileg 24000/1001 képkocka per másodperces volt, így 60000/1001 mező per másodperces lesz, és a lemezen 30000/1001 képkocka per másodpercesként tárolódik.

Ha megnézed az egyes képkockákat a 60000/1001 mező per másodperces videóban, telecine-lt vagy sem, az átlapolás tisztán látható bármilyen mozgásnál, mert az egyik mező (mondjuk a páros sorszámú sorok) időben 1/(60000/1001) másodperccel későbbi történést reprezentál, mint a másik. Átlapolt videó számítógépen történő lejátszáskor rondán néz ki, mert egyrészt a monitornak nagyobb a felbontása, másrészt mert a videót kockáról kockára mutatja meg, mezőről mezőre történő lejátszás helyett.

Megjegyzések:

- Ez a rész csak NTSC DVD-re vonatkozik, nem a PAL-ra.

- A MEncoder példa sorok a dokumentumban nem hétköznapi felhasználásra lettek írva. Csak a legalapvetőbb dolgokat mutatják, ami a megfelelő kategóriába tartozó videók kódolásához szükséges. A jó DVD rip-ek készítése vagy a `libavcodec` finomhangolása a maximális minőség eléréséhez nem tartozik ezen fejezet célkitűzései közé, nézd meg a MEncoder kódolási útmutató többi részét.

- Sok megjegyzés vonatkozik erre a leírásra, melyek így vannak jelölve: [1]

### 12.2.2. Hogyan állapítható meg egy videó típusa

#### 12.2.2.1. Progresszív

A progresszív videót eredetileg 24000/1001 fps-sel rögzítették és változtatás nélkül tárolják a DVD-n.

Ha egy progressive DVD-t az MPlayerrel játszasz le, az MPlayer a következő sort fogja kiírni, amint a film lejátszása megkezdődik:

    demux_mpg: 24000/1001 fps progressive NTSC content detected, switching framerate.

magyarul:

    demux_mpg: 24000/1001 fps progresszív NTSC formátumot találtam, frameráta váltás.

Ettől a ponttól kezdve a demux_mpg soha sem mondhatja azt, hogy "30000/1001 fps NTSC formátumot" talált.

Ha progresszív videót nézel, soha nem láthatod meg az átlapolást. De vigyázz, néha pár telecine-s bit belekeveredik oda, ahol nem számítasz rá. Én DVD-n lévő TV műsoroknál láttam egy másodpercnyi telecine-t minden jelenet váltáskor vagy véletlen helyeken történő belenézéskor. Egyszer láttam olyan DVD-t is, aminek az első fele progresszív volt, a második fele pedig telecine-s. Ha tényleg biztosra akarsz menni, átvizsgálhatod az egész filmet:

    mplayer dvd://1 -nosound -vo null -benchmark

A `-benchmark` kapcsoló határása az MPlayer olyan gyorsan játsza le a filmet, amennyire csak lehetséges; a hardveredtől függően sokáig is eltarthat. Minden esetben, ha a demux_mpg frameráta váltást észlel, a fenti sor azonnal megmutatja neked a váltás idejét.

Néha a progresszív videóra "soft-telecine"-ként hivatkoznak, mert a DVD lejátszónak kell ezt telecine-elnie.

#### 12.2.2.2. Telecine-lt

A telecine-lt videót eredetileg 24000/1001 fps-sel vették fel, de telecine-lve lett a DVD-re írás előtt.

Az MPlayer nem ír semmilyen frameráta változást, ha telecine-lt videót játszik le.

Egy telecine-lt videó nézésekor átlapolási hibákat láthatsz, amik miatt "villoghat" a kép: ismétlődően megjelennek majd eltűnnek. Ezt jobban megfigyelheted így:

1.     mplayer dvd://1

2. Menj egy mozgást ábrázoló részhez.

3. Használd a . gombot az egy képkockával történő előreléptetéshez.

4. Nézd meg az átlapoltnak látszó és a progresszívnak látszó képkockák mintáját. Ha a minta, amit látsz PPPII, PPPII, PPPII,... akkor a videó telecine-lt. Ha valami más mintát látsz, akkor a videót lehet, hogy egy másik, nem szabványos módszerrel telecine-lték; a MEncoder nem tudja veszteségmentesen átkonvertálni a nem-sabványos telecine-t progresszívba. Ha egyáltalán nem látsz semmilyen mintát, akkor valószínűleg átlapolt.

Néha a DVD-ken lévő telecine-lt videót "hard-telecine"-nek is hívják. Mivel a hard-telecine már 60000/1001 mező per másodperces, a DVD lejátszó mindenféle manipulálás nélkül játsza le a videót.

A másik módszer a telecine-lt forrás felismerésére a forrás megtekintése a `-vf pullup` és `-v` kapcsolók parancssorhoz történő hozzáadásával. Így megnézheted, hogy a `pullup` hogyan illeszkedik a képkockákhoz. Ha a forrás telecine-s, a konzolon egy 3:2-es mintát kell látnod, melyben `0+.1.+2` és `0++1` váltakozik. Ennek a technikának megvan az az előnye, hogy nem kell a forrást nézned az azonosításhoz, ami akkor jó, ha automatizálni szeretnéd a kódolási folyamatot vagy távolról, lassú kapcsolaton keresztül szeretnéd megcsinálni.

#### 12.2.2.3. Átlapolt

Az átlapolt videót eredetileg 60000/1001 mező per másodperc sebességgel filmezték és 30000/1001 képkocka per másodperccel került fel a DVD-re. Az átlapolási effektus (gyakran "combing"-nak hívják) a mező párok képkockává történő egyesítésének eredménye. Minden mezőnek 1/(60000/1001) másodpercnyire kellene lennie egymástól, megjelenítésnél a különbség szemmel látható.

Akár csak a telecine-s videóknál, az MPlayernek a nem kell semmiféle frameráta változásról értesítenie átlapolt videók lejátszásakor.

Ha egy átlapolt videót közelebbről megnézel képkocka-léptetéssel a . gombot nyomogatva, megláthatod, hogy minden egyes képkocka átlapolt.

#### 12.2.2.4. Kevert progresszív és telecine

Az összes "kevert progresszív és telecine" videót eredetileg 24000/1001 képkocka per másodperccel rögzítették, de egyes részei utólag telecine-lve lettek.

Ha az MPlayer ilyen videót játszik le, (sokszor ismétlődően) oda-vissza vált "30000/1001 fps NTSC" és "24000/1001 fps progresszív NTSC" között. Figyeld az MPlayer kimenetének alját, ott megláthatod az üzeneteket.

Nézd meg a "30000/1001 fps NTSC" részeket, és meggyőződhetsz róla, hogy telecine-ltek, nem csak átlapoltak.

#### 12.2.2.5. Kevert progresszív és átlapolt

"Kevert progresszív és átlapolt" tartalomnál a progresszív és az átlapolt videót összeillesztették.

Ez a kategória ugyan úgy viselkedik, mint a "kevert progresszív és telecine", egészen addig, amíg meg nem vizsgálod a 30000/1001 fps-es részeket és észre nem veszed, hogy nincs bennük telecine minta.

### 12.2.3. Hogyan lehet elkódolni ezen kategóriákat

Ahogy említettem az elején, például a MEncoder alábbi parancssorai nem igazán használhatóak; csak demonstrálják a minimum paramétereket az egyes kategóriák megfelelő kódolásához.

#### 12.2.3.1. Progresszív

A progresszív videóhoz nem kell semmilyen különleges szűrés. Az egyetlen paraméterm, amit biztosan használnod kell, az a `-ofps 24000/1001`. Egyébként a MEncoder 30000/1001 fps-sel és duplikált képkockákkal próbál kódolni.

    mencoder dvd://1 -oac copy -ovc lavc -ofps 24000/1001

Gyakran az az eset áll fenn, hogy a videó progresszívnek tűnik, de valójában nagyon rövid telecine-s részek vannak belekeverve. Ha nem vagy biztos a dolgodban, a legbiztonságosabb, ha kevert progresszív és telecine-lt videóként kezeled. A teljesítményvesztés kicsi [3].

#### 12.2.3.2. Telecine-lt

A telecine visszafordítható, hogy megkapd az eredeti 24000/1001-es tartalmat, egy inverz-telecine-nek nevezett eljárással. Az MPlayer számos szűrővel rendelkezik ennek az elvégzéséhez; a legjobb szűrő a `pullup` le van írva a kevert progresszív és telecine részben.

#### 12.2.3.3. Átlapolt

A legtöbb gyakorlati esetben nem lehetséges a teljes progresszív videó visszanyerése az átlapolt tartalomból. Az egyetlen út ehhez a függőleges felbontás felének elvesztése nélkül a frameráta megduplázása és "megtippelni", hogy mi kellene minden egyes mező megfelelő sorainak felépítéséhez (ennek vannak hátrányai - lásd a 3. módszert).

1. Kódold el a videót átlapolt formában. Normális esetben az átlapolás eléggé odavág a kódoló tömörítési képességeinek, de a `libavcodec`nek van két paramétere speciálisan az átlapolt videó tárolásának egy kicsit jobb kezeléséhez: `ildct` és `ilme`. Az `mbd=2` használata is javasolt [2] , mert ez a makroblokkokat nem-átlapoltként fogja elkódolni azokon a helyeken, ahol nincs mozgás. Ügyelj rá, hogy itt a `-ofps` NEM kell.

       mencoder dvd://1 -oac copy -ovc lavc -lavcopts ildct:ilme:mbd=2

2. Használj deinterlacing szűrőt a kódolás előtt. Számos közül választhatsz, mindegyiknek megvan a maga előnye és hátránya. Lásd az `mplayer -pphelp` és az `mplayer -vf help` kimenetét, hogy megtudd, mit használhatsz (grep-pelj a "deint"-re), olvasd el Michael Niedermayer Deinterlacing szűrő összehasonlítását, és keress az MPlayer levelezési listáin a sok beszélgetés között, ami a különböző szűrőkről szól. A frameráta itt sem változik, így nem kell a `-ofps`. A deinterlacing-et a vágás után [1] és a méretezés előtt kell elvégezni.

       mencoder dvd://1 -oac copy -vf yadif -ovc lavc

3. Sajnos ez a kapcsoló hibás a MEncoderben; talán a MEncoder G2-vel működni fog, de itt most még nem. Fagyásokat tapasztalhatsz. Egyébként a `-vf tfields` célja az lenne, hogy teljes képkockát készít mindegyik mezőből, ami miatt a frameráta 60000/1001 lesz. Ennek a megközelítésnek az az előnye, hogy soha nincs adatvesztés; habár mivel minden egyes kocka csak egy mezőből keletkezik, a hiányzó sorokat valahogy interpolálni kell. Igazából nincs jó módszer a hiányzó adat összegyűjtésére és így az eredmény kicsit úgy fog kinézni, mint amikor valamilyen deinterlacing szűrőt használsz. A hiányzó sorok generálása egyéb dolgokat idéz elő, egyszerűen mivel az adat mennyisége megduplázódik. Így, nagyobb kódolási bitráták szükségesek a minőség megtartásához, és nagyobb CPU teljesítmény mind a kódoláshoz, mind a dekódoláshoz. A tfield-eknek számos különböző opciójuk van az egyes képkockákban hiányzó sorok előállításához. Ha ezt a módszert használod, akkor nézd meg a manual-t és válassz, hogy melyik opcióval néz ki legjobban az anyagod. Figyelj rá, hogy ha `tfield`-eket használsz, mind a `-fps`-nek, mind a `-ofps`-nek az eredeti forrásod framerátájának kétszeresét kell megadnod.

       mencoder dvd://1 -oac copy -vf tfields=2 -ovc lavc \
         -fps 60000/1001 -ofps 60000/1001

4. Ha drasztikus downscaling-et tervezel, kiszedhetsz és elkódolhatsz egy mezőt is a kettő helyett. Természetesen így elveszíted a függőleges felbontás felét, de ha downscaling-et tervezel legfeljebb az eredeti 1/2-ével, a veszteség nem számottevő. Az eredmény egy progresszív 30000/1001 képkocka per másodperces fájl lesz. A helyes eljárás a `-vf field` használata, majd vágás [1] és megfelelő méretezés. Emlékezz, hogy be kell állítanod a méretarányt a felezett függőleges felbontásnak megfelelően.

       mencoder dvd://1 -oac copy -vf field=0 -ovc lavc

#### 12.2.3.4. Kevert progresszív és telecine

Ahhoz, hogy egy kevert, progresszív és telecine-s videót teljesen progresszív videóvá konvertálj, a telecine-lt részeket inverz-telecine-elni kell. Ez háromféle képpen végezhető el, mint ahogy az lejjebb látható. Figyelj rá, hogy mindig az inverse-telecine legyen meg bármilyen átméretezés előtt; hacsak nem vagy teljesen biztos a dolgodban, és az inverse-telecine legyen a vágás előtt is [1]. A `-ofps 24000/1001` kell ide, mert a kimeneti videó 24000/1001 képkocka per másodperc sebességű lesz.

- A `-vf pullup` a telecine-s részek inverz-telecine-léséhez lett tervezve úgy, hogy a progresszív adatokat érintetlenül hagyja. A helyes működéshez a `pullup`-ot a `softskip` szűrőnek kell követnie, különben a MEncoder összeomlik. Ennek ellenére a `pullup` a legtisztább és legjobb módszer mind a telecine-s, mind a "kevert progresszív és telecine-s" videók elkódolásához.

      mencoder dvd://1 -oac copy -vf pullup,softskip
        -ovc lavc -ofps 24000/1001

- A `-vf filmdint` hasonló a `-vf pullup`-hoz: mindkét szűrő megpróbálja egyeztetni a mezőpárokat, hogy azok egy komplett képkockát adjanak. A `filmdint` deinterlace-lni fogja az egyedi mezőket, amelyeket nem tud egyeztetni, míg a `pullup` egyszerűen csak eldobja őket. A két szűrő különböző detektáló kódot alkalmaz és a `filmdint` néha túl kevés mezőt egyeztet. Az, hogy melyik szűrő a jobb, a bemeneti videótól és az egyéni ízléstől függ; kísérletezz szabadon a szűrők opcióinak finomhangolásával, ha valamelyikkel problémád van (lásd a man oldalt a részletekért). A legtöbb jól elkészített bemeneti videónál mindkettő eléggé jól működik, így bármelyik jó választás lehet a kezdéshez.

      mencoder dvd://1 -oac copy -vf filmdint -ovc lavc -ofps 24000/1001

- A régebbi módszer, a telecine-s részek inverz-telecine-lése helyett a nem-telecine-s részek telecine-lése majd a teljes videó inverz-telecine-lése. Zavarosan hangzik? A softpulldown egy olyan szűrő, ami végigmegy a videón és a teljes fájlt telecine-li. Ha a softpulldown-t vagy `detc` vagy `ivtc` követi, a végső eredmény teljesen progresszív lesz. A `-ofps 24000/1001` kapcsolót meg kell adni.

      mencoder dvd://1 -oac copy -vf softpulldown,ivtc=1 -ovc lavc -ofps 24000/1001

#### 12.2.3.5. Kevert progresszív és átlapolt

Két módon kezelheted ezt a kategóriát, mindkettő kompromisszum. Az időtartam/hely alapján kell döntened.

- Kezeld úgy, mintha progresszív lenne. Az átlapolt részek átlapoltnak látszanak és néhány átlapolt mezőt el kell dobni, ami egyenletlen ugrásokat eredményez. Használhatsz utófeldolgozó szűrőt, ha akarsz, de ez kissé rontja a progresszív részeket.

  Ez az opció használhatatlan akkor, ha a videót egy átlapolt eszközön akarod megjeleníteni (TV kártyával például). Ha átlapolt képkockáid vannak 24000/1001 képkocka per másodperces videóban, telecine-lve lesznek a progresszív képkockákkal együtt. Az átlapolt "képkockák" fele három mező hosszon lesz látható (3/(60000/1001) másodperc), ami ugráló "visszaugrás az időben" effektust hoz létre, ami nagyon rosszul néz ki. Ha mégis kísérletezel ezzel, használnod kell egy deinterlacing szűrőt, mint pl. az `lb` vagy az `l5`.

  Rossz ötlet a progresszív megjelenítéshez is. Eldobja az egymást követő átlapolt mezőpárokat, megszakítva ezzel a folyamatosságot, ami sokkal szembetűnőbb, mint a második módszer, ami néhány progresszív képkockát duplán mutat. A 30000/1001 képkocka per másodperces átlapolt videó amúgy is egy kicsit fodrozódó mert igazából 60000/1001 mező per másodperc sebességgel kellene megjeleníteni, így a duplikált képkockák nem látszanak annyira.

  Mindkét esetben érdemes megnézni a tartalmat és eldönteni, hogy hogyan szeretnéd megjeleníteni. Ha a videó 90%-ban progresszív és soha nem akarod TV-n lejátszani, akkor a progresszív megközelítést fogod előnyben részesíteni. Ha csak félig progresszív, akkor valószínűleg átlapoltként akarod elkódolni az egészet.

- Kezeld teljesen átlapoltként. A progresszív részekben néhány képkockát meg kell duplázni, ami egyenlőtlen ugrásokat eredményez. De hangsúlyozom, a deinterlacing szűrők rontják a progresszív részeket.

### 12.2.4. Lábjegyzet

1. A vágásról: A videó adatot a DVD-ken egy úgynevezett YUV 4:2:0 formátumban tárolják. A YUV videóban a luma ("fényerő") és a chroma ("szín") külön tárolódik. Mivel az emberi szem valamivel érzéketlenebb a színre, mint a fényerőre, a YUV 4:2:0 képen csak egy chroma pixel jut minden négy luma pixelre. Egy progresszív képen minden négy luma pixel által alkotott négyzetben (kettő mindkét oldalon) egy közös chroma pixel van. A progresszív YUV 4:2:0-t le kell vágnod páros felbontásúra és páros offszetet kell használnod. Például a `crop=716:380:2:26` jó de a `crop=716:380:3:26` nem.

   Ha átlapolt YUV 4:2:0-lal van dolgod, a szituáció egy kicsit bonyolódik. Ahelyett, hogy az egy képkockában lévő mind a négy luma pixel osztozna egy chroma pixelen, a mezőben lévő négy luma osztozik egy chroma pixelen. Ha a mezők át vannak lapolva egy képkocka felépítéséhez, minden egyes scanline egy pixel magas. Nos, ahelyett, hogy a négy luma pixel egy négyszögben lenne, két pixel van egymás mellett, a másik kettő két scanline-nal lejjebb van egymás mellett. A két luma pixel a közbeeső scanline-on a másik mezőből van és így egy másik chroma pixel tartozik hozzájuk és két darab, két scanline távolságra lévő luma pixel. Mindezen keverés teszi szükségessé azt, hogy a függőleges vágási dimenzióknak és az offszeteknek néggyel oszthatóaknak kell lenniük. A vízszintes maradhat páros.

   A telecine-lt videóknál javaslom, hogy a vágást az inverz telecine után ejtsd meg. Ha a videó már progresszív, csak páros számokkal el kell vágnod. Ha ki akarod használni azt a sebességnövekedést, amit a vágás rejteget magában, akkor függőlegesen négy többszörösével kell vágnod, különben az inverz-telecine szűrő nem kap megfelelő adatokat.

   Az átlapolt (nem telecine-lt) videónál függőlegesen mindig négy többszörösével kell vágnod, hacsak nem használod a `-vf field`-et a vágás előtt.

2. A kódolási paraméterekről és a minőségről: Csak mert itt javasoltam az `mbd=2`-t, nem jelenti azt, hogy máshol ne lehetne használni. A `trell`-lel együtt az `mbd=2` egyike a két `libavcodec` kapcsolóknak, amik legjobban növelik a minőséget és igazából mindig ajánlott ezt a kettőt használni, kivéve ha tilos a kódolási sebesség rontása (pl. valós idejű kódolás). Még számos egyéb opciója van a `libavcodec`-nek, ami növeli a kódolás minőségét (és csökkenti a kódolás sebességét) de az már túlmutat ezen dokumentum célkitűzésein.

3. A pullup teljesítményéről: Bátran használhatod a `pullup`-ot (a `softskip`pel együtt) a progresszív videókon és ez általában jó ötlet, hacsak a forrás nem egyértelműen teljesen progresszív. A teljesítmény veszteség kicsi az esetek többségében. Nagyon ritka kódolási esetekben a `pullup` a MEncoder 50%-os lassulását okozhatja. A zenefeldolgozás hozzáadása és a fejlett `lavcopts` háttérbe szorítja ezt a különbséget, a `pullup` miatti teljesítményromlást 2%-ra csökkentve.

Előző | Fel | Következő
12.1. Nagyon jó minőségű MPEG-4 ("DivX") rip készítése DVD filmből | Tartalom | 12.3. Kódolás a `libavcodec` codec családdal