HEVC vagy AVC?

Az egész úgy kezdődött, hogy beszóltak a Youtube-on.

Takacsi
Mi történt ezzel a videóval? Elvileg full HD mégis olyan mintha 240p lenne. Mondjuk a lényeg így is átjön :)

Jozsef Petrenyi
Tényleg vacak. Utánanéztem és az jött ki, hogy a Youtube nem szereti a goprót. Visszanéztem a cseh bringatúrát és ahol a gopróval vettem, ugyanilyen moárés lett a felvétel, ahol a másik kamerával, ott tökéletes. Megnéztem lokálisan a goprós nyersanyagot, rendben van, a vágott verzió már egy picit foltosodik, de alig észrevehetően, a Youtube-on viszont gyász. Ahogy néztem, a bringás videósok kézikamerát használnak, azzal sincs baj. Kösz, hogy szóltál, el fogok játszani vele, hogyan lehetne kezdeni valamit a felvétellel.

Takacsi
@Jozsef Petrenyi Ebben csak azt nem értem, hogy tonna számra vannak gopro-s videól YT-n (akár nálam is) és nem tapasztalom ezt. + feliratok és normál fotók jók. Szóval egy egybe vágott. egybe renderelt anyag hogy tud részlegesen elromlani? Furcsa

Jozsef Petrenyi
@Takacsi Érteni én sem értem, de ha megnézed a lentebb linkelt cseh videót a megadott ponttól, láthatod, hogy ha a fejkamera megy, akkor moárés, ha a kézi (a kocsamában, illetve Krumlovban), akkor meg nem.
https://youtu.be/yoCRjPEsSyc

A megreklamált videó pedig ez.

[Update]
Időközben a vacak videót eltávolítottam.

Az nem kifejezés, mennyire szar. Mármint nem a tartalma miatt, hanem a képminősége miatt. Miközben minden kamerával full HD módban történt a felvétel, a vágás renderelése úgyszintén.

Akkor?

Gyász. Meg egy borzalmasan hosszú írás.

Mivel ha halványan is, de azért a saját gépen lévő videókban is vannak homályos, pixelesedő, hangyamozis részek, így először elkezdtem játszani a vágóprogrammal. Minden létező paramétert felnyomtam az egekbe. Nem történt semmi változás. A formátumok közül eleve csak kettő jöhetett szóba: MP4 konténerben vagy AVC (H.264), vagy HEVC (H.265). De mindkettő egyformán muzsikált. Ekkor jutott eszembe, hogy nézzük már át a nyersanyagot. Nos, a Gopro felvételein is volt már egy enyhe moáré. Sima ügy. Nem jó a nyersanyag, a vágóprogram felerősíti a hibákat, a Youtube újrarendeli, nyilván erősebb tömörítéssel, ebből lesz ez a szar.
Oké.
Rászántam egy délelőttöt és különböző kamerabeállításokkal róttam a bringás köröket itt, a mellettünk lévő kiserdőben. Meg is lett a megoldás.
– Protune. Habár sok vita van róla a neten, én egyértelműen hasznosnak találtam. Anélkül valami béna izét izzad ki az automatikus beállításokból a készülék, a Protune bekapcsolása után meg lehetőségem van egy csomó dolgot kézzel beállítanom.
Például ezeket:
– Maximális ISO. Ezt levettem 400-ra az alapértelmezett 1600-ról. Gyakorlatilag minden automata rendszer kevés fénynél az ISO értéket nyomja az egekbe, nem törődve azzal, hogy mennyire szemcsés lesz ettől a felvétel.
– Expozíciós korrekció: -1,5 fe.
Ezeken kívül állítgattam még egy csomó értéket, de a fenti kettő hozta meg a sikert. Baromi jó lett a nyersanyag.
Huh. Megoldottam.
Igaz, közben valami beállítás átállította a névszekvenciát GH01xxxx.mp4 formátumról GX01xxxx.mp4 formátumra, de ahol dolgoznak, ott hullik a forgács.

Jöhetett a vágóprogram (Sony Vegas Pro 16). Lerendereltem AVC-be. Szar lett. Miafene? Nézzük a HEVC-et. Sokkal jobb, de még nem tökéletes. Feltoltam minden paramétert a csillagokba. Szuper.
Ezt is megoldottam.

Youtube.
Gyász.
Valami borzalmasan ramaty lett.
Itt indult be az őrület. Ilyen beállítás. Olyan beállítás. Egyik hipotézis. Nem jött be. Másik hipotézis. Mi van, ha mégis ez? Nem. Még rosszabb.
Rákattantam a témára. Belemélyesztettem a fogamat és nem hagytam magam lerázni. Hajnali egyig kinlódtam. Muszáj volt, ez volt az utolsó napom, amikor foglalkozhattam a problémával. Megoldani pedig meg kell, mert hamarosan indul a túraszezon.
Hajnalban már nyomon voltam. Mondhatni a sokadikon.
De ennek már látszólag volt értelme is.
Ahogy mondják, olvasott embernek párja nincs. Meg a Youtube idiotizmusának sem.
A Gopro support oldalán találtam két vonatkozó topikot. Mindkettőnél ugyanaz a technika hozta a megoldást.
Kapaszkodj, mert vad lesz.
Arról van szó, hogy a Youtube valami borzalmasan szar algoritmust használ a full HD videók újrarendelésére. Tökmindegy, mennyire pengeéles videót töltesz fel, jönnek és lemészárolják. És valamiért ez az algoritmus különösen agyonvágja a Gopro nyersanyagból készült filmeket.
Kapaszkodsz még? Oké, akkor mondom a megoldást.
Pumpáld föl a videódat 2K/4K-ra. Szarabb lesz? Hogy a a fenébe ne. A 2K kétszer, a 4K négyszer nagyobb, mint az eredeti (tkp 1K) méret, azaz ekkora digitális nagyítás történik. Nyilván interpolálással. Pixeles lesz, mint az állat. Majd ezt a cseszett nagy fájlt töltsd fel a Youtube-ra. Megérdemlik. A 2K/4K renderelő algoritmusuk már jó. Abszolút élvezhető lesz a videó. Nézheted az eredeti HD-ben, bár úgy tapasztaltam, hogy ekkor még mindig moárés egy kicsit, viszont 2K-ban teljesen rendben van.
Őrület.
Ha nem hiszed, nézd meg. A fenti videót újrarendereltem 4K-ban, majd feltöltöttem. (Eredetileg ugye minden full HD-s volt.) Érdemes játszogatni a lejátszás minőségével. A full HD kicsit zsizsás, a 4K lassú, de a 2K rendben van.

Persze még nem végeztem. Kipróbáltam a módszert az új tesztfelvételekkel is… és vacak lett. Pedig… volt itt néhány fontos kérdés. Elég jó lesz-e a végeredmény, ha full HD-s nyersanyagot pumpálok fel és rakom ki, vagy vegyem inkább a nyersanyagot is 2K/4K-ban? Pumpálás vs. helyigény. Nagyon nem mindegy, hiszen ekkor minden kamerát át kell állítanom. Egyáltalán, mit tudnak a kamerák? Meg… mitől lett az előbbi renderelés vacak? Lehet, hogy a felpumpálás sem mindegy? Van valami köze a dolognak ahhoz, hogy a jó videónál a nyersanyag még a régi névszekvenciával lett elmentve, a rossznál meg az újjal? Megannyi probléma. Megint ki kellene menni az erdőbe is tesztelgetni. Csak éppen időm már nincs rá. Délután fellépésem van.
Mindegy. Majd blöffölök valamit.
Ezt itt meg kell oldani.
Nézzük először a Goprót. Tud 2K-ban rögzíteni, de ekkor már sötét környezetben nem olyan jó. 4K? Akkor nincs stabilizálás. Na, ez már fájt. Bár ahogy olvasgattam, valaki pont ezért vett gimbalt. Tulajdonképpen… nem is rossz ötlet. Mennyibe fáj? Semennyibe. Nem lehet kapni. Nálunk egyáltalán nem, de az elfogadható árúakat az Amazonon sem. Olyan 80e forint körül vannak az olcsóbbak, de semmi, mondom semmi információ sincs arról, hogy egy ilyen gimbalt rá tudok-e tenni a sisakomra applikált Gopro talpra. 1/4-es csavarral mindent lehet, csak hát nem az van a sisakon. Néhány fényképen mintha ott lenne az a húszforintos kis szar, ami kell a rögzítéshez, de a szövegben nyoma sincs a lehetőségnek. Keressünk rá. A találatok 80%-a gombákról szólt. Komolyan.
Menjetek a fenébe. Akkor marad a 2K-s rögzítés.

Videóvágó program. Egészen jól kezelte a nagy méretű nyersanyagot. Egy jó pont. Rendereljük le 2K-ba. (A Youtube-nak ennyi is elég.) Nem megy. A program nem ismeri a 2K-t. Full HD, utána 4K. Hogy szomorodjatok meg. Pedig pont az lett volna a lényeg, hogy ne pumpáljuk fel a nyersanyagot. De nincs más.

Van nekem egy ilyen Handbrake nevű konvertálóprogramom. Van, mert már nem az első alkalommal szívok a formátumokkal. Az internet szerint ez a legjobb felpumpáló konverter. Adjunk neki egy esélyt. Nos, ahhoz képest, hogy ez a legjobb, gyakorlatilag nem is ismeri ezt a funkciót. Valaki egyszer leírta, a többi megélhetési blogger meg átvette és terjesztette.
Egyre inkább úgy érzem, borzasztó nagy hiba volt egyáltalán létrehozni ezt az internet nevű izét.

És persze a nagy kérdés: most akkor döntsük már el, hogy AVC, vagy HEVC? Az internet az utóbbira szavaz. Ügyesebb, okosabb és még a kávét is megfőzi. Az AVC meg tré. Gyakorlatilag a HEVC-et is használtam mindenhol. Jó. Mit szól hozzá a Youtube?

Recommended upload encoding settings

Container: MP4
No Edit Lists (or the video might not get processed correctly)
moov atom at the front of the file (Fast Start)

Video codec: H.264
Progressive scan (no interlacing)
High Profile
2 consecutive B frames
Closed GOP. GOP of half the frame rate.
CABAC
Variable bitrate. No bitrate limit required, though we offer recommended bit rates below for reference
Chroma subsampling: 4:2:0

Nabazmeg. A H.264 az az AVC. Az a fránya Youtube tojik a haladásra, neki a régi kell. Nézzük már meg a nyersanyagot. (Ugye van az a Mediainfo nevű nagyon hasznos beépülő progi.) Itt estem le a székről. A régi névszekvenciával mentett nyers film a Goprón pontosan azokkal a paraméterekkel bír, melyeket a Youtube kér.

Video
Format                      : AVC
Format/Info                 : Advanced Video Codec
Format profile              : High@L5.1
Format settings             : CABAC / 2 Ref Frames
Format settings, CABAC      : Yes
Format settings, ReFrames   : 2 frames
Format settings, GOP        : M=1, N=25
Bit rate mode               : Variable
Bit rate                    : 60.0 Mb/s
Width                       : 2 704 pixels
Height                      : 1 520 pixels
Display aspect ratio        : 16:9
Frame rate mode             : Constant
Frame rate                  : 50.000 FPS
Color space                 : YUV
Chroma subsampling          : 4:2:0
Bit depth                   : 8 bits
Scan type                   : Progressive
Title                       : GoPro AVC  

Ezekből a nyers felvételekből lett jó minőségű az újravágott, felpumpált Bikepacking videó.
Az új szekvenciához tartozó nyersanyagok viszont teljesen mások. (Eleve HEVC és innentől minden más is más.)
A francba. Melyik beállítással cseszhettem el? Nem volt könnyű kinyomozni, mert miután átállítottam mindent, de mindent, amit a videófelvételnél lehetett, még mindig nem történt semmi. De végül azért meglett. A főmenüben a Preferences/General alatt volt olyan, hogy Video Compression és ott lehetett választani aközött, hogy HEVC, illetve H.264+HEVC. Bármilyen furcsa, Gopróéknál az utóbbi az AVC.

Persze ezzel megint elment a nap, délután énekeltem egyet, majd a következő nap éles teszt. A Goprónál már megvannak az értékek, még biztosan játszani kell a MILC géppel is, most már tudom, hogy a vágóprogrammal is AVC-be kell renderelni 4K-ban… aztán beletolni mindent a Youtube arcába.

Illetve… sajnos az még elég kevés, hogy a vágóprogrammal is AVC-be kell renderelni. Nem. Úgy kell renderelni, hogy a legyártott videónak _pontosan_ ugyanazok legyenek a paraméterei, melyeket a Youtube igényel. Miért nem mindegy? Mert ha csak simán azt mondom a vágóprogramban, hogy AVC, akkor nem azok lesznek. Hjaj.

Encode mode: NV Encoder
Alapértelmezésben az NVidia GPU-t használja rendelésre. Pöpec gyors, viszont kiveszi a beállításokat a felhasználó kezéből.

General
Format                      : MPEG-4
Format profile              : Base Media / Version 2
Codec ID                    : mp42 (isom/mp42)
Overall bit rate mode       : Variable
Overall bit rate            : 40.3 Mb/s

Video
Format                      : AVC
Format/Info                 : Advanced Video Codec
Format profile              : High@L5.2
Format settings             : CABAC / 1 Ref Frames
Format settings, CABAC      : Yes
Format settings, ReFrames   : 1 frame
Format settings, GOP        : M=1, N=30
Codec ID                    : avc1
Codec ID/Info               : Advanced Video Coding
Bit rate                    : 40.1 Mb/s
Width                       : 3 840 pixels
Height                      : 2 160 pixels
Display aspect ratio        : 16:9
Frame rate mode             : Constant
Frame rate                  : 50.000 FPS
Color space                 : YUV
Chroma subsampling          : 4:2:0
Bit depth                   : 8 bits
Scan type                   : Progressive

Nézzük össze az adatokat. Kevés a ReFrames (2 helyett 1), nem stimmel a GOP méret (25 helyett 30). A Sony Vegas fórumon azt írták, hogy ne piszkáljunk bele, a szoftver mindig a legoptimálisabb beállításokkal dolgozik. Ami egyfelől igaz lehet, csak éppen itt nem a lokális megjelenésről van szó, hanem a Youtube renderelő algoritmusa számára kell optimalizálnunk.

Encode mode: MainConcept AVC
Abszolút klasszikus AVC encoder. A CPU-t használja, emiatt tetű lassú. Viszont szabadon konfigurálható, szemben azzal, hogy az NVidia alig enged valamit.

General
Format                      : MPEG-4
Format profile              : Base Media / Version 2
Codec ID                    : mp42 (isom/mp42)
Overall bit rate mode       : Variable
Overall bit rate            : 40.4 Mb/s

Video
Format                      : AVC
Format/Info                 : Advanced Video Codec
Format profile              : High@L5.2
Format settings             : CABAC / 3 Ref Frames
Format settings, CABAC      : Yes
Format settings, ReFrames   : 3 frames
Format settings, GOP        : M=4, N=15
Codec ID                    : avc1
Codec ID/Info               : Advanced Video Coding
Bit rate mode               : Variable
Bit rate                    : 40.3 Mb/s
Maximum bit rate            : 80.0 Mb/s
Width                       : 3 840 pixels
Height                      : 2 160 pixels
Display aspect ratio        : 16:9
Frame rate mode             : Constant
Frame rate                  : 50.000 FPS
Standard                    : PAL
Color space                 : YUV
Chroma subsampling          : 4:2:0
Bit depth                   : 8 bits
Scan type                   : Progressive

Valamivel jobb, de… A Reframes itt már 3, ami sok. Fogalmam sincs, hogy ez mit okoz, elvileg a ReFrames minél nagyobb, annál jobb. (Az érdekesség az, hogy 2-t állítottam be.) A GOP megint vicces, az I-P távolság (M) 4 lett, a GOP hossz (N) meg 15. A Youtube 50 fps-nél 25-öt szeretne.

Handbrake
De hát van itt egy Handbrake progi, mely tulajdonképpen egy grafikus felület a svájcibicska képességű ffmpeg-hez.

General
Format                      : MPEG-4
Format profile              : Base Media / Version 2
Codec ID                    : mp42 (isom/iso2/avc1/mp41)
Overall bit rate            : 40.2 Mb/s
Writing application         : HandBrake 1.3.3 2020061300

Video
Format                      : AVC
Format/Info                 : Advanced Video Codec
Format profile              : High@L5.2
Format settings             : CABAC / 2 Ref Frames
Format settings, CABAC      : Yes
Format settings, ReFrames   : 2 frames
Codec ID                    : avc1
Codec ID/Info               : Advanced Video Coding
Bit rate                    : 40.0 Mb/s
Width                       : 3 840 pixels
Height                      : 2 158 pixels
Display aspect ratio        : 16:9
Frame rate mode             : Constant
Frame rate                  : 50.000 FPS
Color space                 : YUV
Chroma subsampling          : 4:2:0
Bit depth                   : 8 bits
Scan type                   : Progressive
Writing library             : x264 core 157 r2935 545de2f
Encoding settings           : cabac=1 / ref=1 / deblock=1:-1:-1 / analyse=0x3:0x113 / me=hex / subme=7 / psy=1 / psy_rd=1.00:0.15 / mixed_ref=0 / me_range=16 / chroma_me=1 / trellis=1 / 8x8dct=1 / cqm=0 / deadzone=21,11 / fast_pskip=1 / chroma_qp_offset=-3 / threads=12 / lookahead_threads=2 / sliced_threads=0 / nr=0 / decimate=1 / interlaced=0 / bluray_compat=0 / constrained_intra=0 / bframes=2 / b_pyramid=0 / b_adapt=1 / b_bias=0 / direct=1 / weightb=1 / open_gop=0 / weightp=2 / keyint=30 / keyint_min=15 / scenecut=40 / intra_refresh=0 / rc_lookahead=40 / rc=2pass / mbtree=1 / bitrate=40000 / ratetol=1.0 / qcomp=0.60 / qpmin=0 / qpmax=69 / qpstep=4 / cplxblur=20.0 / qblur=0.5 / vbv_maxrate=300000 / vbv_bufsize=300000 / nal_hrd=none / filler=0 / ip_ratio=1.40 / aq=1:1.00

A Reframes már jó, viszont a Mediainfo nem jelez ki GOP-ot. Az encoding beállításokból lehet mazsolázni. Az open_gop=0 valószínűleg close GOP-ot jelent, mely szigorú feltétel, a GOP többi adataira viszont már csak tippelni tudok, azaz szvsz az I-P távolság (M) az a weightp=2, a GOP hossza (N) pedig a keyint=30.
Hát, ez sem az igényelt M=1; N=25.

A kérdés persze ugyanaz mindenhol: ezek mekkora eltérést jelentenek?
Különösen annak fényében, hogy a GOP beállításokat a Mediainfo néha ki sem jelzi. (Erre azt írták az okosok, hogy ilyenkor az M,N értékek nem állandóak, dinamikusan változnak. Mit kezd ezzel majd a Youtube? A GOP persze mindenképpen close, egyébként nem is lehetne lejátszani a videót.)

Azaz egyfelől sikerült leszűkítenem egy csomó feltételt, ami jó, de még nem végeztem. Megint ki kellett mennem bringázni az erdőbe és módszeresen, jegyzőkönyvezve legyártani hat különböző változatot. Mindet fel is tettem a Youtube-ra. (Valószínűleg tele lehet már a tökük velem. Az utóbbi pár napban felküldtem néhány tera adatot, megdolgoztattam a renderelő motorjukat, majd töröltem mindent a francba.)

Konklúzió:
Ide egy hosszabb elemzést terveztem, de nincs értelme. Ugyanis tökmindegy.
Az a helyzet, hogy mind a hat feltöltés elfogadható lett. Nyilván volt közülük jobb is és rosszabb is, de mindegyik megfelelt. Innentől pedig más szempontok kerültek elő. A Handbrake például az előzőleg a Sony Vegas által lerenderelt ötperces videót plusz négy óra alatt renderelte újra. Ez azért gáz. Mint ahogy az sem mindegy, hogy a nyersanyagot milyen felbontással rögzítem.
Végül maradt a full HD (AVC) felvétel (jelenleg is erre van beállítva az összes kamera), az első renderelés szintén full HD, Nvidia GPU encoder-rel, ebből lesz a saját, itthoni videó. A Youtube miatt le kell renderelni ugyanezt 4K-ba is és úgy feltölteni. Ez szintén mehet az Nvidia GPU-val. (Habár nem lesz olyan jó a minőség, de ha a jobban konfigurálható CPU renderelést választom, az egy ötperces tesztvideónál két óra.)

Kiegészítés:
Azt hiszed, vége? Nos, nem. Itt van ez a videó. Nézd meg, hogyan indul. A képminőség itt is botrányos. A probléma nagyjából ugyanaz. Az autó dashcam kamerája csak és kizárólagosan HEVC formátumban rögzít. Mert jelenleg az a menő. És egyébként is, egy dashcam nem a gyönyörű képről szól. Nem ez a feladata. Nem is lehet konfigurálni. HEVC és kész. Kár, hogy a Youtube ettől elhányja magát, a termék meg… nos, olyan is lesz.
Csak hát… én ezt a kamerát is beterveztem. Idén nem fogunk külföldön mászkálni, jövőre viszont csak ott. Hegyekben, szerpentineken, tengerparton. A dashcam pedig mindent vesz, gyakorlatilag az egész utat. Tök jó.
Lenne. Ha a Youtube nem gyalázná vérbe a felvételt. Persze ettől nekem itthon még jó lesz, de ha kirakom a netre, akkor már nem.
Nyilván nem adtam fel. A felvétel méretét lehet állítani, feltoltam 2K-ra. Majd ezt a felvételt lerendereltem mind a Sony Vegas, mind a Handbrake progikkal. Nyilván AVC-be és nyilván a fentebb részletezett paraméterekkel. Az elkészült videók – elméletileg – teljesen Youtube kompatibilisek lettek.
Aztán mégsem. Egyszerűen átüt a felvételeken a HEVC előélet. A Handbrake renderelésen nagyon, a Sony Vegas renderelésen valamivel kevésbé.
Fasza. Kösz, Youtube.

És már előre parázok, mi lesz, ha hozzányúlnak a renderelő algoritmusaikhoz és kezdhetem előlről az optimalizálást. Nem, nem azért, hogy optimális legyen a minőség. Nem. Hanem azért, hogy nézhető.

3 Comments

  1. Problémás hobbijaid vannak. De jó róluk olvasni :D

  2. Elnézést, nem beszólás volt! Szeretem és értékelem amit csinálsz, furcsa volt, hogy mitől ilyen az a videó. Még egyszer elnézést ha beszólásnak érezted!

    • Dehogyis, egyáltalán nem értékeltem beszólásnak. :) Csak kellett valami erős, de azért érezhetően vicces túlzás kezdésként ehhez a hosszú íráshoz. (Rögtön utána be is másoltam az egészet, megmutatva, hogy nem is volt ez annyira beszólás.)

Leave a Reply to Alfa Cancel reply

Your email address will not be published. Required fields are marked *

Discover more from MiVanVelem

Subscribe now to keep reading and get access to the full archive.

Continue reading