Ugrás a főmenüre.
Minden más 2008.07.17. Internets video

H.264

Annyit beszélnek róla, én is számtalanszor említettem, most már írni kell  hát. Nagyon sok letorrentelt film ezzel jön, vele kódoljuk a legjobb minőségű webes videókat, szinte mindenhol beleakadunk. Részletek!

A H.264 hivatalos neve MPEG-4 Part 10 vagy MPEG-4 AVC (advanced video coding), ez lenne az MPEG-4 legtöbbet tudó változata, 1998-ban kezdték fejleszteni és az első verzió 2003-ban jött ki. Azóta szinte évente kapunk valamilyen módosítást, ma is élő dologról van szó.

A H.264 csak videó, a hozzá társított audió kodek neve pedig AAC (advanced audio coding), hivatalos neve MPEG-4 Part 3. Az AAC majdnem kétszer jobb az MP3-nál, amit úgy lehet lefordítani, hogy ugyanazt a minőséget tudja fele méretben, vagy ugyanabban a méretben kétszer szebb a hangja. Mindkettő sztenderd formátum, bejegyezve, lepapírozva, minden.

Az MPEG-4 Part 14 doksi szerint működnek ők ketten együtt egy MPEG-4 fájlban, tehát, ha eddig nem esett volna le a H.264 az az egyik (legjobb) fajta MPEG-4. Az audió és videó részt is tartalmazó fájlokat .mp4, a csak videósokat .m4v, a csak audiósokat pedig .m4a kiterjesztéssel kell ellátni.

Kockák

A H.264-ben az MPEG-2-höz hasonlóan három fajta képkocka van, ezek az I, B és P kockák:

  • I kocka = Intra frame: teljes képkocka, az összes képpont benne van.
  • P kocka = Predicted frame: csak az előző kockákhoz képest történt változásokat tartalmazza.
  • B kocka = Bi-directional predicted frame: mint a P frame, de az előző és a következő kockákhoz való eltérések vannak benne.

A képkockák csoportosítva vannak a videófolyamban, egy ilyen csoportot nevezünk GOP-nak (group of frames). A képkockákon belül macroblock-okban történik a kódolás, egy macroblock mondjuk 4x4 pixelt tartalmaz. Az optimalizálások jó része a macroblock-okon alapul, ezért "kockásodik" egy gyengébb minőségű videó.

Profilok és szintek

A H.264-nek profiljai és szintjei vannak azért, hogy mindenféle eszközön működhessen. A profilok az alkalmazható kódoló eszközöket határozzák meg (pl. milyen képkocka típusok lehetnek a fájlban), a szintek pedig a legfontosabb paraméterek tartományait (pl. bitráta vagy felbontás). 7 darab profil van, a gagyitelefontól az über profi extra minőségig:

  • Baseline profil (BP): elsősorban mobil alkalmazásokhoz és kézicuccokhoz. Nem lehet benne semmi olyan, ami túl nagy számítási kapacitást igényelne, pl. B kocka.
  • Main profil (MP): ezt szánták eredetileg a legelterjedtebb tárolási és sugárzási formátumnak.
  • Extended profil (XP): streaming célokra, a legdurvább tömörítési trükkökkel és a legjobb hibatűréssel adatvesztés esetére (pl. ha elveszne néhány adatcsomag sugárzás közben, akkor se álljon le).
  • High profil (HiP): Ebből lett végülis az elsődleges sugárzási és tárolási formátum a Main helyett. HD DVD és Blu-ray lemezen ezzel találkozhatsz.
  • High 10 profil (Hi10P): mint a High, de 8 helyett már 10 bites mintavételezéssel, profiknak.
  • High 4:2:2 profil (Hi422P): Hi10P, de 4:2:2 színprofillal.
  • High 4:4:4 profil (Hi444PP): itt már 4:4:4 a színprofil és 14 bites a színmélység. Gyakorlatilag veszteségmentes.

A Hi10P, Hi422P és a Hi444PP profilokkal nem nagyon fogsz találkozni, nem neked készült. Egyébként csak teljes képkockákat tartalmaznak (Intra), tömörítés szempontjából nudli.

Természetesen nem ilyen egyszerű az élet, definiáltak még 3 skálázható profilt is, van Scalable Baseline Profile a mobil eszközökhöz, Scalable High Profile a tároláshoz és sugárzáshoz, Scalable High Intra Profile pedig a profik részére.

Szintekből is kismillió van. Egy szint összesen 3 paramétert határoz meg, maximum macroblock méretet, maximum képkocka méretet (max. hány macroblock-ból áll) és maximum bitrátát. Ezek lefedik a teljes elképzelhető igényskálát, a 64kbps-es mobilvideótól a 960mbps-es szuperminőségű moziig.

Az a lényeg, hogy egy lejátszó eszköznél (pl. Flash player vagy iPod) a profilokkal és szintekkel határozzák meg egyértelműen, hogy hogyan lehet rájuk kódolni. Például a Flash player és az iPod-ok képességei eltérnek, ezért célszerű külön-külön kódolni oda, hiába reklámozták, hogy majd a Flash-re kódolt H.264-et simán betolod az iPod-odba.

Flash Player

A Flash Player az összes szintet támogatja és a Baseline, Main, High és High 10 profilokat. Tehát nagyon megengedő és szinte bármilyen felbontást rá lehet küldeni, a maximum 720mbps (nem kilo, mega!) és 4096x2048. Köszönjük, egy darabig elég lesz.

iPod

Határozottabban gyengébb, mint a Flash Player. Bár tud nagyobb felbontást is lejátszani, de 480x320-nál nagyobb kijelzőjű iPod/iPhone még nincs, ezért ennél nagyobba kódolni felesleges. Néhány régebbi iPod nem ismeri még a B kockákat, ezért érdemes azokat kihagyni a játékból, így viszont csak a Baseline profil játszik.

Csak dekóder? Mivel kódoljunk? 

A H.264 a dekóder részét szabványosítja a videónak, ami azt jelenti, hogy a belekódoláshoz bármilyen trükkös eljárást lehet alkalmazni, ami szabványos kimenetet eredményez. Éppen ezért nagyon nem mindegy, hogy az enkódoló szoftverünk milyen.

Van egy csomó fizetős kódoló, de nem érdekesek, mivel rendelkezésünkre áll az ingyenes x264 kodek, ami kiválóan együttműködik a szintén free FFMPEG-gel. Ráadásul az x264 az egyik legjobb enkódoló, szóval FFMPEG és csókolom.

Az x264-nek rettentő sok finombeállítása van, erről készül majd egy külön poszt és ismertetem a szerintem legjobb Flash h264 beállításokat is.

Moov-ot előre!

A legtöbb enkódoló ott hibáz nagyot, hogy a legfontosabb index információkat tartalmazó, MOOV-nak hívott részt a fájl végére teszi, anélkül viszont nem kezdődhet el a lejátszás. Ha netről stream-elünk, akkor ez nem pálya, hiszen végig kellene várni a teljes letöltést. A merevlemezen lévő filmeknél sem jó, hiszen mindig a végére kell tekerni, darálós ügy. Szerencsére van rá ingyenes kis eszköz, ami átdobja ezt az elemet a fájl elejére, QT-faststart-nak hívják, keress rá a guglin.

Még több infó

A Wikipedián (hol máshol?). 

1 hozzászólás

  1. idézem 2008.08.26. 10:24
    • Karesz
    jó post!

    még jöhet sok ilyen, kell a népnevelés. :)
Új hozzászólás
A sortörések automatikusak. Csak az üzenet kitöltése kötelező, a többi mező opcionális. A megadott e-mail címet nem tesszük közzé. Engedélyezett HTML tagek: p, a, strong, em, blockquote, ul, ol, li, dl, dt, dd.

Legutolsó hozzászólások

Veoh.com: szánalmas!: zola2000: Megtaláltam a legegyszerűbb megoldást veohra: használjatok operát, és kapcsoljátok be az opera turbot, ekkor az opera norvégiai jön be a...

Végre IKEA!: Ági: Heló bárkinek, aki idetéved! A weboldalunk domain-je - a kedvenc áruházunk ügyvédjének nyumására :) - megváltozott: Az új cím: is...

DJ PLAYER Blue Edition: Gábor: Ja, és természetesen megy iPad-en is, hiszen _minden_ iOS app megy iPad-en.

DJ PLAYER Blue Edition: Gábor: Bug report-okat itt fogadunk: http://djplayer.net/page/bug_report_fixes

DJ PLAYER Blue Edition: hohand: Hello!A dj player mukodik iPad-on is?Tegnap feltettem, wifi-n athuztam ra zeneket,de amikor ranyomtam egy zeneszamra,error-t dobott es valami is!...

iMect means internet, media and other cool things. We're a small company located in Hungary. There is a big footer on every page where you can discover what we do and what happens with us.

Az iMect jelentése: internet, média és egyéb király dolgok. Egy kis magyar cég vagyunk. Minden oldalon van egy nagy lábléc, ahol felfedezheted, hogy mivel foglalkozunk.