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

14.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 belinkeltet 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 dokumentum célkitűzései közé.

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

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

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

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

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

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

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

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

14.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].

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

14.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 libavcodecnek 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's 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. Belefuthatsz fagyásokba. 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

14.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 másik 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
      

  • Én magam nem használtam a -vf filmdint-et, de álljon itt D Richard Felker III hozzászólása:

    Rendben, de IMO inkább deinterlace-t próbálj a túl gyakori inverz telecine helyett (inkább settop DVD lejátszók & progresszív TV-k) ami csúnya vibrálást és egyéb jelenségeket okoz. Ha használni akarod, el kell töltened egy kis időt az opciók próbálgatásával és az eredmény megfigyelésével, hogy biztos légy benne, nem rontja el az egészet.

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

14.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 softskippel 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ényvesztesé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.