Recenze  |  Aktuality  |  Články
Doporučení  |  Diskuze
Filmy a seriály, streamovací služby
Televize  |  Projektory
Audio a domácí kina
Multimediální centra  |  Ostatní
Svět hardware  |  Digimanie
Svět mobilně

Opravení 8mm scanu v ProRes, které je ve 25fps místo 18fps

Lukke_ce4you (22)|14.3.2017 01:01
Zdravím. Nechal jsem si nascanovat filmové 8mm materiály na tom nejkvalitnějším co je možné - na nejmodernějším filmovém scanneru v Pragafilm. Materiál mi byl vyexportován do 25 fps, prý z důvodu, "aby šly filmy přehrávat na všech přístrojích". Kvalita je obrazu je perfektní, ale na to dublování nějakých snímků jsem tedy citlivý.

Formát : QuickTime
Formát/ : Original Apple specifications
Velikost souboru : 41,4 GiB
Duration/String : 32 min 50 s
Celkový BitRate : 180 Mb/s
Encoded date : UTC 2015-01-27 11:53:42
Tagged date : UTC 2015-02-18 16:04:38
Enkódoval : Apple QuickTime
©TSC : 25
©TSZ : 1

Video
ID : 1
Formát : ProRes
Format_Version : Version 0
Format_Profile : 422 HQ
CodecID : apch
Duration/String : 32 min 50 s
Bit rate : 180 Mb/s
Šířka : 1 920pixely
Výška : 1 080pixely
Poměr stran : 16:9
Frame rate : 25,000 FPS
ColorSpace : YUV
ChromaSubsampling/String : 4:2:2
ScanType/String : Progressive
Bits/(Pixel*Frame) : 3.463
StreamSize/String : 41,2 GiB (100%)
Enkódoval : abm0
Jazyk : English
Encoded date : UTC 2015-01-27 11:53:42
Tagged date : UTC 2015-01-27 12:07:23
colour_primaries : BT.709
transfer_characteristics : BT.709
matrix_coefficients : BT.709
matrix_coefficients_Original : BT.709

Já si ale říkám, že bych měl zachovat přece původní snímkovou frekvenci - a tou je 18p u Super8 a 15p u Normal8. Video mám uložené v ProRes ve 200Mbps bitrate. Je možnost, jak toto, třeba nějakým scriptem opravit zpět na 18p? Že by to poznalo stejné snímky a ty prostě vyhodilo?

Případně co byste doporučovali? Díky za postřehy!

Vystřihl jsem 5 sekund (a enkodoval znovu do ProRes), zasílám ukázku (68 MB):
https://www.dropbox.com/s/c6p00mma85qqg9f/Cuba.mov?dl=0
Saxel (2279)|14.3.2017 09:22
Možnost vyseparování zdrojových snímků samozřejmě je. Z mého pohledu je nejsnazší pomocí Avisynth skriptu - pro tvůj vzorek stačí příkaz
[CODE]SelectEvery(25,0,1,2,4,5,6,8,9,10,12,13,15,17,18,19,21,22,23)[/CODE]
Otázkou je, co s tím potom? Pro bezproblémové přehrávání je potřeba dostat snímkovou rychlost na nějaký standard (24, 25, 30, 50, 60 fps). Možnosti jsou 2 - buďto zdvojování snímků nebo dopočet mezisnímků v časové ose, což ale má různé neduhy.
Lukke_ce4you (22)|14.3.2017 11:25
Děkuju, a jak jsi získal tenhle počet? Z mého videa nebo je to nějaký standard? Ty bys to nechal tak jak to je v těch 25 fps? Jaký způsob bys volil jako ideální?

Přehrávat se totiž bude nejčastěji na televizi při 60 Hz, samozřejmě je možné tedy nastavit jakoukoli jinou (na mých TV pouze nižší) obnovovací frekvenci.
Saxel (2279)|14.3.2017 13:01
Jednoduše jsem si první vteřinu odkrokoval po snímku a vypustil duplicity. Jak bych to řešil, to nevím, musel bych to zkusit a až podle výsledku bych se rozhodnul.
vivid.sk (11472)|14.3.2017 13:17
Pri Normal8 nebude problem, tam mozes zvolit ako vystup 30p (a snimky klasicky zduplikujes), tych 18 fps bude vacsi oriesok, nieje to priamy nasobok ziadneho standardneho fps.
Saxel (2279)|14.3.2017 14:15
Pro představu ti tu dám tvé video s dopočtenými snímky s použitím metody MFlowFps pluginu mvtools2 pro Avisynth. Je třeba podotknout, že tvůj vzorek se zrovna dopočítává dobře, protože obsahuje jenom lineární pohyb. Pokud změna mezi snímky nelze popsat pohybovými vektory, dochází logicky ke vzniku artefaktů a chyb.
Odkaz: https://drive.google.com/file/d/0B691zTNXVPurR0JPYXdjbklSdzg/view?usp=sharing
použitý skript:
[CODE]SelectEvery(25,0,1,2,4,5,6,8,9,10,12,13,15,17,18,19,21,22,23)
super = MSuper(pel=2)
backward_vec = MAnalyse(super, blksize=8, overlap=2, isb = true, search=3)
forward_vec = MAnalyse(super, blksize=8, overlap=2, isb = false, search=3)
MFlowFps(super, backward_vec, forward_vec, num=25, den=1)
AssumeFPS(25)
[/CODE]
Lukke_ce4you (22)|14.3.2017 22:22
Děkuju za reakce! Saxel, to tvoje video má plynulost zcela někde jinde, vypadá to skvěle. Otázkou je, jak říkáš, jak to bude vypadat v jiných scénách. Pokud by to nedělalo moc neplechu, udělal bych takto asi vše, to škubání mého původního videa mi fakt dost vadí... Čili materiál bych normálně nastřihal ve Vegas v ProRes, vyexportoval ve stejném formátu a potom vše prohnal Avisynthem pro opravu...
Saxel (2279)|15.3.2017 08:42
To není dobrý postup. Když zdroj budeš editovat ve Vegasu tak jak ho máš, narušíš posloupnost pořadí zdvojených snímků a už nebudeš schopný dostat původních 18p. Lepší postup bude tento:
1. nainstaluj do PC Ut Video Codec (bezztrátový kodek for Windows)
2. ze zdrojového videa vyseparuj 18p (pomocí SelectEvery) a ulož s kompresí UtVideo YUV422 BT.709 třeba ve VirtualDubu
3. natáhni do Vegasu, nastav Project properties podle zdroje (1080/18p) a edituj dle libosti.
4. z Vegasu rendruj do Video for Windows (avi) a zase použij kodek UtVideo YUV422 BT.709, framerate=18p
5. použij 2 skripty pro avisynth - jedním vytvoř duplikace některých snímků na výsledných 25p (zase stačí příkaz SelectEvery) a druhým zkus dopočítání mezisnímků, jak jsem naznačil výše.
Kroky 4. a 5. lze spojit do jednoho využitím frameserveru, pokud ho používáš.
Lukke_ce4you (22)|15.3.2017 10:38
To je pravda a je to logické, nedošlo mi to. O frameserveru jsem nikdy neslyšel, má to nějaké výhody? Ve Vegas Pro 14 střihám denně. Jinak pokud použiju bod 4, vznikne mi z toho shodné video, jako originál, jaký by to mělo smysl?
Saxel (2279)|15.3.2017 11:40
Krok 4 je myšlen až po editaci ve Vegasu, navazuje na bod 3. "edituj dle libosti".
Informací o Debugmode Frameserveru je na internetu i na tomto fóru spousta, v tomto vlákně asi není potřeba to víc rozebírat.
ai (2993)|15.3.2017 18:47
specialne na 8mm capture byl napsany getdups() to by jsi mohl tak odzkouset

a jeste ja take pouzivam ten UTvideo, je to dobre, ale pozor jak jej nazctes do Vegasu, Vegas si to prevede do RGB (to dela vzdy ale muze zmenit colorspace v tomto pripade (0-255 na 16-235), tusim musis po nacteni aplikovat na ten clip SonyLevels efekt a rozklikni ty moznosti tam, zvol: Studio RGB to Computer RGB (nebo opacne, ted si nevzpomenu). Proste pokud to UTvideo bude zasedlepo nacteni do Vegasu nebo barvy budou mnohem sytejsi nez original, mel bys pouzit jednu z tech moznosti, pokud barvy budou sedet neudelas nic, ale je dobre o tom vedet ...
ai (2993)|15.3.2017 18:56
ja jsem pred lety komusi udelal video jak se instaluje ten DebugMode Frame server, doufam, ze to furt plati i na ty dnesni verze


--frame server exportuje project settings, pozor na to, ne clip properties, tedy properties projektu musi byt stejne jako properties klipu a nezapomen i na audio (aby byla stejna frekfence)
--ma vyhody pokud mas na timeline jeden typ videa, tedy nastav properties jako mas klipy
--enkodujes vzdy primo bez nutnosti exportovat ten intermediate z Vegasu
--pokud jsi advanced user a treba si udelas nejake dodelavky v batch skripty najednou si muzes delat jednoklikove custom enkodery a muze to pouzivat i ten co tomu nerozumi, jen exportuje ten debugmode frame server avi a pak klika batch script
--pokud ovsem delas barevne korekce a kdovi co, vypocet na timeline je slozity a enkodujes treba na 2pass nastaveni, ne crf 1pass, tak je snad rychlejsi to exportovat jednou do intermediate (utvideo napr.) a az to pak enkodovat na 2pass mimo Vegas
--frame server muze mit bugy, zalezi jaka verze vegasu se pouziva, jsou tri, tiche audio , kdyz system rozjede stejny frame server podruhe (bez restartovani frame serveru ve Vegasu), muze byt audio stopa ticho. Dalsi bug - audio glitch ,na konci videa to udela takovou 1s smycku. Treti bug - nastavuje 44100Hz a nezalezi jake audio nastaveni jsou, je mozne ze autor tyto bugy uz odstranil v poslednich Verzi vegasu, netusim
s temi bugs/chybami se nemusis setkat nebo muzes, je dobre o tom vedet, btw. moje skripta to mohou obchazet, to byl dalsi duvod proc to pouzivam, pokud je tiche audio z nejake verze vegasu, tak jen ve Vegasu rychle se exportuje jen audio a ten BAT to pak pouzije a muxuje s tim to vysledne MP4
ai (2993)|15.3.2017 19:18
[QUOTE=Lukke_ce4you;529058]Jinak pokud použiju bod 4, vznikne mi z toho shodné video, jako originál, jaký by to mělo smysl?[/QUOTE]
Saxel mysli, ze budes to video strihat, ze tam nactes spoustu videi a udelas si filmek. Tak se pouziva intermediate video, striha se to. Pokud ne, pokud prevadis jen jedno video tak z Vegasem nemusis delat. pouzije se ten Prorez, nactes to do Avisynthu vyhodis duplicitni smimky, pokud chces a hned muzes exportovat do H.264. Zalezi na tobe.
Lukke_ce4you (22)|25.3.2019 14:31
Ahoj Saxel. Tak jsem se k tomu dostal až po 2 letech... A bádám v tom a jsem nějak bezradný. Není mi moc jasné jak ten script Selectevery použít. Abych ho vyexportoval ve VirtualDubu např. Uložil jsem ten řádek jako .avs script a dále jsem zaseknutý...

Zkusil jsem ten script na první řádek dát ještě source, a pak to načíst přímo VIrtualDubem, ale vyhodí mi to chybu... Avisynth open failure: AVIFileSource: couldn't open file F:\_8mm\Cuba.mov (F:\_8mm\selectevery.avs, line1). To video je ve formátu ProRes a WindowsMediaPlayer ho nepřehraje (když spustím rovnou , tak jestli to není ten důvod... Přitom otevřít Virtualdubem přímo to video Prores jde. Zřejmě mám někde vadu v tom řádku ohledně importu videa. (avisource).

AVISource("F:\_8mm\Cuba.mov ")
SelectEvery(25,0,1,2,4,5,6,8,9,10,12,13,15,17,18,19,21,22,23)
Saxel (2279)|26.3.2019 10:01
AviSource ti to nenačte. Pokud máš v PC nainstalovaný QuickTime (což asi máš, jinak by ti to nenačetl ani Vegas), stáhni si do Avisynthu plugin QTSource a také MVTools a potom může skript vypadat následovně:
[CODE]
LoadPlugin("C:\Program Files (x86)\AviSynth\plugins\qtsource.dll")
LoadPlugin ("C:\Program Files (x86)\AviSynth\plugins\mvtools2.dll")

QTInput("F:\_8mm\Cuba.mov", color=2, audio=0, quality = 100)
SelectEvery(25,0,1,2,4,5,6,8,9,10,12,13,15,17,18,19,21,22,23)
ConvertToYV12(interlaced=false,matrix="pc.709")
super = MSuper(pel=2)
backward_vec = MAnalyse(super,blksize=16, overlap=8, isb = true, search=3)
forward_vec = MAnalyse(super,blksize=16, overlap=8, isb = false, search=3)
MFlowFps(super, backward_vec, forward_vec, num=25, den=1)
AssumeFPS(25)
[/CODE]
Lukke_ce4you (22)|26.3.2019 11:24
Paráda, to je bůh ten Saxel! Funguje skvěle i s dopočtem! Čili do 8mm Super8 filmu se jdu pustit, to je paráda! Jen jsem narazil na anomálii u Normal8. Vypadá to, že je také naskenovaný na 18 snímků za sekundu, protože pokud si spočítám políčka na začátku filmu, vychází mi vzorec takto (dal jsem pomlčky pro lepší přehlednost):

SelectEvery(25,
0,--2,3,4,--6,7,8,--10,11,12,--14,15,16--,18,19,20,--22,23,
25--,27,28,29,--31,32,33,--35,36,37,--39,40,41--43,44,45,--47,48,

Vychází mi to tak, že aby se to vždy opakovalo, je to vždy 18 snímků... A lidi chodí pochopitelně rychle. Nevěděl bys jak tohle vyřešit? To vypadá, že to udělali v PragaFilm blbě, protože ten vzorec je úplně stejný jako u Super8 filmů...

A ještě úvaha - nebylo by vhodnější to pak exportovat spíše do 24FPS, než 25FPS? Znamenalo by to, že by se pak duplikoval každý 3. snímek a mohlo by to být plynulejší...? To samé ten dopočet, tam by se pak jen změnilo AssumeFPS na 24 a to num=24, že? Nebylo by to vhodnější?
Saxel (2279)|26.3.2019 15:06
Já nevím, jakou rychlostí byl snímán film Normal8, ale tvůj SelectEvery je podivný už v tom, že vybíráš z každých 25 snímků také snímky s vyšším číslem než 25.
Jinak souhlasím s tím, že pro ten Super8 bude lepší doplňování do rámce 24 fps.
Lukke_ce4you (22)|26.3.2019 17:13
Nevybírám vyšší čísla, to byl jen příklad ten druhý řádek, aby bylo vidět, jaká je opakující se posloupnost... Zkrátka se na 25fps výstupu .MOV, co jsem od nich dostal, z Normal8 materiálu dublují snímky úplně stejným způsobem jako v případě Super8. Předpokládám tedy, že nebrali v potaz, že film je Normal s jen 15 snímky za sekundu. Pak bych totiž přehrával bez problémů 30fps a žádné dopočítávání by nebylo třeba. Ale nenapadá mě, jak to z toho vytáhnout, těch 15 snímků. A nebo si prostě jen sedím na vedení. Napadá mi tedy řešení vyfiltrovat to na 18fps (jako dělám teď) a pak to nějak nastavit tak, aby každou sekundu se zobrazilo jen 15 snímků...
Saxel (2279)|27.3.2019 06:54
Jestli jsem tě dobře pochopil, pak by mělo stačit toto:
[CODE]
SelectEvery(25,0,1,2,4,5,6,8,9,10,12,13,15,17,18,19,21,22,23)
AssumeFPS(15)
[/CODE]

To znamená vyloučit dublované snímky a nastavit fps na 15, popřípadě zdublovat každý snímek a nastavit fps na 30.
Saxel (2279)|27.3.2019 09:40
Ještě doplním, že zdvojení na 30p se dá jednoduše provést přímo v příkazu selectevery:
SelectEvery(25,0,0,1,1,2,2,4,4,5,5 ... atd.
AssumeFPS(30)