Oma projekt: eestikeelsete animafilmide kogu · 2026

Resync: eestikeelne dublaaž Blu-ray pildile, kaadri täpsusega

Automaatne töövoog, mis paneb vana eestikeelse DVD-filmi heli Blu-ray pildi alla täpselt õigesse kohta. Tulemus näeb välja peaaegu nagu Blu-ray originaal, aga fail on 13,7 korda väiksem.

Eesmärk

Paljudest eesti keelde dubleeritud animafilmidest on alles ainult vanad DVD-koopiad: väike pilt, pehmed jooned ja sageli veidi kiirendatud. Sama filmi Blu-ray on 20–40 GB suur, aga eesti keelt seal pole. Heli käsitsi paika nihutamine võtab ühe filmi peale tunde ja ei klapi ikka, sest versioonid erinevad kiiruse, kadreeringu ja väljalõigatud stseenide poolest. Eesmärk oli täisautomaatne töövoog: sisse kaks faili, välja üks, kus on Blu-ray pilt ja eesti heli täpselt paigas. Pilt pidi jääma silmaga originaalist eristamatuks, fail pidi olema kordades väiksem ja kõik pidi käima nii kiiresti, et terve riiulitäis filme valmib ühe õhtuga.

Tulemus numbrites

Mis muutus

18/18

filmi esimesest järjekorrast valmis automaatselt, ilma käsitsi parandamata

≤1 ms

on heli ja pildi vahe valmis failis, ehk täiesti märkamatu

97,5×

pildikvaliteet 100-palli skaalal Blu-ray originaali vastu (DVD-koopial 37,5)

13,7×

väiksem fail kui Blu-ray (Tuhkatriinu: 31,7 GB → 2,32 GB)

24,5×

kiirem kui film ise: 92-minutilise filmi pilt pakitakse 3 min 46 s-ga

Olukord

Kõige lihtsam mõte oleks võrrelda kahe faili heli. See ei tööta, sest üks on eesti ja teine inglise keeles. Seega tuleb võrrelda pilti. Aga pilt on kahes versioonis väga erinev. DVD on väike (Tuhkatriinu DVD-koopia on 656×496 pikslit), Blu-ray on 1920×1080. Üks võib olla kitsam ja kärbitud, teine laiem ja mustade ribadega. DVD-l võivad olla pildi sisse põletatud subtiitrid, telerist salvestatud koopial kanali logo ja reklaamipausid. Euroopa DVD-d jooksevad sageli 4,27% kiiremini kui film kinos, nii et ka hääled on veidi kõrgemad. Tihti on ka algus- ja lõputiitrid erinevad või mõni stseen välja lõigatud.

Kui on selge, milline hetk kummas failis kus asub, tuleb heli venitada nii, et see püsiks huultega kokku kogu filmi ulatuses. Siis tuleb 20+ GB pildist teha kordades väiksem fail, ilma et kvaliteedikadu oleks näha. Ja kõik see ilma, et keegi peaks ühtegi filmi käsitsi läbi vaatama.

Iga probleemi juures on kirjas ka see, mis esimese hooga ei töötanud ja miks. Enamik parimaid lahendusi tuli just ebaõnnestunud katsetest.

Piirangud

  • Heli ei saa otse võrrelda, sest keeled on erinevad. Kokku tuleb viia pilt.
  • Versioonid erinevad kiiruse, pildi suuruse, kadreeringu ja väljalõigatud stseenide poolest, telerist salvestatud koopiatel ka reklaamipauside poolest.
  • Blu-ray fail on 20–40 GB. Kogu filmi täissuuruses läbivaatamine iga sammu jaoks oleks liiga aeglane.
  • Tulemus peab olema kordades väiksem, aga originaalist silmaga eristamatu.
  • Kõik peab käima järjekorras ilma inimese sekkumiseta ja katkestuse korral jätkama sealt, kus pooleli jäi.

Lahendus

Kuidas lahendasin

Pildi sõrmejälg

Kuidas võrrelda kahte videot, millel on erinev suurus, värvid, kadreering ja subtiitrid?

Kõigepealt mõõdetakse mõlemad failid üle: kus on mustad ribad, milline on pildi õige kuju ja kui palju heli videost ette või taha jääb. Siis vaadatakse mõlemat filmi 5 kaadrit sekundis, väga väikese mustvalge pildina, graafikakaardi abil. Igast kaadrist tehakse lühike „sõrmejälg”: 128 bitti, mis kirjeldavad pildi heledamaid ja tumedamaid alasid. Sama stseen annab mõlemast failist peaaegu sama sõrmejälje, ka siis, kui värvid ja teravus erinevad. Kaadri alumine osa jäetakse välja, et subtiitrid ja logod ei segaks.

All oleval pildil on Tuhkatriinu sama kaader DVD-koopiast ja Blu-rayst: 128 bitist erineb ainult 2. Hoopis teise stseeniga erineb peaaegu pool. Kadreeringu jaoks proovitakse kolme varianti (täis, laiem ja kõrgem), et kitsam ja laiem versioon leiaksid teineteist ikkagi, ja võidab variant, mis annab kõige rohkem kindlaid vasteid.

Sama kaader kahest väga erinevast failist annab peaaegu samad 128 bitti: 2 erinevat, kaugus 0,016. Teine stseen samast filmist annab kauguse 0,461.
Tuhkatriinu nägu DVD-ripist, 1080p peale skaleeritud

DVD-rip VMAF 41,3 · 734 MB

Tuhkatriinu nägu Resynci AV1 väljundist

Resync AV1 VMAF 97,3 · 2,32 GB

Tuhkatriinu nägu Blu-ray remuxist, võrdluse aluseks olev originaal

Blu-ray remux viide · 31,7 GB

Tuhkatriinu (1950), 11:40, sama 640×480 ala kõigist kolmest failist Blu-ray pikslites. DVD-ripil on teised värvid, veidi teine kadreering ja pehmemad jooned: võrdlus peab kõik need erinevused üle elama.

Ajakaart

Kuidas leida kahe versiooni vahel iga hetke vaste, kui osa stseene on puudu, osa üleliigseid ja kiirus erinev?

Mis ei töötanud: esimene versioon ei võrrelnud pilti otse, vaid püüdis ajastust ära arvata stseenivahetuste järgi. Umbes 800 lõikega filmis leidis see juhuslikult vale lahenduse, mis sobis veidi paremini kui õige, ja heli sattus kümneid kuni sadu sekundeid valesse kohta. Õige suuna andis lihtne skript, mis otsis pildisisu otse. Sõrmejälgedega hakkas see töötama kindlalt.

Kuidas see nüüd käib: iga 8 sekundi tagant võetakse ühest failist 3-sekundiline lõik ja otsitakse sellele vastet teise faili igast kohast. Vaste loetakse kindlaks ainult siis, kui see on selgelt parem kui kõik teised kohad. Graafikul all on päris otsing: õige koha juures on terav langus, mujal on tulemus palju halvem. Mustad kaadrid jäetakse vahele, sest must pilt sobib kõigega.

Kindlatest vastetest visatakse välja kõrvalekalded ja ülejäänutest tehakse ajakaart: millisele hetkele ühes failis vastab milline hetk teises. Kiiruse erinevus paistab siin lihtsalt kaldena, lisastseenid ja puuduvad kohad eraldi lõikudena. Tuhkatriinu puhul leiti 548 vastet, mis kõik olid ühel sirgel: heli tuli nihutada 0,24 sekundit ning DVD alguses ja lõpus olev lisamaterjal eraldati.

Päris otsingukõver Tuhkatriinust: vaste 0,044, kõigi kandidaatide mediaan 0,480, lähim konkurent väljaspool vastet 0,319. Vaste on piiridest selgelt allpool, seega loetakse see kindlaks.
Leedi Tremaine profiil DVD-ripist, 1080p peale skaleeritud

DVD-rip VMAF 39,2 · 734 MB

Leedi Tremaine profiil Resynci AV1 väljundist

Resync AV1 VMAF 96,7 · 2,32 GB

Leedi Tremaine profiil Blu-ray remuxist, võrdluse aluseks olev originaal

Blu-ray remux viide · 31,7 GB

Tuhkatriinu (1950), 30:00. Kortsud, kulmud ja juuksesalgud on DVD-ripil pooleldi kadunud, AV1 väljund hoiab need alles.

Reklaamipausid

Telerist salvestatud koopias on reklaamipausid, mille pilt ei vasta millelegi. Kuidas leida täpselt koht, kus film jätkub?

Mis ei töötanud: pildi järgi otsimine. Pausi ümber oli tihti mõlemal pool „auku” sama kaader, lihtsalt pisut teistmoodi kärbitud, nii et pilt ei öelnud, kus täpselt lõigata. Viga oli kuni 12 sekundit.

Mis töötab: heli, aga nutikalt. Kui stereoheli vasakust kanalist lahutada parem, kaob keskele paigutatud dialoog peaaegu täielikult ja alles jäävad muusika ning heliefektid. Need on mõlemas keeleversioonis samad. Mõlema faili nii saadud helikõveraid võrreldakse ja lõikekoht valitakse sinna, kus need kõige paremini kattuvad. Sama filmi kõik kolm pausi said paika 0,11 sekundi täpsusega. Kui heli kindlat vastust ei anna, proovitakse pilti, ja kui ka see ei aita, ei lõigata midagi.

Haldjas-ristiema tumedal taustal DVD-ripist, 1080p peale skaleeritud

DVD-rip VMAF 34,5 · 734 MB

Haldjas-ristiema tumedal taustal Resynci AV1 väljundist

Resync AV1 VMAF 99,2 · 2,32 GB

Haldjas-ristiema tumedal taustal Blu-ray remuxist, võrdluse aluseks olev originaal

Blu-ray remux viide · 31,7 GB

Tuhkatriinu (1950), 44:10. Tume ühtlane taust on pakkimisele raske: DVD-ripil on see silutud ja servad sulavad, AV1 väljundis on alles sama maalitud tekstuur mis Blu-rayl.

Kaadri täpsus

5 kaadrit sekundis tähendab, et ajastus võib olla kuni 0,2 sekundit nihkes. Huulte järgi on see selgelt näha. Kuidas jõuda kaadri täpsuseni ilma kogu filmi täiskiirusel läbi vaatamata?

Täpsustus käib kahes astmes. Esmalt leitakse mõlemast failist stseenivahetused ja paaritatakse need. Siis valitakse kuni 16 kõige selgemat lõikekohta, umbes üks iga 5 minuti kohta, ja ainult nende ümbrus vaadatakse üle kõigi kaadritega. Täpne lõikekaader leitakse mõlemas failis ja ajakaarti parandatakse selle järgi. Nii jõuab täpsus umbes 0,04 sekundini, mis on alla selle, mida silm märkab, kuigi uuesti vaadatakse vaid mõni sekund kogu filmist.

Kasuõed voodis DVD-ripist, 1080p peale skaleeritud

DVD-rip VMAF 36,2 · 734 MB

Kasuõed voodis Resynci AV1 väljundist

Resync AV1 VMAF 98,0 · 2,32 GB

Kasuõed voodis Blu-ray remuxist, võrdluse aluseks olev originaal

Blu-ray remux viide · 31,7 GB

Tuhkatriinu (1950), 1:01:40. Voldid, näojooned ja voodi kullatud kaunistused: DVD-ripil jooned paksenevad ja sulavad kokku.

Heli

Kuidas venitada eesti heli nii, et see püsiks paigas terve filmi, hääled kõlaksid õigesti ja lõikekohtades ei kostaks klõpse?

Väike venitus (kuni 6%) tehakse nii, et koos kiirusega muutub ka helikõrgus. Kiirendatud DVD puhul on see just õige: kiirendamine tõstis hääli, nii et aeglustades saavad hääled tagasi oma loomuliku kõrguse. Arvutus on nii täpne, et ka üle tunni pikkuse lõigu peale jääb nihe alla 0,006 sekundi. Suuremate venituste puhul kasutatakse tööriista, mis hoiab helikõrguse paigal.

Mis ei töötanud, 1: lõikude kokkuliitmine sujuva üleminekuga. Iga liitekoht lühendas heli natuke ja sadade lõikude peale kogunes sekundeid nihet. Nüüd liidetakse lõigud nii, et muutub ainult valjus, mitte pikkus, ja ajatelg püsib täpselt paigas.

2: ühe filmi alguses oli 11 sekundit eesti heli, millel polnud kindlat vastet. Esimene versioon venitas selle 13,4 sekundi pikkuseks ja tulemus kõlas „nagu vee all”. Nüüd mängitakse selline algus tavakiirusel ja nii, et see lõpeb täpselt esimese kindla vaste juures.

3: vaikus kohtades, kus eesti heli pole. Paar sekundit vaikust kõlas nagu katkine fail. Nüüd täidetakse need kohad originaalfilmi heliga, sobitatud sama valjuks: paar sekundit originaalkeelt mõjub tõlkimata hetkena, vaikus aga veana.

Tõld öises linnas DVD-ripist, 1080p peale skaleeritud

DVD-rip VMAF 40,3 · 734 MB

Tõld öises linnas Resynci AV1 väljundist

Resync AV1 VMAF 97,1 · 2,32 GB

Tõld öises linnas Blu-ray remuxist, võrdluse aluseks olev originaal

Blu-ray remux viide · 31,7 GB

Tuhkatriinu (1950), 48:20. Öises stseenis kaob DVD-ripil tumedatest kohtadest detail, AV1 väljundis on müüride tekstuur ja tõlla peened jooned alles.

Pildi pakkimine

Kuidas teha 20+ GB Blu-ray pildist kordades väiksem fail ilma nähtava kvaliteedikaota ja teha seda kiiresti?

Pilt pakitakse uue AV1-koodekiga, mis annab sama kvaliteedi palju väiksema failiga. Töövoog proovib ise järele, milline arvuti riistvara seda kõige kiiremini teeb, alustades graafikakaardist. Proovib päriselt, viie kaadri pakkimisega, sest tihti väidab tarkvara, et oskab midagi, mida riistvara tegelikult ei toeta.

Mis ei töötanud: faili suuruse valimine filmi nime järgi. Üks versioon arvas nime järgi, et tegu on klassikalise joonisfilmiga, ja andis sellele liiga vähe ruumi. Nüüd sõltub faili suurus ainult pildi suurusest ja kaadrisagedusest, eesmärgiga hoida kvaliteet selgelt üle nähtava piiri.

Uuematel NVIDIA kaartidel on kaks pakkimismootorit (NVENC), nii et film jagatakse kaheks pooleks, mis pakitakse korraga. 92-minutilise filmi pakkimine kiirenes umbes 5 minutilt 3 minutile ja 46 sekundile.

Pärast pakkimist mõõdetakse kvaliteeti VMAF-iga. See on Netflixi loodud mõõdik 100-palli skaalal, kus üle 90 on silmaga originaalist raske eristada. Ka see ei töötanud esimese hooga: mõõtja võrdles kaadreid naabritega ja andis umbes 96 väärt failile hindeks 13–86. Nüüd võrreldakse täpselt samu kaadreid.

All on Tuhkatriinu näitel sama ala kolmest failist Blu-ray pikslites. DVD-koopia on suurendatud 1080p peale nii, nagu teler seda näitaks. Kogu filmi peale on tulemuse VMAF 97,5 (nõrgim koht 95,4) ja DVD-koopial 37,5. Fail on 2,32 GB, 13,7 korda väiksem kui 31,7 GB Blu-ray. 734 MB DVD-koopiast on see suurem, aga vahe pildis on näha ka ilma mõõtmata.

Hiir Jaq DVD-ripist, 1080p peale skaleeritud

DVD-rip VMAF 47,6 · 734 MB

Hiir Jaq Resynci AV1 väljundist

Resync AV1 VMAF 96,3 · 2,32 GB

Hiir Jaq Blu-ray remuxist, võrdluse aluseks olev originaal

Blu-ray remux viide · 31,7 GB

Tuhkatriinu (1950), 5:48. Karvad, vurrud ja müts: DVD-ripil pehmed servad ja plokiartefaktid, AV1 väljundis Blu-rayga peaaegu sama pilt. VMAF on selle 4-sekundilise stseeni kohta Blu-ray vastu 1080p juures.
Kass Lucifer DVD-ripist, 1080p peale skaleeritud

DVD-rip VMAF 54,6 · 734 MB

Kass Lucifer Resynci AV1 väljundist

Resync AV1 VMAF 96,6 · 2,32 GB

Kass Lucifer Blu-ray remuxist, võrdluse aluseks olev originaal

Blu-ray remux viide · 31,7 GB

Tuhkatriinu (1950), 18:21. Kõige peenemad jooned, nagu vuntsid, näitavad vahet kõige selgemalt. Kogu filmi peale (20 akent) on AV1 tulemus 97,5 ja DVD-rip 37,5 (10 akent).

Kvaliteedi mõõtmine

Kuidas teada, kas tulemus on päriselt parem kui DVD-koopia ja milline paljudest allikatest on kõige parem?

Kahe eri väljalaske võrdlemiseks ehitasin mõõtmise, mis joondab kõigepealt ajateljed ja pildi kuju ning otsib iga lõigu jaoks parima kaadrivaste. Nii ei loeta väikest ajalist nihet kvaliteedikaoks. Pildi teisendamine ise võtab paar punkti, nii et tulemus on pigem ala- kui ülehinnatud.

Et kogu kollektsiooni ei peaks selleks läbi pakkima, treenisin masinõppe mudeli, mis hindab kvaliteeti ilma originaalita, ainult faili enda andmete põhjal. Mudel õppis 1224 näite pealt: Blu-ray lõigud, mis olid pakitud eri seadetega. Jälgisin, et mudel ei õpiks lihtsalt filme ära tundma. Iga filmi hinnang tuleb 12 lühikesest proovist ilma pilti lahti pakkimata. Nii hinnati läbi 635 filmi.

Hiired sädelevas võlupilves DVD-ripist, 1080p peale skaleeritud

DVD-rip VMAF 20,5 · 734 MB

Hiired sädelevas võlupilves Resynci AV1 väljundist

Resync AV1 VMAF 98,1 · 2,32 GB

Hiired sädelevas võlupilves Blu-ray remuxist, võrdluse aluseks olev originaal

Blu-ray remux viide · 31,7 GB

Tuhkatriinu (1950), 55:50, kõige raskem mõõdetud stseen: sajad väikesed liikuvad tähed. DVD-ripil on need hägused ja kahekordsed (VMAF 20,5), AV1 väljund on Blu-rayga peaaegu sama (98,1).

Kiirus

Kuidas mõõta kiirust nii, et ei parandaks valet asja?

Iga kiirendus läbib sama kontrolli: vana ja uus kood jooksevad sama filmi peal ning kõik vahetulemused ja lõplik helifail peavad olema bitt-bitilt samad. Alles siis loeb kiirus.

Kõige õpetlikum viga: üks kiirendus tundus mõõtmistes kasutu ja kustutasin selle. Tegelikult ei töötanud see kordagi: väike viga andis kaks korda rohkem kaadreid, kontroll kukkus läbi ja kood läks vaikselt tagasi vanale aeglasele teele. Mõõtsin seega kuus korda sama asja. Pärast parandust läks see samm 1,6 korda kiiremaks. Nüüd annab selline tagasilangus kõva häälega teada.

Suurim võit peitus ühes seades. Viimane samm võttis 69% kogu ajast. Tükkideks lahti võttes selgus, et süüdi oli Blu-ray originaalne helirada, mis jagunes failis miljoniteks väikesteks tükkideks. Selle väljajätmine tegi sammu 6,4 korda kiiremaks ja faili 6,1 GB väiksemaks.

Veel mõõdetud: protsessoril töötamine on 4,7 korda aeglasem kui graafikakaardil, nii et sinna liikumine pole lahendus.

Automaatika

Kuidas lasta järjekorral terve öö üksi töötada ja olla hommikul kindel, et kõik läks hästi?

Iga sammu tulemus salvestatakse vahemällu, nii et kui muuta näiteks ainult heliseadeid, ei pea kogu filmi uuesti läbi vaatama. Enne algust kontrollitakse, et kõik failid on olemas. Töö käib kahe filmi kaupa korraga, igal filmil on oma logi ja järjekorra seis salvestatakse nii, et katkestus ei saa seda rikkuda. Iga valmis filmi puhul mõõdetakse heli ja pildi vahe uuesti üle.

Mis ei töötanud: lasta tööriistal ise otsustada, kumma faili pilt alles jääb. „Rohkem piksleid võidab” kõlas mõistlikult, aga valis ühel korral nähtavalt halvema pildi, mis oli lihtsalt suurem. Nüüd valib pildifaili inimene ja kõik muu leitakse endiselt automaatselt.

Tulemus

Esimeses järjekorras oli 18 filmi. Kõik 18 valmisid automaatselt, igaüks 3–9 minutiga (tavaliselt umbes 4 min 43 s), kaasa arvatud pildi pakkimine, kaks filmi korraga. Valmis failides oli heli ja pildi vahe kõigil kuni 1 millisekund.

Tuhkatriinu (1950) näitel: Blu-ray on 31,7 GB, eestikeelne DVD-koopia 734 MB. Tulemus on 2,32 GB fail Blu-ray pildi ja eesti heliga. Pildikvaliteet Blu-ray vastu on 97,5 punkti 100-st (nõrgim koht 95,4), DVD-koopial 37,5.

Edasi

Järgmisena kasutan kvaliteedi hindajat allikate automaatseks valikuks: kui samast filmist on mitu versiooni, valib töövoog ise parima pildi ja parima eesti heli ning paneb järjekorra kokku ilma käsitsi paaritamata.

Järgmine samm

Sinu projekt võiks olla järgmine