Einzelne Frames mit Avisynth einfügen - wie ?

  • Hallo Avisynth-Spezialisten,

    Folgende Problemstellung:

    Gegeben ist ein 60Min. TV-Capture (PicVideo PAL). Das entspricht bei 25Frames/s gleich 90000Frames insgesamt. Audio und Video sind synchron. Nun soll zwischen dem Frame 45000 und 45001 ein zusätzliches Frame eingefügt werden. Dieses soll bestehen aus dem 2.Halbbild (Field) des Frames 45000 und dem 1.Halbbild des Frames 45001. Wie kann man das mit Avisynth hinbekommen ? Muß die Audiospur bei dieser winzigen Änderung auch berücksichtigt werden ?

    Und wie kann man, um bei der gleichen Problemstellung zu bleiben, statt der beiden Halbbilder ein Bild (IrfanView ->bmp,tif,jpg oder was auch immer) per Avisynth einfügen ?

    Fragt mich nicht wofür ich das brauche ;)

    EDIT: Und um die Sache auf die Spitze zu treiben, wie sieht das Script aus wenn Frame 45001 gelöscht und dafür das 2.Halbbild des Frames 45000 und das 1.Halbbild des Frames 45002 als Frame 45001 eingefügt werden soll ?

    bye, C.B.

    bye, C.R.

  • Zitat von Castrop Rauxel

    Und um die Sache auf die Spitze zu treiben, wie sieht das Script aus wenn Frame 45001 gelöscht und dafür das 2.Halbbild des Frames 45000 und das 1.Halbbild des Frames 45002 als Frame 45001 eingefügt werden soll ?

    Ich bin zwar kein Avisynth-Spezi aber ich versuche es mal. Frame 45001 wird also gelöscht und dafür das 2.HB von 45000 (90000) und das 1.HB von 45002 ->45001 (90001) eingefügt.

    AVISource("clip")
    DeleteFrame(45001)
    SeparateFields()
    Trim(0,90000) ++ Trim(90000,90001) ++ Trim(90001,0)
    Weave()

    Wofür das auch immer gut sein soll ;)

    Gruß Gunnar

  • Zitat von Gunnar


    Wofür das auch immer gut sein soll ;)


    Ich vermute, er will einen framedrop ausbügeln? ich hatte früher mal so 5er pakete DF's, da habe ich dann statt 5 standbildern 2mal den letzten vorm drop und 3 mal den ersten nach dem drop reingebastelt. sah ganz gut aus. die lösung mit den halbbildern ist auch gut, vermeidet ruckeln, sieht aber vermutlich etwas matschig aus.

    Zap

    "Wer grundlegende Freiheiten aufgibt, um vorübergehend ein wenig Sicherheit zu gewinnen, verdient weder Freiheit noch Sicherheit."
    Benjamin Franklin

    mein Rechenknecht

  • Zitat von ZapBee

    Ich vermute, er will einen framedrop ausbügeln?


    Huch, ich bin ertappt ;) Ja ich habe damit versucht einen Framedrop (Dropped2 - VVCR) so auszubügeln das dieser nicht so stark sichtbar ist. Hat aber in meinem Fall nicht so gut geklappt. Gunnars Tip verursacht nun statt einen stark sichbaren Ruckler, 2 kurze Ruckler.

    Zitat von LigH

    Am Ende schafft man es bei Burst-Drops (also mehreren Drop-Frames in einer Reihe), mit Hilfe von Overlay(), und Animate() zur Steuerung der Transparenz, einen weichen Übergang zwischen den umgebenden Frames einzufügen...


    Klingt interessant. Kannst du mir ein Beispielscript posten ?

    bye, C.R.

    bye, C.R.

  • gib mal nen sample von dieser stelle her.

    sollte nicht allzu schwierig sein.

    aber mit luftakrobatik wird das heut nix....

    nur noch mal zur sicherheit, so wie ich das verstehe:

    dein Stream:

    Code
    A B C C E F G
    a b c c e f g


    (Frame D gedroppt)

    fieldbased saehe der dann so aus:
    A a B b C c C c E e F f G g
    wobei Du denn fett markierten bereich ersetzen willst, sodass der doppelzitterer verschwindet...

    das fette C c muesste also Durch D d ersetzt werden, wobei:
    D = 0.66 * c + 0.33 * E
    d = 0.33 * c + 0.66 * E

    was allerdings nicht ganz korrekt ist, da sich D aus E und c berechnet, aber C benutzt werden muesste (upper / lower field!!!)

    also korrekterweise:
    D = 0.66 * c' + 0.33 * E
    d = 0.33 * c + 0.66 * E'

    c' = c um einen halben pixel geshifted (wird zu einem C bei temporaler position von c)
    E' = E um einen halben pixel geshifted (wird zu einem e bei temporaler position von E)

    d.h. der ganze mist muss fullframerate deinterlaced werden. die zwischenbilder kalkuliert werden (blending / motion compensation) dann muss das wieder auf die halbbilder reduziert und in den originalstream eingefuegt werden.

  • Zitat von Castrop Rauxel

    Ja ich habe damit versucht einen Framedrop (Dropped2 - VVCR) so auszubügeln das dieser nicht so stark sichtbar ist.

    Ich habe mir auch schon sowas gedacht. Du willst also ein Frame wiederherstellen/interpolieren welches du verloren hast. Ich kann mir nicht vorstellen das irgendeine Prozedur das schafft. Da wär ich aber auch mal auf ein Beispielscript gespannt. Was du mal ausprobieren könntest :

    Zitat

    Trim(0,90000) ++ Trim(90000,90001) ++ Trim(90001,0)

    Bei "Trim(90000,90001)" ein Deinterlacing mit Blend einzufügen. Läßt sich warcheinlich mit Decomb bewerkstelligen.
    Ich glaube scharfis_brain hat das wohl so ähnlich gemeint. Genau hab ich seinen Beitrag nicht verstanden.

    Gruß Gunnar

  • Zitat

    nur noch mal zur sicherheit, so wie ich das verstehe:

    dein Stream:

    Code:

    A B C C E F G
    a b c c e f g
    (Frame D gedroppt)

    fieldbased saehe der dann so aus:
    A a B b C c C c E e F f G g
    wobei Du denn fett markierten bereich ersetzen willst, sodass der doppelzitterer verschwindet...


    Ja, so war es gemeint.

    Zitat


    das fette C c muesste also Durch D d ersetzt werden, wobei:
    D = 0.66 * c + 0.33 * E
    d = 0.33 * c + 0.66 * E

    Was bedeutet das ?


    bye, C.R.

    bye, C.R.

  • Ist ja sehr interessant ... bin immer wieder erstaunt was mit Avisynth alles möglich ist. Aber ein Beispiel aus der Praxis wäre mir schon sehr recht.

    Länge = 10s = 250Frames
    Frame 64 ist identisch mit Frame 63.
    64 soll also entfernt werden und durch das o.g. Beispiel ersetzt werden.

    Zitat

    D = 0.66 * c' + 0.33 * E
    d = 0.33 * c + 0.66 * E'

    Wie sieht das Script dann aus ?

    Gruß Gunnar

  • man koennte den Dup-Filter benutzen, wenn Die dubletten nicht identisch sind.

    sind sie aber, wenn man einen I-Frame-inly Codec, wie Huffy oder MJPEG einsetzt.

    damit funzt eine droperkennung hundertprozentig.

    wer mit XViD oder MPEG cappt hat schlechte karten bei einer Drop-Erkennnung.
    da muesste man dann mit Dup() vorarbeit leisten, damit die drops erkannt werden.

    noch ists graue theorie.

    (endlich modem los, jipeeee. der zeitpunkt ist dabei eher zufaellig :) )

  • Zitat von scharfis_brain

    Gebt mir nen sample
    (KEIN reencoding des captures! Darf auch etwas mehr MB sein, hab jetzt endlich DSL) und ein wenig zeit, und ich liefer euch nen adaptives drop-erkennendes
    drop ersetzendes script

    OK, ich werd mal heute Nachmittag ein Megacapture starten. Da werden 1-2 Drops (VVCR + PicVideo Q=19) drinne sein. Dann schneide ich dir ein 10s Sample raus. Wie soll ich dir die Datei zukommen lassen ?

    Gruß Gunnar

  • es reicht auch, drops zu provozieren. einfach den rechner waehrend des cappens quaelen.

    ich haette mir schon laengst selbst was gecappt, wenn ich nur TV haette....

    gunnar, hast Du nen FTP server, webspace oder ICQ?

    lass mal per PM hoeren.

  • Webspace, ICQ oder einen FTP-Server habe ich leider nicht. Aber Freeware im Bereich FTP-Server gibt´s ja genug. Ich hatte bisher immer Probleme einen FTP-Server einzurichten weil ich einen Router verwende. Werde mich mal schlau machen wie das Ganze funktioniert. Zum Capturen bin ich aus Zeitgründen noch nicht gekommen aber morgen ist mein freier Tag. Wenn es soweit ist melde ich mich per PM bei dir. Wir müssen dann nur noch einen Zeitpunkt ausmachen wann du das File ziehen willst. Vorher maile ich dir natürlich IP-Adresse und Accountdaten.

    Gruß Gunnar

  • Zitat von LigH

    Ich kenne ein paar Leute, denen der WarFTP-Daemon gut gefallen hat.
    Aber wenn du hinter einem Router sitzt, dann wird das ganze nicht gerade simpel...

    Ich habe mal den "Cerberus FTP Server v2.16" installiert und die Ports 20-22 im Router freigegeben. Lokal klappt das Ganze .... ob´s aber von "draußen" funktioniert wird sich zeigen.

    EDIT: Nee, Upload geht schon mal nicht ... ist das ein Krampf mit dem Router.
    EDIT: Sieht aus als wenn es jetzt klappen würde.

    Gruß Gunnar

  • scharfis_brain
    Ich kann dir keine PM schicken weil ...

    Zitat

    Der Posteingang von scharfis_brain ist voll. scharfis_brain kann keine weiteren Privaten Nachrichten empfangen, solange ältere Private Nachrichten nicht gelöscht worden sind.

    Hab dir ne Email geschickt.

    Gruß Gunnar

Jetzt mitmachen!

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