Ich habe ein Pal Video (25fps, progressiv) das möchte ich langsamer abspielen damit es "länger" wird. Aber am Ende sollen Kameraschwenks nicht ruckeln und vor allem die Abspielrate soll bei 25fps bleiben. Mir schwebt so vor mein Video um 20 % länger zumachen. Also müssen wenn es voher 1000 Frames lang war später 1200 Frames rauskommen.
Das Video in Avisynth einfach langsamer abspielen und mit 25 fps zu encoden bringt bestimmt hüsches Nachruckeln in den Bewegungen mit sich. Ich glaube eher ein abgewandeltes DeInterlaceing oder PAL <->NTSC Verfahren könnte das besser aber leider kann ich sowas nicht alleine aufstellen.
Video länger machen ohne fps zu verändern
-
-
-
Code
Alles anzeigenLoadPlugin("DGDecode.dll") MPEG2Source("proj.d2v") bicubicresize(720,576) ConvertToyuy2() ConvertFPS(30) AssumeFPS(25) letterbox(0,96) ConvertToYV12
So,
dieses Script habe ich dann zu Mpeg2 codiert (interlaced ,TTF) aber leider sehen Bewegungen am TV unsauber aus. Um die Personen/Gegenstände die sich bewegen ist immer ein Geisterschatten herum. -
Muss ja. Schließlich werden bei "ConvertFPS" aus ehemals je 25 Frames je 30. Was glaubst du wohl, wie das funktionieren soll? Wenn jedes 5. Bild einfach bloß verdoppelt werden würde, würde es sichtlich ruckeln. Werden dagegen die Inhalte von 5 Frames auf 6 Frames gestreckt, dann muss überblendet werden:
Neues Bild 1 <= 100% altes Bild 1
Neues Bild 2 <= 20% altes Bild 1 + 80% altes Bild 2
Neues Bild 3 <= 40% altes Bild 2 + 60% altes Bild 3
Neues Bild 4 <= 60% altes Bild 3 + 40% altes Bild 4
Neues Bild 5 <= 80% altes Bild 4 + 20% altes Bild 5
Neues Bild 6 <= 100% altes Bild 5
...Wenn du wolltest, dass Bewegungen analysiert und zu komplett neuen Bildern berechnet werden, dann wirst du dir einen Hardware-Video-Editor kaufen müssen, z.B. einen Videosystem-Konverter, oder gleich ein DaVinci (Kostenpunkt: Millionen).
Bisher jedenfalls ist mir noch kein AviSynth-Filter bekannt, der dermaßen rechenaufwändige Rekonstruktionen anbietet. Das müsste ja erst mal jemand programmieren...
-
also im Modus "schalten" ruckelt es unglaublich
hmm und schon ist es vorbei mit der Mächtigkeit des Frameservers
schade, dann muss ich wohl warten bis wir die Steinzeit überwunden haben. -
Das hat mit den Fähigkeiten des Frameservers nichts zu tun: Die Aufgabe eines Frameservers ist lediglich, anderen Programmen Video bereitzustellen.
Was du hier verlangst, geht einfach über die Möglichkeiten eines Freizeit-Projektes hinaus. Denn du darfst nicht vergessen: Was hier ermöglicht wurde, hat kaum einer der beteiligten Personen Geld eingebracht. Je schwieriger die Herausforderung ist, umso dankbarer ist jeder für zusätzliche Motivation. Und du hast hier nun wirklich eine der schwierigsten Wünsche gestellt - vermutlich ohne dir überhaupt Gedanken darüber zu machen, was das "Verlangsamen" überhaupt technisch bedeutet.
Ich hoffe, durch meine kleine Tabelle der "Mischverhältnisse" ist es wenigstens etwas klarer geworden. Aber der Aufwand, den der "Erfinden" von Zwischenbildern aus Bewegungsanalyse heraus erfordert, ist derart hoch, dass man das einem Freizeit-Programmierer vermutlich kaum zutrauen kann. Ihre Fähigkeiten deshalb ans "steinzeitlich" zu betrachten, ist eine Frechheit sondergleichen. Und das kann nur jemand behaupten, der keine Ahnung hat, wie schwer dieses Vorhaben tatsächlich ist.
-
nee ich wollte nur ein bisschen provozieren aber nicht beleidigen
"Steinzeit" war im Bezug auf die Technik von heutzutage bezogen die immer sehr schnell verpufft wenn ich ein "kleines" Gedankenspiel mache was dann immer ganz schnell zu einer unlösbaren Aufgabe wird. Das hatte ich schon öfter, leider. Ich weiss Avisynth und Co. sehr zu schätzen und einzuschätzen was fürne Wahnsinns Arbeit dahintersteckt.
Das Grundproblem war ein Video länger zu machen aber dahinter steckt eine komplexe Aufgabe.
schade - egal - abgehakt -
Na, gib die Hoffnung nicht auf - im Bereich "Motion Compensation" gab es schon viele Ideen, und ich kenne auch bestimmt noch nicht alle AviSynth-Filter, die existieren...
-
LigH: die mvtools version 0.9.6.2 bietet eine funktion mvconvertfps mit der ruckel- und blendfreie framerateumwandlungen möglich sind.
Matt Kirby: ist dein Video interlaced oder progressive?
bei interlaced video musst Du natürlich erst deinterlacen, dann frameratewandeln, dann reinterlacen.
z.B. so:
Code
Alles anzeigen# video laden xxxsource("bla.xxx") #fieldorder festlegen assume?ff() #deinterlacen auf 50 fps leakkernelbob() # tdeint(mode=1) # mvbob() #framerate wandeln mvfps(59.94) #alte framerate wieder hinbiegen, und audio wieder zurechtbiegen assumefps(50,true).ssrc(last.audiorate) #reinterlacen assume?ff().separatefields().selectevery(4,0,3). weave()
mvfps findest Du hier ganz unten:
http://forum.doom9.org/showthread.php…highlight=MVFPS -
ok danke ich probiere das mal
mein Orgvideo ist Mpeg2 progressiv (auch wenn es interlaced codiert ist probiere ich es progressive zu behandeln, wie du mir schonmal früher geraten hast)
mal sehen was rauskommt... -
wenns progressive ist, dann lass es progressiv.
also nicht de- und reinterlacing machen!
natürlich kannst Du dann auch progressive encoden!
-
Das Ergebnis sieht schonmal recht gut aus. Kein Ruckeln und die Schatten sind auch weg. Nur ein kleiner Schönheitsfehler ist noch da und zwar entstehen nun beim Übergang von 2 Szenen 1-3 Mischbilder was wirklich etwas störend ist. Sonst leistet die Funktion echt Klasse Arbeit. Mit den 2 anderen Optionen habe ich schon etwas rummgespielt aber das brachte nicht viel. Irgendwie müsste man ihm eine Szenenerkennung beibringen. Oder kann man in der Funktion was an den internen Werten ändern?! Daran trau ich mich aber nicht ran..
edit:wenn ichs interlaced behandele ergibt sich nur 1 Mischbild vielleicht weil mit 50 fps gearbeitet wird ? Vielleicht hilft ein "Aufblähen" auf mehr Bilder zwischendurch noch besser ?!
-
-
geiles Teil - lustig was Du alles so aus dem Hut zauberst, leider ändert sich aber gar nix
kann das an meiner DGIndex.dll liegen die das Motionmask nicht mehr beinhaltet ?
die Motionmaskfkt musste ich nämlich von "motiontools" laden -
Motion-Kask-Funktionen waren schon immer in den mvtools, die waren noch nie Bestandteil der DGDecode.dll, oder?! (DGIndex.exe, nicht .dll)
Leider tauchen in manchen Skripten die darin verwendeten Plugins (und teilweise ihre exakten Versionen) nicht immer ausdrücklich auf...
-
Es gibt das Programm MotionPerfekt.
Es kann genau das was du brauchst: Videos länger machen ohne fps zu verändern
Das Programm gab es sogar als Vollversion (v. 4.3) auf der CHIP (5/2005).
-
motionmask = masktools.dll
-
FatFaster
danke, das probiere ich auch malscharfis_brain
ich gehe mal davon aus dass bei dir die Funktion Erfolge gebracht hat
Bei mir ändert sich im Vergleich zur anderen nix woran mag das liegenCode
Alles anzeigenLoadPlugin("MVTools.dll") LoadPlugin("MaskTools.dll") LoadPlugin("DGDecode.dll") function mvfpsscd(clip i, float fps, int "oversample", int "blurradius") { blurradius=default(blurradius,1) oversample=default(oversample,1) j=i.temporalsoften(2,4,5,2) fwd=mvanalyse(j,isb=false,lambda=4000) bwd=mvanalyse(j,isb=true, lambda=4000) mv=i.mvconvertfps(bwd,fwd,fps=fps*oversample).deblock() global mv= (oversample>1) ? mv.temporalsoften(blurradius,255,255,mode=2).selectevery(oversample,0) : mv global ch=i.changefps(fps) #. subtitle("ch") global msk0=ch.duplicateframe(0).reduceby2().reduceby2().motionmask(thsd=255,y=3,u=1,v=1) global msk1=msk0.trim(1,0) global msk2=msk0.trim(2,0) global msk3=msk0.trim(3,0) f0=scriptclip(ch,"""sc""") #.subtitle(string(a0)+" "+string(a1)+" "+string(a2))""") f1=f0.frameevaluate("""sc= (sc2 || sc1) ? ch : mv""") f2=f1.frameevaluate("""sc2=( (a2 > (a1*5+25)) && (a2 > (a3*5+25)) ) ? true : false""") f3=f2.frameevaluate("""sc1=( (a1 > (a0*5+25)) && (a1 > (a2*5+25)) ) ? true : false""") f4=f3.frameevaluate("a3=averageluma(msk3)") f5=f4.frameevaluate("a2=averageluma(msk2)") f6=f5.frameevaluate("a1=averageluma(msk1)") f6.frameevaluate("a0=averageluma(msk0)") } MPEG2Source("proj.d2v") mvfpsscd(30) AssumeFPS(25)
-
Toll.
Und wie lautet die Fehlermeldung?
-
Es gibt keine, es läuft ja
aber nicht anders als voher. Es gibt immernoch diese Mischbilder -
Jetzt mitmachen!
Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!