Ugrás a főmenüre.
Web 2008.10.01. Internets video

Vigyázat, reklám! AVEncoder

Volt néhány kérdés a videókódoló alkalmazásommal kapcsolatban, ismertetem hát, hogy mit tud. Dióhéjban arról van szó, hogy a szerveren történő konvertálás helyett inkább a user gépén végezzük el a dolgot, amivel több legyet is ütünk egy csapásra:

  • Nem kell saját kódoló infrastruktúrát fenntartani (szervert, kapcsolódó dolgokat).
  • Nem kell a saját kódoló szerverek terhelésével foglalkozni (ha nincs kihasználva azabaaaj, ha túl hosszú a várakozási sor az a baj).
  • A felhasználó látja, hogy hol tart a dolog, nem csak annyit, hogy you're the 56th in the queue.
  • Sokkal kevesebb bájtot kell feltöltenie, jó minőségben egy videó horror nagyságú, lekonvertálva webes formátumra még több változatban is sokkal kisebb.
  • Az egész videófeltöltési folyamat gyorsabbá válik.
  • Nincs várakozási sor.

Nem árulok zsákbamacskát, az AVEncoder az FFMPEG-et használja, mert az a legjobb erre a célra, de mégsem egy egyszerű wrapper, hanem tud egy-két plusz dolgot is:

Központból vezérelt. Egy megadott URL-ből húzza a konfigurációt (mit kell konvertálni, hogyan) és így mindig frissíti magát. Ha nemcsak a konfig változik, hanem maga a szoftver is átesett valami komoly frissítésen, akkor szól, hogy nincs konvert, hanem erről és erről a webcímről húzza le a felhasználó a legfrissebbet.

Windows és Mac OSX. Gondolhatjátok, hogy az FFMPEG lefordítása a megfelelő cuccokkal (finomhangolás) mekkora szívás volt, pláne Mac-re.

Nem kell telepíteni. Mac-en sima ZIP, Windows-on önkicsomagoló EXE. Közönséges futtatható alkalmazás van benne, nem kell hozzá semmi egyéb hülyeség, például .NET környezet vagy Java. Korlátozott user is futtathatja.

Bőrözhető (skin). A bőrök egyszerű Flash SWF (igen!) fájlok, magad is előállíthatod mindenféle ActionScript tudás nélkül, csak grafika. Így a felhasználód nem azt látja, hogy AVEncoder, hanem a saját neveddel a saját arculatod. Ugyanígy a nyelvi fájl is szerkeszthető, jelenleg HU és EN van, de bármire átírhatod a sztringeket.

Saját konfiguráció (XML fájlban). Beállíthatod, hogy milyen formátumokat készítsen, jelenleg ezekből választhatsz: Flash h264, Flash FLV, iPod/iPhone MP4, 3GP. (A Flash h264-et a Silverlight is le fogja játszani hamarosan.) Természetesen formátumonként állíthatod a bitrátát, felbontást, frémrétet. Maximumok is beállíthatók, pl. maximális videó hossz.

Preview képek. Bármennyit beállíthatsz, egyszerre több változatot is elkészít (pl. egy kisméretűt a thumbnailekhez és egy nagyot valami cikkhez).

A felhasználód természetesen semmit sem állíthat be, te kontrollálsz mindent. Ő csak kitallózza a videófájlt, kiválasztja valamelyik felkínált előnézeti képet (ha kell), elindítja a cuccot és nézegeti a progressbart.

A végén egy darab állomány készül el, ami egy TAR fájl. Benne vannak a kért formátumaid és egy hash, hogy tutira tudd a szoftver állította elő a cuccot és nem a felhasználó hekkelt valamit össze. A TAR fájlok kezelése a szervered számára valószínűleg nem újdonság, Linuxon alap.

Van egy minta PHP osztály is, ami kitömöríti neked a megfelelő helyre és lekezeli az esetleges hibákat. Nem kell FFMPEG-et, de még GD-t sem telepíteni a szerverre.

A szoftverben lévő formátumok kezelése webes videókhoz finomhangolt, de annyira, hogy pl. egy h264 paraméterezése 4 sor. Csak a megfelelő videókodekek finombeállítására 8 teljes munkanap ment rá. Minden konvertálás így a lehető legjobb minőséget hozza ki és természetesen kétmenetes.

A szoftver igyekszik kezelni a videókodekek esetleges bénázásait. Pl. sokszor futhatsz bitrate too low és hasonló ügyekbe, ilyenkor újrapróbálkozik és te állíthatod be a konfigurációban, hogy milyen stepping-gel menjen föl és meddig.

Automatikusan adagolja a megfelelő padding-et, tökmindegy, hogy a milyen a forrásvideó és milyen a célvideó képaránya. Az elkészült videó pedig mindig 1:1-es, azaz négyzetes pixelarányú lesz (hány kamera készít egzotikus téglalap pixeleket, amivel aztán nehéz küzdeni).

Ha a forrásvideó minősége bármelyik paraméterben kisebb, mint a cél, akkor megpróbálja a lehető legkevesebb veszteséggel járó konvertálást. Szélsőséges esetben, pl. ha egyből Flash kompatibilis és paramétereken belül eső h264-et tolsz neki, azt nem is fogja átkonvertálni, csak copy és már indítja is a következő formátumot. Másik példa: ha a bitráta jelentősen kisebb a célnél, akkor kb. másfélszerest fog neki adni, hogy további kockázódás ne alakulhasson ki.

Végzetes hiba esetén logfájlt ad, amit a felhasználó elküldhet a megadott e-mail címre és kielemezzük, hogy mi volt a probléma.

Elvégzi a megfelelő "patkolásokat", pl. QT-faststart az mp4-ekre, vagy Yamdi-s metaadatok az FLV-kre. Az elkészült fájlok kapásból mehetnek pseudo-streamingre is.

Bár én fejlesztem, de a szoftver az AVKreatív Kft. tulajdona, őket kell megkérdezni, hogy mennyi az annyi. Szerintem nem sok, kedves emberek. :-)

2 hozzászólás

  1. idézem 2008.10.10. 16:15
    • homer
    Le a kalappal, egy napja találtam rá a blogodra, nem győzöm olvasni. Tudás, stílus és alázat.. Tanulhatna tőled sok magyar döbrögi IT uraság
    Télleg respect!

    De kérdés az encodereddel kapcs:
    Tök igazat adok a desktop használat érvei mellett de nekem ha mégis serverside kéne (mivel gyakori lehet az eseti user, akivel nem akarék letöltetni, futtatni egy plusz motyót), akkor ugyanúgy tudna suhanni egy böngészőről (projektor helyett swf-ként), nem?

    Köszi
  2. idézem 2008.10.10. 23:50
    Ó, nagyon köszönöm! :-)

    Böngészőből sajnos nem lehet, mert biztonsági okok miatt a merevlemez nem érhető el és a kapcsolt szoftverek (pl. FFMPEG) sem futtathatók.
Ú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

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

Uzsidoboz LED!: zo via Google Reader: vicces dolog, csak nem értem mire való

Uzsidoboz LED!: Gábor: @Benjamin Minek forogjanak? Egy falszínezőnek olyat nem kell tudnia, így is épp elég hatásosak.

iMect means internet, media and other cool things. iMect is a small company near lake Velence, Hungary. We’ve 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 cég vagyunk közel a Velencei-tóhoz. Minden oldalon van egy nagy lábléc, ahol felfedezheted, hogy mivel foglalkozunk.