Eine spezielle Frage an die Avisynth-Spezialisten

  • Hallo,

    Wie läßt sich folgendes mit Avisynth realisieren:

    Es sollen von einem TV-Capture (704x576 YUY2 PicVideo 44,1KHz) jeweils jede 25 Frames 2 Halbbilder gelöscht werden. Und zwar zum Ende der ersten 25 Frames eins und zu Beginn der nächsten 25 Frames eins.

    Beispiel:
    Frame 1 ---
    Frame 25 das untere HB
    Frame 26 das obere HB
    Frame 50 das untere HB
    Frame 51 das obere HB
    Frame 75 das untere HB
    Frame 76 das obere HB
    usw.

    Die Fieldorder darf dabei nicht verändert werden. Und Audio muß dementsprechend angepaßt werden. Das Ganze soll dann wieder zum Ende des Scripts mit 25Frames/s abgespielt werden und an den CCE verfüttert werden. Wer eine bessere Möglichkeit weiß ... her damit ;)
    Zwingend ist aber das außer dem Ersten und Letzen Frame des Files pro 25 Frames 2 Halbbilder (Fields) so gelöscht werden das das möglichst nicht auf dem TV auffällt. Ist das überhaupt möglich ?

    Und nicht nach dem Warum fragen ;)

    Gruß Gunnar

  • ganz einfach:

    selectevery(25,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23)

    und schon sich die letzten beiden halbbilder verschwunden (naemlich das 24.Vollbild, da ab Null angefangen wird, zu zaehlen)
    sollte die reihenfolge der halbbilder falsch sein, einfach noch ein

    complementparity()

    davorsetzen

    edit: wenn es sich um ein progressives video mit verdoppeltem 25. Bild (vom 24. Bild) handelt, kannst Du auch

    decimate(25)

    benutzen.

    das audio muesste man dann bescheunigen, und zwar um 25/24, wie folgt:

    resampleaudio(44100*24/25)
    assumesamplerate(44100)

    Alle Angaben ohne Gewaehr, da aus dem Stegreif und ohne Verifizierung am Lebenden Objekt!

  • Es handelt sich nicht um ein progressives Video mit verdoppeltem 25. Bild. Ist ein ganz normaler interlace TV-Capture.

    Um mal bei deinem Beispiel zu bleiben (da ab Null angefangen wird zu zählen) darf nicht das 24.Vollbild gelöscht werden sondern nur das 2.Halbbild von Frame 24 und das 1.Halbbild von Frame 25. Hast du dafür auch eine Lösung mit Audioanpassung ?

    Gruß Gunnar

  • Zitat

    Hast du dafür auch eine Lösung mit Audioanpassung ?


    die audioanpassung bleibt die gleiche.

    Zitat

    Um mal bei deinem Beispiel zu bleiben (da ab Null angefangen wird zu zählen) darf nicht das 24.Vollbild gelöscht werden sondern nur das 2.Halbbild von Frame 24 und das 1.Halbbild von Frame 25.

    auch hier kannst du mit selectevery vorgehen:

    separatefields()

    selectevery(50,1,2,3,4,5,6,7,8,9,10,11,12,13,14, 15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48)
    #hierbei wird das 0. und das 49. field geloescht.
    was zur folge hat, dass auch das 50. und 99. field geloscht werden. allerdings ist die fielorder nun ebentuell falsch, was sich aber mit

    complementparity()

    #beheben liesze (ausprobieren!) . moeglicherweise ist hier

    trim(1,0)

    #besser!. nach einem folgendem

    weave()

    #sind somit

    Zitat

    nur das 2.Halbbild von Frame 24 und das 1.Halbbild von Frame 25

    geloescht.

    anschieszend musst Du nur noch die framerate mit

    assumefps(25)

    #anpassen und das audio, wie oben beschrieben umrechnen.

  • so, ich habs jetzt mal an einem interlaced-video ausprobiert.

    das script saehe dann so aus:
    separatefields()
    selectevery(50, 1, 2, 3, 4, 5, 6, 7, 8, 9,
    \10,11,12,13,14,15,16,17,18,19,
    \20,21,22,23,24,25,26,27,28,29,
    \30,31,32,33,34,35,36,37,38,39,
    \40,41,42,43,44,45,46,47,48)
    trim(1,0)
    weave()
    assumefps(25)
    resampleaudio(44100*24/25)
    assumesamplerate(44100)

    die fieldorder wird nicht geandert, desweiteren bleibt der A/V-Sync erhalten.

    darf ich aber noch fragen, was das ganze soll?

  • Sach mal, wo lernt man sowas ? In der Deutschen Avisynth-Doku steht sowas nicht. Mein Englisch ist einfach Schei*e deshalb tu ich mich sehr schwer mit englischen Dokus. Aber vielleicht kannst du mir eine Seite nennen wo Beispiele aller Art aufgeführt sind ?

    Jedenfalls erstmal Danke für den Tip. Auf den ersten Blick scheint das wirklich zu funktionieren. Auf dem Monitor sieht man keinen Nachteil. Muß mir das mal nach dem Encoden auf den TV ansehen.

    Code
    darf ich aber noch fragen, was das ganze soll?


    Ganz einfach, ich bin aus besonderen Grund gezwungen ein Video um ca. 2 Minuten kürzen zu müssen ohne das zusammenhängende Teile weggeschnitten werden dürfen.

    Gruß Gunnar

  • Zitat

    Sach mal, wo lernt man sowas ? In der Deutschen Avisynth-Doku steht sowas nicht. Mein Englisch ist einfach Schei*e deshalb tu ich mich sehr schwer mit englischen Dokus. Aber vielleicht kannst du mir eine Seite nennen wo Beispiele aller Art aufgeführt sind ?

    ich habs mir auch nur selbst beigebracht. bis vor einem halben Jahr war ich ein totaler AVIsynth-noob bis ich mit der idee des Motionperfect-Deinterlacings mit VDub nichtmehr weiterkam und deswegen musste avisynth ran! Seitdem bastele ich damit rum. Aber Seiten mit beispielen aller art kenn ich nicht, ausser avisynth.org dort gibt es viele sample-scripts.


    Zitat

    Jedenfalls erstmal Danke für den Tip. Auf den ersten Blick scheint das wirklich zu funktionieren. Auf dem Monitor sieht man keinen Nachteil. Muß mir das mal nach dem Encoden auf den TV ansehen.


    ich bin mir sicher, dass es jeweils einen ruckler pro sekunde bei kameraschwenks geben wird!

    Zitat

    Ganz einfach, ich bin aus besonderen Grund gezwungen ein Video um ca. 2 Minuten kürzen zu müssen ohne das zusammenhängende Teile weggeschnitten werden dürfen.


    sauberer ist diese methode:

    hierbei gaebe es bei einer 25fps -> 24fps stauchung je zwei kleine ruckler pro sekunde.

  • Mit der ersten Methode waren zumindest auf dem Monitor keine Ruckler zu sehen. Ich hatte extra ein Capture von einem Beach-Volleballspiel gemacht. Da flogen die Bälle von links nach rechts durch die Gegend.

    Gruß Gunnar

Jetzt mitmachen!

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