HD 720p 60fps nach 576P 25fps

  • Hi,

    Ich bin eigentlich noch ein Avisynth Neuling, habe jedoch trotzdem ein Problem :)

    Ich suche ein Script, das mir ein 720P 60 (59,94) Video in 576P 25 wandelt. Wenn möglich mit Frameinterpolation. Zur Zeit benutze ich noch Aftereffects, um die Frams zu interpolieren. Das alte Problem: unschärfe vs ruckeln ist dabei immer gegeben. Das Script, das ich getestet habe macht schon einen guten Eindruck, jedoch ist es bei superschnellen Sachen ruckelanfälliger als die After Effects Version und die Rendergeschwindigkeit ist nicht besser.
    Vielleicht kann mir hier jemand einen Optimierungstipp geben. Zielformat ist eine DVD, jedoch möchte ich die Dateien progressiv ausgeben.

    hier das Script, das ich grad benutze:

    loadplugin("C:\Programme\AviSynth 2.5\plugins\mvtools.dll")

    source = AVISource("*.avi").assumefps(60).converttoYV12()
    backward_vec = source.MVAnalyse(isb = true, truemotion=true, pel=2, idx=1)
    forward_vec = source.MVAnalyse(isb = false, truemotion=true, pel=2, idx=1)
    source.MVFlowFps(backward_vec, forward_vec, num=25, den=1, ml=100, idx=1)
    LanczosResize(720,576)

  • Ganz blöd dahingeplappert, ohne viel Ahnung zu haben, einfach nur, weil ich es selbst gerade benutze:

    mrestore

    Kleiner Auszug:

    Ich mache damit gerade eine Umwandlung 50i -> 23,976p, und bin eigentlich zufrieden mit den Ergebnissen.

    Edit: Achja, interpolieren tut mrestore wohl nicht, es lässt nur den Frame weg, der am vernachlässigbarstem ist. Vielleicht willst du es trotzdem versuchen.

  • videoslave:
    1) lass das assumefps(60) weg. das sorgt nur für A/V ASync!
    2) ist das video von einem Camcorder?
    oder ist es ein Film/Doku oder ähnliches? wenn es nicht von (D)einem Camcorder kommt, ist es möglciherweise 30 oder 24 fps im 60 fps Video.
    Dann muss man es erst auf diese Framerate mittels IVTC runterziehen und kann erst danach interpolieren.
    quince: mrestore() ist nur geeignet, wenn das originalvideo im verblendetem Bideo schon die gewünschte Framerate hatte.

  • Wir zeichnen hier Videospiele auf (PS3, Xbox360,Wii) mit einer Virtual Dub Modifikation und dem CineformCodec. Meistens 720P Progressiv über HDMI oder Komponenten Kabel.(Habe aber das System nicht selber eingerichtet). Zuspieler ist also die Konsole.

    Bei schnellen Spielen, wie z.B. Wipeout HD gibt es ein übles Ruckeln, wenn man Frames weglässt, da die Landschaft extrem schnell vorbeiflitzt. Deswegen, muss ich es leider interpolieren.

    @ scharfis_brain

    ist es besser von 30 Frames auf 25 Frames zu interpolieren statt von 60 ? Dachte immer, das man immer soviel Bildinformation wie möglich haben sollte.

  • okay, Du hast also echte 59.94 fps (nicht 60fps! deswegen das assumefps weglassen!).

    generell ist die reduktion der Framerate IMMER mit stärker werdendem Ruckeln verbunden.
    Die Kunst liegt darin, dieses Ruckeln einigermaßen gleichmäßig zu verteilen.

    was ist Dein Ziel? eine DVD für die Wiedergabe am TV? Oder ausschließlich wiedergabe am PC?

    für die Wiedergabe am TV solltest Du unbedingt auf 50i INTERLACED konvertieren, damit die flüssigkeit der bewegung erhalten bleibt:

    Code
    resize(704,576)convertfps([b]50[/b]) #mischt die Bilder linear gewichtetassumetff().separatefields().selectevery(4,0,3).weave() #reinterlace

    bessere Bewegungsflüssigkeit, ABER auch ber ganz heftigen bewegungen schlimme Artfekate bringt

    Code
    source=resize(704,576).converttoyv12()
    backward_vec = source.MVAnalyse(isb = true, truemotion=true, pel=2, idx=1)
    forward_vec = source.MVAnalyse(isb = false, truemotion=true, pel=2, idx=1)
    source.MVFlowFps(backward_vec, forward_vec, num=[b]50[/b], den=1, ml=100, idx=1)
    assumetff().separatefields().selectevery(4,0,3).weave() #reinterlace

    für PC-Wiedergabe würde ich es entweder bei 59.94fps belassen, oder einfach jedes 2. Bild mit selecteven() rausschmeissen, umd dann 29.97fps zu erhalten.

  • Unser Zielformat ist 16:9 PAL für eine DVD. Progressiv benutzen wir nur, damit es nicht so übel auf den LCD Fernsehern und PC´s aussieht - 25P wäre also wünschenswert, da man beides benutzen soll. Durch die Wandlung in After Effects, ist die Bewegung ziemlich flüssig. Man sieht zwar die interpolierten Frames bei schlimmen Szenen und es wird leicht unscharf, aber der Gesamteindruck vom Original ist so im Augenblick noch besser. D.h. es gibt kein bemerkbares ruckeln.

    Assume ist jetzt weggelassen...

    MVFlowFps checke ich mal aus, aber ich denke aber mal das gerade bei Schriften alles zittert, oder ?

  • Zitat

    Progressiv benutzen wir nur, damit es nicht so übel auf den LCD Fernsehern und PC´s aussieht - 25P wäre also wünschenswert, da man beides benutzen soll.

    Die meisten LCD-TVs können ja garkein 2:2 Pulldown bei PAL 25p, deinterlacen also genauso, wie bei 50i. Und die neueren DVD-Software-Pler sowie grafikkarten haben auch ganz vernünftige Deinterlacer verbaut.
    25p sieht meiner meinung nach für SPiele zu ruckelig aus. Zumal, wenn es noch von 59.94p konvertiert wurde... 50fps 50i kann da schon einiges kaschieren)

    Zitat

    MVFlowFps checke ich mal aus, aber ich denke aber mal das gerade bei Schriften alles zittert, oder ?


    Was meinst Du damit?

  • Bei pixelweiser Interpolation in After Effects fangen dünne Linien zum zittern an. Aber das war glaube ich ein Denkfehler bzw. ein zu geringes Wissen was Flowfps macht.

    Ich habe eigentlich auch schon an Interlacing gedacht...werde das wohl oder übel alles auf eine DVD brennen müssen und die verschiedenen Versionen an verschiedenen Fernsehern und PC Konfigurationen testen müssen.

  • Nimm bitte Adobe-Produkt nicht als referenz für video-konvertierungen.
    Da geht nämlich oftmals so einiges Schief!

    Lade die 720p60 video direkt in AVISynth und wandle sie dort nach 576i50 um!

    da wird nix anfangen zu zittern...
    Adobe kann halt nicht richtig mit interlace umgehen.

    kannst Du mal ein UNBEARBEITETES Sample Video (also 720p 59.94fps) bei http://rapdishare.com oder so hochladen? je mehr, desto besser...

  • After Effects ist eigentlich das einzige Adobe Produkt, dem ich 100% vertraue. Das Zeilenspringen, entsteht auch nur bei "per Pixel" interpolation.

    Ok..here we go.

    Das Spiel wurde von der Playstation 3 über HDMI (nur Video) aufgezeichnet.

    Du brauchst jedoch den Cineform Codec um das Original anzuschauen.
    Die Trialversion, beinhaltet sowohl den Encoder (Trial) als auch den Decoder.

    http://www.cineform.com/products/Downl…DTrialStart.htm

    Ich habe auch das Avisynth und After Effects Video (mit Fieldinterpolation) hochgeladen. Beide im DV Format.

    besonders deutlich sieht man das ruckeln:

    wenn die Person sich am Anfang dreht, anhand der Zebrastreifen.
    wenn die Person am Ende die Treppe raufgeht.

    Cineform Version

    http://rapidshare.com/files/91117652….part1.rar.html
    http://rapidshare.com/files/91119382….part2.rar.html
    http://rapidshare.com/files/91119832….part3.rar.html


    After Effects Version

    http://rapidshare.com/files/91121305…ffects.avi.html

    Avisynth Version

    http://rapidshare.com/files/91123766…isynth.avi.html

  • Das würde ich mal unter "erschwerte Bedingungen" verbuchen:
    - Registrierung bei Adobe, nur um einen Demo-Codec herunterzuladen ...
    - 5 einzelfiles bei Rapidshare, mit ca. 1.5 Stunden Wartezeit bis zum nächsten Download (IP-Reset ist nicht jederzeit für jedermann machbar...)

    ... das kann dauern, ich melde mich irgendwann im Verlaufe diesen Jahres nochmal. :zunge:


    Schneller Blick auf's AfterEffects-Video:
    Na toll. Hin und wieder scheint AE tatsächlich Bewegungskompensation zu produzieren. Das meiste ist aber simple Blend-Interpolation.
    Da kommt Avisynth mit 'nem ganz dummen "ConvertFPS(25.000)" dem professionellen Produkt bereits ziemlich nahe ... :schmunzel:


    edit:

    Zitat von Adobe

    You must have Premiere Pro CS3 (still Beta), 2 or 1.5.1 installed prior to installing Aspect HD. If you don't have Premiere Pro installed you can use the 30-day trial version available from the Adobe website.


    So, jetzt hab ich kein' Bock mehr. Wenn's die Quelle in einem vernünftigen, frei zugänglichen Format gibt, dann schau' ich mir das gerne mal an. Ansonsten wünsche ich weiterhin viel Spaß.

  • @ Didée

    Bei Cineform muß man sich anmelden, nicht bei Adobe.

    aber ich hätte eigentlich diesen Link schicken sollen..das ist jetzt nur der Decoder ohne Anmeldung.. sorry nochmal:

    http://www.cineform.com/products/Downl…PlayerStart.htm

    Ich glaube du hast das Problem nicht erkannt, um das es hier geht. Es geht um Unschärfe vs. Ruckeln. Ein Frameblending in Kauf zu nehmen um die Geschwindigkeit und die Bewegung zu erhalten ist keine Schande. After Effects ist eigentlich ein Compositing Programm und kein Videoconverter, jedoch kann es sehr unstressig diese Wandlung mit annehmbarer Qualität erledigen.
    Zur Größe der Datei: Was erwartest du bei der Rohdatei eines HD Videos?
    Ich kann dir einen Vorschlag machen. Poste ein Script, das eine bessere Wandlung macht und ich codiere es dir mit dem selben Sample und stelle es Online.

    Goldwingfahrer

    Das File ist 250 MB groß und Rapidshare kann nur 100MB packen ..Sorry auch dafür.

    @sharfis_brain

    Ich kann dir auch morgen ein WMV rauslassen, damit du die Originalbewegung siehst und die Datei klein bleibt. Das HuffYUV ist in bester Auflösung 6 mal so groß, wie die Cineform Version. Evtl. geht das auch "nur" mit dem Decoder (Neoplayer) ?

  • Äh, bitte kein WMV. Wenn schon stark komprimiert, dann XVid (in voller Auflösung) im AVI.

    Und der CineForm-Decoder geht auch nicht...
    Ich habe den damals an der Setup-Routine vorbei manuell installiert, und auch da ging nix, weil der Decoder mangels SSE2 einfach abgesürzt ist...

  • So, da simmer wieder.

    @ Scharfi

    Mit ffdshow's FFV1 wird das File ~320MB (YV12) bzw. 350MB (YUY2). Soll ich das auf MegaUpload hochladen?

    -----

    Bei Cineform muß man sich anmelden, nicht bei Adobe.


    Oha. Ja, natürlich. Mein Fehler.


    Zitat

    aber ich hätte eigentlich diesen Link schicken sollen..das ist jetzt nur der Decoder ohne Anmeldung..

    Yupp, das funktioniert. Danke.

    Zitat

    Ich glaube du hast das Problem nicht erkannt, um das es hier geht. Es geht um Unschärfe vs. Ruckeln.


    Wenn Du das sagst, dann wird's wohl so sein. Bitte mein fehlendes Verständnis der Problematik zu entschuldigen. :D


    Zitat

    Zur Größe der Datei: Was erwartest du bei der Rohdatei eines HD Videos?


    Ich habe mich in keiner Weise über die Dateigröße beschwert. Meine Bemerkung ging nur dahin, das es schade ist, eine ~220MB Datei zu splitten und anderen Normalbenutzern die stundenlangen Wartezeiten zuzumuten, wenn es auch andere Filehoster gibt, die bis zu 300MB (oder noch mehr) zulassen. Es bringt wenig, wenn ich ein Teilarchiv in 2 Minuten runterladen kann, und dann anderthalb Stunden warten muss bis es weitergeht ... aber is' auch egal jetzt, was soll das.


    Zitat

    Ein Frameblending in Kauf zu nehmen um die Geschwindigkeit und die Bewegung zu erhalten ist keine Schande. After Effects ist eigentlich ein Compositing Programm und kein Videoconverter, jedoch kann es sehr unstressig diese Wandlung mit annehmbarer Qualität erledigen.


    Avisynth auch. Ich verweise nochmal auf "ConvertFPS(25.000)".
    Oh, halt: ConvertFPS schafft 60->25 nicht, glaube ich. Da müsste man ersatzweise BlendFPS aus der motion.dll benutzen.


    Zitat

    Ich kann dir einen Vorschlag machen. Poste ein Script, das eine bessere Wandlung macht und ich codiere es dir mit dem selben Sample und stelle es Online.

    So einfach geht das nicht. Eigentlich geht es in diesem Fall hier gar nicht. Du wirst gleich sehen, warum.

    Gegenvorschlag: Wenn's recht ist, klären wir jetzt mal, was hier *wirklich* das Problem ist.


    Zitat

    Es geht um Unschärfe vs. Ruckeln.


    Das ist bereits ziemlich verquer. Unschärfen sind weder in der AE noch in der AS Konvertierung drin. Die Konvertierung von AE *scheint* in schnellen Bewegungen weniger scharf zu sein, aber das ist ein Trugschluss. Vielmehr ist es so, dass durch das Frameblending lokaler Kontrast verloren geht.
    Beispiel: Sequenz "10 10 10 20 10" - "10 20 10 10 10". Lokaler Kontrast ist +10.
    Echte Bewegungsinterpolation erstellt dazwischen: "10 10 20 10 10". Lokaler Kontrast ist +10.
    Einfaches Frameblending erstellt dazwischen: "10 15 10 15 10". Lokaler Kontrast ist nur noch +5.

    Dieser Kontrastverlust wirkt zwar in Bewegung so ähnlich wie Unschärfe, hat aber tatsächlich mit "Schärfe" ziemlich wenig zu tun.


    Dann, "Ruckeln":

    Echtes "Ruckeln" tritt dann auf, wenn ein Bewegungsfluss, der gleichförmig sein sollte, nicht gleichförmig ist. z.B. weil einzelne Frames weggelassen oder verdoppelt wurden.
    Ein anderer Effekt ist "Strobing", der mitunter (fälschlicherweise) auch als "Ruckeln" betitelt wird. Strobing tritt bei niedrigen Frameraten (wie z.B. 25fps progressiv) auf, wenn kein Motion-Blur vorhanden ist. Etwa bei Kameras mit zu kurzer Verschlusszeit, oder bei CGI-Renderings wie z.B. Konsolenspielen.
    Soll ich jetzt noch mit Retina-Persistenz anfangen ... nein, lassen wir das.

    Also ... über welche Art von "Ruckeln" hattest Du Dich nun eigentlich geäußert? :)

    Antwort ist überflüssig, es geht nämlich weiter.

    Nachdem ich jetzt alle Puzzlesteinchen zusammen habe, konnte ich einen Blick auf das Quellvideo werfen.

    Allein die ersten 100 Frames sehen folgendermaßen aus:
    (Notation: "c" = "echter" Frame, unterschiedlich zum Vorgänger / "-" = "drop Frame", ein Duplikat des Vorgängerframes)

    cc-c-cc-c-cc-c-c-cc-c-cc-c-cc-c-c-cc-c-c-cc-c-c-c-c-c-c-c-c-c-c-c-c-c-c-c-c-c-c--cc-c-c-c-c-c-c-c--c

    Und in diesem Stil geht es die ganze Zeit über. Nicht gut. Gar nicht gut.

    Des Rätsels Lösung ist also:

    Deine Quelle ist viel zu schlecht für eine gute Framerate-Wandlung.

    Tatsächlich ist das Ruckeln nämlich bereits im Quellmaterial drin. Und wenn in der Quelle bereits dermaßen viele Drop-Frames drin sind, dann muss das Ergebnis von *echter* Bewegungsinterpolation zwangsläufig schlecht werden. Es ist ja bei durchschnittlich jedem zweiten Frame NULL BEWEGUNG zum Vorgängerframe vorhanden, deswegen kann das nichts werden.
    In dem Fall ist "dummes" Frameblending tatsächlich von Vorteil, weil dadurch die Unregelmäßigkeiten besser in der geringeren Ziel-Framerate versteckt werden.

    Wenn's wenigstens ein klares c-c-c-c-c-c-... - Pattern wäre, dann könnte man einfach über SelectEven/Odd() auf 29.97 reduzieren, und das dann zur Bewegungsinterpolation übergeben.
    Aber da die Dup's ja ziemlich zufällig verstreut sind, kann man das so nicht machen. Spätestens bei den doppel-Dup's (-c--c-) bleibt dann nämlich ein Dup übrig, und dann ruckelt's am Ende erst wieder.
    Man könnte noch probieren, ob man mittels TDecimate() eine saubere Framefolge erreichen kann, aber irgendwie drängt es mich schon gar nicht mehr ausdrücklich, daran rumzuknobeln ...


    Mein Fazit ist somit:
    Schuld sind nicht die Tools. Schuld ist Dein Quellmaterial, das auf eine Art und Weise verbogen ist, das eine *wirklich* gute Normwandlung leider fast unmöglich macht.
    Ob es jetzt so ist, dass die PS3 tatsächlich so eine unregelmäßige Framefolge produziert (zu viele Effekte), oder ob der Codec zu viel Leistung frisst, deswegen nicht alle Frames codieren kann und (un-) regelmäßig Frames doppeln muss ... weiss ich nicht, kann ich nicht sagen.
    Sicher ist nur: das, was letztlich als Quelle vorliegt, ist für ein hochqualitatives Ergebnis reichlich ungeeignet. Punkt.


    ... aber wie gesagt, ich hab' ja keine Ahnung von der Materie. Also nicht so ernst nehmen, und noch andere Meinungen einholen. :)

  • Ich habe jetzt mal das ganze gedöhns auf einem P4-Rechner nach HuffYUV umgewandelt,
    damit ich es mir hier angucken kann.

    Also das Quellvideo ist keineswegs 59.94fps.
    Die Spielkonsole hat nur 29.97 fps (Hälfte, 2:2 Pulldown)
    respektive 44.955 fps (Dreiviertel, 1:1:2 Pulldown) geschafft.
    Das ganze ist also variable Framerate.
    Dir bleiben zwei Möglichkeiten:
    1) Blending auf 25 oder 50 fps mit convertfps()
    2) Decimation auf 25 oder 50fps mit TDecimate,
    damit die verdoppelten einzelbilder adaptiv rasugeschmissen werden.

    Motion-Interpolation bringt hierbei KEINE vernünftigen Resultate.
    Es sei denn jemand wartet mit einer Lösung auf, die
    - das video automatisch adaptiv auf seine variierende Grundframerate dezimiert
    - und dann automatisch auf die Zielframerate interpoliert

    EDIT: Dideé war schneller...

    Wenn man in VirtualDub das CineForm-AVI anguckt,
    dann sieht man, dass der CoDec Frame nicht kodiert hat
    (in der Statusleiste steht dann hinter dem Timecode [] anstatt [K]).

    Nun ist die Frage:
    War CineForm so schlau, die Duplikates einfach nur als Dropframe durchgehen zu lassen,
    oder war der encodierende Rechner schlichtweg zu langsam?

  • @ Didée

    kaum macht man jemanden blöd an und schon bekommt man eine vernünftige Antwort.. :)
    Aber im Ernst. Ich war auch schlecht drauf beim Antworten..will jetzt aber nix schönreden. Wenn ich so viel Ahnung hätte, würde ich ja nicht hier nach Hilfe suchen. Und wenn ich eine andere Uploadmöglichkeit gesehen hätte, hätte ich es auch gemacht. Evtl kann ich unseren Sysadmin auch um einen temporären FTP bitten. Also Sorry für die schlechte Stimmung - thx für die Antwort

    Back2Topic

    Das Signal, das wir aufgezeichnet haben, ist auch von einer Entwickler-PS3 eines unfertigen Spiels..
    Wenn ich das aber richtig verstanden habe, kann das wahrscheinlich eher am Codec liegen, der variable Frameraten aufzeichnet (bzw. dropt)?
    Das würde evtl auch erklären, was passiert, wenn man ein falsches Setting (Framerate) für die falsche Konsole nimmt. Dann wird das Bild immer schneller.
    Besonders bei der Wii.

    Wie kann man denn das Pattern einsehen? Dann kann ich die anderen Files von anderen Konsolen vergleichen. evtl bekommt man da etwas raus.

    sorry muss grad extrem viel arbeiten..komme mit mehr Fragen, wenn ich wieder Zeit hab.

    thx jedenfalls schon mal

  • Das Pattern kann man 'Einsehen' indem man das video frame für frame wiedergibt.
    z.B. in Virtualdub. Dann sieht man ganz schnell, welche Bilder doppelt sind.

    Du kannst mal zum Vergleich ein spiel capturen, welches garantiert butterweich läuft.
    Und dann ein 100 MB schnipsel mit gleichmäßiger Bewegung hochladen.
    (das sample was Du zur verfügung gestellt hast, ist nicht so günstig, weil man schlecht abschätzen kann, ob das wirklich drop-frames sind, oder ob die konsole wirklich nur duplikate produziert hat)

  • Das Pattern kann man 'Einsehen' indem man das video frame für frame wiedergibt.
    z.B. in Virtualdub. Dann sieht man ganz schnell, welche Bilder doppelt sind.

    Du kannst mal zum Vergleich ein spiel capturen, welches garantiert butterweich läuft.
    Und dann ein 100 MB schnipsel mit gleichmäßiger Bewegung hochladen.
    (das sample was Du zur verfügung gestellt hast, ist nicht so günstig, weil man schlecht abschätzen kann, ob das wirklich drop-frames sind, oder ob die konsole wirklich nur duplikate produziert hat)

    Meinst du mit Butterweich was man sieht, oder die Anordnung der aufgenommenen und gedropten Frames. (Hoffe ich hab das richtig verstanden).

    rein optisch: Ich finde gerade z.b. die Treppe und die Zebrastreifen sind deutlich für den Unterschied vor und nach der Wandlung.

    Ich versuch was aufzuzeichnen, wenn ich wieder mehr Luft in der Arbeit hab.

  • Zitat

    Meinst du mit Butterweich was man sieht, oder die Anordnung der aufgenommenen und gedropten Frames. (Hoffe ich hab das richtig verstanden).

    Butterweich = saubere Bewegung OHNE jegliches Ruckeln = KEINE gedroppten Frames oder Framduplikate!

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!