Jestli to není celé zbytečně složité. U každého rozlišení je optimální nějaký kodek, u videí pod 1080 řádku je to H264, v rozmezí 1080 až 4k je to VP9 a pro 4k a více je to AV1. Výrobci můžou prostě inzerovat, že jejich produkt umí přehrávat videa dejme tomu do 4k s tím, že Google by měl smluvní povinnost každý kodek podporovat dejme tomu 10 let. Takže jednoho dne Google může oznámit, že třeba H264 je EOL a nadále bude minimálním kodekem u nového obsahu VP9 (starý obsah by se postupně překódoval do VP9 pokud by to mělo smysl).
Někdo namítne, že pro spotřebitele by ti byla plánována obsolescence, ale to by se dalo ošetřit službami třetích stran, které by proudy ve VP9, AV1 atd. překódovaly do H264 ve sníženém rozlišení, ostatně to už v podstatě existuje.
Co to znamená, že je nějaký kodek optimální pro dané rozlišení? Já třeba s úspěchem používám x265 i pro 720p či dokonce 540p videa prostě proto, že je to lepší řešení než x264 či nedejbože xvid. Dávno bych přešel na AV1, kdyby kódování nebylo 1000× pomalejší než s x265. Ostatně AV1 je lépe optimalizováno pro nižší rozlišení než H.26x, takže ono jediné, co brání jeho používání pro rozlišení nižší, je právě jeho pomalost, resp. nepodpora v železe.
A ta videa v 540p jsou originální nebo převedená z něčeho staršího? Já mám třeba Červeného trpaslíka v 720p v MPEG-4. Půlhodinový díl má přes půl GB, v H.264 nebo H.265 by neměl ani polovinu, ale nebyl jsem schopný přijít na způsob, jak toho dosáhnout. Údajně to ani jednoduše nejde, prý ty moderní kodeky na převody ze starých kodeků jako MPEG-4 nejsou optimalizované. Při stejné kvalitě jsem dosáhl ještě větší velikost. Ale rád si nechám poradit. Jsem v této oblasti jen lehce poučená laik.
zdrojem toho 540p je spousta věcí, třeba moje původní ripy v xvid 576x432, nebo 1080p z YT, nebo 4k z m43 bezzrcadla atd. Samozřejmě čím lepší vstup, tím lepší výsledek. Důležité je: čím horší je vstup (což obvykle pro xvid platí), tím spíš si člověk musí pohlídat, aby to nezkrouhl příliš a empiricky si najít hranici, kdy ještě x265 vypadá ok a kdy už žehlí jako prase - ten přelom je obvykle na nějaké konkrétní hodnotě parametru crf (používám 1pass převod, stačí, v případě 2pass budeš muset hledat ten daný bitrate). Problém starších MPEG4 ASP obecně je ten, že video obsahuje kompresní bloky odpovídající velmi zhruba dnes těm coding tree units což při přehrávání řeší deblocking a při rekompresi seš obvykle v řiti. Já to občas řeším tím že použiju sekvenci: xvid zdroj -> upscaling o 5-10% -> sharpen -> upscaling o 5-10% - sharpen -> finální resize na požadované rozlišení. Dělám to jen výjimečně, ale třeba jsem takto převáděl jeden starší rip, byl to tuším divx5 v 640x272 , 100min film v 700MB velikosti v avi se 128kbit CBR MP3. Prohnal jsem ho zhruba tímto postupem (tehdy tedy v avidemuxu, abych měl náhled výstupu) a udělal jsem z toho 1280x720 x265 s 96kbps Opus zvukem (tu zvukovou stopu jsem v audacity trochu poladil, dodal jí zpět výšky a hloubky). Pošteloval jsem tam i trochu barvy, podle scresnshotů z tehdy nedostupného BD a výsledkem je velmi uspokojivý "HDrip" ve velikosti 824MB, který je zhruba srovnatelný s dobře udělaným DVD. To rozlišení je 720p prostě proto, že v čemkoli menším nebyl prostor pro ten sharping a vypadalo to blbě (halo efekt na hranách mezi x265-žehličkou). Jo, dnes se tenhle film válí na ulozt v 16GB 1080p ripu, nicméně to nesladím s dabingem. ten probíhal na 50i TV, zatímco BD je 24p. Obecně ale platí, že ten x265 převod, pokud není z luxusního zdroje, je vždy s určitou ztrátou kvality. A buď ta ztráta nevadí, nebo ji lze nějakým doostřováním vykompenzovat, nebo se na to prostě vybodnout (já například nepřevádím staré MJPEGy z digikompaktů z doby před 15-10 lety).
Podle mých zkušeností nejde tak moc o to, z jakého kodeku se to konvertuje, ale spíš o kvalitu toho původního videa. Dobře je to vidět třeba u věcí z iVysílání, kde je většinou 6Mb/s 1080p H.264. Pokud jsou to nově natočené věci s čistým a kvalitním obrazem, není problém se s -c:v libx265 -preset medium -crf 26 dostat pod 1 Mb/s - a často ani s CRF 24. Výsledek vypadá skvěle a pokud si to nezastavím a nezačnu zkoumat artefakty, nepoznám rozdíl oproti tomu původnímu 6Mb/s videu.
Jenže když zkusím něco, kde obraz za moc nestojí, je najednou všechno úplně jinak. Třeba Operace Jau (která ani není starší, ale dost "šumí"), tam se u novějších 1080p epizod většinou nedostanu pod 2 Mb/s a pod 1 Mb/s nemám šanci ani s těmi staršími, které tam dávali ještě v 720p. Totéž platí pro jakýkoli starší film nebo seriál.
Ty staré ripy seriálů, tam je to ještě horší, tam se mi běžně stává, že když zkusím konverzi pomocí libx264 nebo libx265, jsem rád, pokud není výsledek větší než původní soubor. Většinou se vyplatí poohlédnout se po novější verzi v 720p nebo 1080p a zkusit konvertovat tu. Výsledek nebývá o moc větší - ale při propastném rozdílu v kvalitě obrazu.
Z toho možná pramení ty urban legends o tom, jak jsou jednotlivé kodeky "optimalizované pro určitá rozlišení". Kdybych zkusil vzít kvalitní 1080p video a přeškálovat ho do 540p s různými kodeky, pravděpodobně by ty novější bodovaly stejně jako ve vyšším rozišení. Ale když je zdroj mizerný, jako by ty jejich sofistikovanější algoritmy neměly na čem ušetřit.
Kdybych zkusil vzít kvalitní 1080p video a přeškálovat ho do 540p s různými kodeky, pravděpodobně by ty novější bodovaly stejně jako ve vyšším rozišení.
Tak mi to nedalo a zkusil jsem to v praxi. Zkusil jsem konvertovat desetiminutový úsek technicky kvalitního 1080p videa (z prostředka, aby to neznehodnotily titulky) s přeškálováním do 540p a uložit jen obrazovou stopu:
-c:v mpeg-4 -qscale:v 6): 67 MBTedy má to trochu háček... defaultně mi ten MPEG-4 měl zhruba tolik co HEVC - ale výsledek vypadal, jako bych měl monitor s rozlišením asi tak 8 dpi. K tomu -qscale:v 6 jsem se dopracoval postupným zkoušením jako k nejnižší kvalitě, při které výsledek vypadá jakž takž rozumně.