Natürlich nicht, kriege ich auch jetzt nicht hin.
nimm das code-Tag...
ich muss meine Aussagen von frueher widerrrufen.
separatefields().selectevery(4,0,3).weave()
ist die variante, die die Fieldorder unangetastet laesst.
nur leider gibts in AVS mehrere Filter, die das Vereiteln.
Allen voran bob() und assumeframebased().
beide filter fuehren intern ein assumebff() durch, auch wenn das eingangsvideo TFF war.
somit waere dieses script eine Nichtstuaktion:
avisource("dv-video.avi") #DV-Video ist immer BFF, jenes ist AVS-Standard!
bob() #bobbt das Video, es wird nochmals als BFF markiert.
separatefields().selectevery(4,0,3).weave()
anders sieht es bei TV-Karten-Video aus.
hier muss diese Befehlsfolge ran:
avisource("dv-video.avi") #TV-Karten-Video ist (fast) immer TFF, aber AVS setzt BFF!
assumetff() #deswegen setzen wir hier TFF
bob() #bobbt das Video, es wird aber faelschlicherweise als BFF markiert.
assumetff() #deswegen muss es jetzt wieder als TFF markiert werden.
separatefields().selectevery(4,0,3).weave() # und nun wird es sauber als TFF interlaced ausgegeben.
Die Frage die sich mir immer wieder stellte: warum am Ende SelectEvery(4,1,2) oder 4,0,3? Den Fragestellern ging es doch meistens um das "de"interlacen, womit sie wahrscheinlich das beseitigen der Kämme meinten; die beiden SelectEvery-Befehle erzeugen dagegen zwangsläufig wieder unglaublich scharfe Interlacing-Kämme bei bewegten Szenen. Wenn(!) ich die dann wieder entfernen will, kann ich auch gleich SelectEven() oder SelectOdd() nehmen und dafür ein interpoliertes Feld in Kauf nehmen?! Interpoliert ja nur im nicht statischen Teil, genau da würde ja ein nachgeschaltetes FieldDeinterlace() - oder was auch immer - auch interpolieren.
ganz einfach: viele Filter koennen interlaced video nicht korrekt verarbeiten.
und diese methoden:
1)
separatefields().filter().weave()
oder
2)
separatefields()
e=selecteven().filter()
o=selectodd().filter()
interleave(e,o).weave()
sind nicht immer die besten moeglichkeiten, zu filtern.
1) ist nicht gut fuer temporale filter geeignet
und
2) reduziert die temporale aufloesung um die haelfte.
was also tun?
BOB-Deinterlacen!
3)
assume?ff()
bob()
filter()
assume?ff()
separatefields().selectevery(4,0,3).weave()
eines ist allen drei varianten gemein: ihr output ist INTERLACED.
nur bietet die variante 3 die beste Qualitaet.
es geht hierbei garnicht darum das video zu deinterlacen, sondern nur darum, das video dem filter moeglichst schmackhaft zu machen.