Totesin ettei vanhan Intel Atomin (jotain niitä ensimmäisiä) nopeus riitä maikkarin HD-lähetysten katsomiseen, joten ajattelin jos saisin tehtyä sille kelvollisen version. Kone tuntuu jaksavan melkein toistaa videon, mutta nytkähtelee välillä. MTV3 HD:n lähetykset näkyvät olevan 720p@50fps, mutta ohjelmahan ei todennäköisesti ole 50 kuvaa sekunnissa vaan ehkä vain 24, joten tuntuisi luonnolliselta tehdä sille jotain.
Alkuperäinen elokuva tai isomman budjetin ulkomainen tv-sarja on usein taltioitu nopeudella 24 kuvaa/s, mutta eurooppalaisissa PAL-lähetyksissä se on nopeutettu 25 kuvaan/s. (Video toistetaan nopeammin ja ääni venytetään ja uudelleennäytteistetään vastaavassa suhteessa.)
Jos haluat keventää toistovaatimuksia, 720p50-lähetyksen tapauksessa on tosiaan helpointa puolittaa kuvanopeus 25 kuvaan/s skippaamalla joka toinen frame. Tällöin ei myöskään menetetä alkuperäistä kuvainformaatiota, jos kyseessä on 25p- tai nopeutettu 24p-lähdemateriaali, joista on tehty 50p:tä monistamalla jokainen frame. Natiivin 50p-videon tapauksessa toki menetetään liikkeen sulavuutta.
Operaatio onnistuu helposti kertomalla ffmpegille tai avconville haluttu kohdekuvanopeus parametrilla -r 25. Jos muutat kuvanopeuden johonkin muuhun kuin puoleen alkuperäisestä, seurauksena on ylimääräistä nykimistä, koska frameja pudotetaan epäsäännöllisemmin.
avconv -i ohjelma.mpg -acodec copy -vcodec libx264 -crf 20 -preset slow -r 25 muunnettuohjelma.mkv
Pakattaessa x264:llä, parametri
-crf 20 valitsee laadun (23 on keskinkertainen laatu, 20 hyvä, 18-16 erinomainen). Esivalinta
-preset slow vaikuttaa pakkauksen suoritusaikaan. Yleensä järkevät presetit ovat
medium (oletus),
slow ja
slower, mutta jos halutaan vain pakata nopeasti välittämättä tiedoston koosta,
fast tai
faster voi olla perusteltu valinta.
Jos CRF pidetään vakiona, nopeampi preset tuottaa isomman tiedoston ja hitaampi preset tuottaa pienemmän tiedoston. Vastaavasti jos preset pidetään vakiona, pienempi (laadukkaampi) CRF-arvo tuottaa isomman tiedoston ja suurempi arvo tuottaa pienemmän tiedoston. Arkistointia varten suosittelen laatuasetusta -crf 20 ja vähintään
-preset mediumia. Hitaammalla presetillä saa pienemmän tiedostokoon, mutta aikaa kuluu huomattavasti enemmän. Omalla Core 2 Q9550 -neliydinprosessorillani
-preset medium pakkaa 1280x720-videota nopeudella 25 fps, kun taas
slower toimii nopeudella 10 fps. Veryslown nopeus on 5 fps. Eri presetien pakkaussuhdetta ei voi ihan suoraan verrata toisiinsa, koska preset vaikuttaa jonkin verran myös laatuun vaikka CRF pidettäisiin testeissä vakiona.
Veryslow tuottaa keskimäärin n. 15 - 20 % pienempiä tiedostoja kuin
medium, jos laatu mitataan ja vakioidaan.
Lisää aiheesta:
https://trac.ffmpeg.org/wiki/Encode/H.264En tiedä miten käy, jos tuon laittaa suoraan avconville (ffmpeg) tai handbrakelle vai pitäisikö tuo ajaa ensin ProjectX:n läpi tai vastaavaa.
ffmpeg/libav sietää virheitä hyvin, ja uudelleenpakkauksessa ne poistuvat videosta. DVB-tekstitykset voivat vaatia ProjectX-käsittelyä, jos haluat muuntaa ne johonkin yhteensopivampaan formaattiin (vobsub tai PGS). Muuten joudut käyttämään MPEG-TS-formaattia, joka aiheuttaa n. 2-3 %:n overheadin Matroskaan verrattuna.
Myöhemmin olisi tarvetta muuntaa myös Ylen HD-lähetyksiä sellaisiksi, että ne näkyvät myös näillä tehottomimmillakin koneilla. Yle HD:n video on 1080p, mutta kuvanopeutta en muista. Veikkaisin kyllä sen olevan 24 tai 25 ruutua sekunnissa.
YLE käyttää 1080i25-formaattia. Elokuvat ja useimmat sarjat lähetetään kyllä käytönnössä 25p:nä ja ne voi pakata suoraan. Jotkut lähetykset voivat olla lomitettuja tai muutan kelvottomasti skaalattuja, jolloin tarvitaan lisäprosessointia. FFmpegin yadif ja mcdeint -suotimilla pääsee alkuun. Parasta lomituksenpoistoa saa AviSynthin QTGMC:llä, mutta mcdeintin tavoin se on erittäin hidas. Jos tällaiselle laadukkaammalle käsittelylle on tarvetta, suoritintehoa pitäisi hankkia enemmän.
On kyllä surkuhupaisaa, että Ylen lähetyspuolella SD-videot skaalataan HD:ksi jollain nearest-neighbour-roskasuotimella, ja sitten vastaanottopäässä on käytettävä huipputason liike-estimointia ja suodatuksia, että kuvasta saisi edes joten kuten katselukelpoista. Itse tallennan sekä SD- että HD-lähetykset ohjelmista, joista en etukäteen tiedä, onko kyseessä aito teräväpiirtolähetys vai huonolla skaalauksella pilattu SD-versio. Muuten Ylen teräväpiirtolähetysten laatu on kyllä hyvä ainakin kaapeliverkossa.
Tuo bitrate näyttää perin oudolta, jos tuon kokoisessa videossa olisi noin pieni (bitrate: 705 kb/s), se olisi aivan kuraa. Oletko kokeillut pakata uudelleen mp4-säiliöön?
ffmpeg -i ohjelma.mpg -acodec copy -vcodec copy -f mp4 ohjelma.mp4
No tuo tieto tuskin on kovinkaan oikea. Kyseessä on noin tunnin video (TV-sarjan jakso) ja kokoa 3,9 gigaa, joten siitä voi laskea karkeaa keskiarvoa.
Juu. Ffmpeg ei näytä oikeaa bitratea MPEG-TS-tiedostolle, koska se käsittelee tiedostoa streaminä ja lukee vain alun (ja ehkä lopun). TS:ssä ei ole headeria, josta voisi lukea kokonaiskeston, ja pakettien aikaleimatkin saattavat nollautua ajoittain.
Arveletko, että mp4-koodekin käyttö ilman mitään muita säätöjä helpottaisi?
Pelkkä säiliön vaihtaminen ei auta.