tfm() produziert Grümstich bei 3/4 des Bildes

  • Hallo,

    ich nutze bei Screencasts oft "tfm().decimate()" um Duplikate zu löschen, was bisher sehr gut funktionierte. Jetzt habe ich hier einen Screencast der mit den gleichen FFmpeg-Einstellungen erstellt wurde wie alle anderen auch, bei dem 3/4 des Bildes einen deutlichen Grünstich haben, siehe Beispielbild. Nutze ich nur decimate() geht das, nur tfm() und ich hab wieder den Grünstich. Nutze ich telecide() ist das ganze Bild grün. Bei allen anderen Screencasts scheint das zu gehen.

    Könnte man hier auch nur decimate() ohne tfm() verwenden? Das Video hat keine Blends, es werden immer im Wechsel 4 und 6 Duplikate eines Bildes gezeigt. Das gesamte Skript sieht so aus:

    Code
    video2 = LWLibavVideoSource("output.mkv",threads=1,format="yuv")audio2 = LWLibavAudioSource("output.mkv")audiodub(video2,audio2)trim(189,36903)Crop(608, 212, -672, -388)

    Die Kommandozeile für den Screencast mit FFmpeg sieht so aus:

    Code
    ffmpeg -f dshow -framerate 30 -vsync 1 -i video="screen-capture-recorder":audio="virtual-audio-capturer" -vcodec libx264 -crf 0 -preset ultrafast -acodec pcm_s16le "output1.mkv"

    Dateien

    _________________________

    Zitat

    Zieht ein Bienenschwarm aus, so wird er herrenlos, wenn nicht der Eigentümer ihn unverzüglich verfolgt oder wenn der Eigentümer die Verfolgung aufgibt.


    § 961 BGB [Eigentumsverlust bei Bienenschwärmen]

    :D

  • Eben ... TFM() gehört zu TDecimate(), weil das TIVTC-Paket von tritical programmiert wurde.

    TFM ist nur ein "Field Matcher", also eine Funktion, die lediglich ermittelt, welche Halbbilder zusammenpassen könnten. Mit dessen Hilfsdaten kämen Funktionen, die nicht in der gleichen Plugin-DLL stecken, wohl kaum zurecht. Auf Bildinhalte kann TFM aufgrund seiner Arbeitsweise keinen Einfluss haben.

  • Ich hatte einfach mit tfm().decimate() die besten Erfahrungen gemacht und daher dieses verwendet. Komischerweise ging es nachdem ich FFVideoSource zum laden der Quelle verwendet habe.

    _________________________

    Zitat

    Zieht ein Bienenschwarm aus, so wird er herrenlos, wenn nicht der Eigentümer ihn unverzüglich verfolgt oder wenn der Eigentümer die Verfolgung aufgibt.


    § 961 BGB [Eigentumsverlust bei Bienenschwärmen]

    :D

  • Hab jetzt nochmal einen Screencast auf die gleiche Art und Weise gemacht und hab wieder das Problem wie oben beschrieben, diesmla aber auch wenn ich statt LWLibavVideoSource FFVideoSource verwende.

    Zitat

    TFM ist nur ein "Field Matcher", also eine Funktion, die lediglich ermittelt, welche Halbbilder zusammenpassen könnten. Mit dessen Hilfsdaten kämen Funktionen, die nicht in der gleichen Plugin-DLL stecken, wohl kaum zurecht. Auf Bildinhalte kann TFM aufgrund seiner Arbeitsweise keinen Einfluss haben.

    Fakt ist aber, dass es passiert. Egal ob ich nach tfm decimate oder tdecimate verwende. Es passiert auch wenn ich nur tfm verwende (ist zwar nutzlos, ich habs nur getestet um den Grund für den Grünstich herauszubekommen).

    Zitat

    hast Du da eventuell nicht format="yuv" verwendet?

    Doch, musste ich, da sonst das Video auch ohne tfm einen Grünstich hat und zwar im kompletten Bild. Außerdem steht es sonst Kopf.

    Hier das Skript:

    Code
    v = lwlibavvideosource("input.mkv",threads=1,format="yuv")a = lwlibavaudiosource("input.mkv")audiodub(v,a)Crop(1116, 304, -176, -304)BicubicResize(640,480)trim(118113,154803)tfm().tdecimate() oder tfm().decimate()

    Verwende ich tfm().decimate() habe ich 3/4 Grüstich. Verwende ich nur tfm() das gleiche. Verwende ich tfm().tdecimate() habe ich auch die Einteilung in 4 Viertel, aber da wo sonst der Grünstich ist ist das Bild irgendwie bund (siehe Screenshot). Alle paar Frames ist dann wieder 3/4 des Bildes grün. Komisch auch: lasse ich Resize weg ist auch bei tfm().tdecimate() 3/4 grün und zwar in jedem Frame.

    Vom Upload eines Bsp. würde ich gerne absehen, da es ein Screencast ist und man den ganzen Desktop im Hintergrund sieht. Ich erstelle sowas nicht im Fullscreen, da das Video ja eh nur 640x480px groß ist.

    Die Notation des Videos ergab das gleiche Muster wie ich es schon bei vielen Zeichentrickfilmen hatte: immer 6 und 4 Dublikate im Wechsel (ab und an mal ein Viererblock in Folge)

    Code
    [COLOR='#FF0000']a a a a a a b b b b c c c c c c d d d d e e e e f f f f f f g g g g h h h h h h i i i i j j j j k k k k k k l l l l m m[/COLOR] m m m m

    Sie Sekunde ist bei "m m" zu Ende. Auch wenn das jetzt Offtopic ist: Was wäre denn hier die ursprüngliche Framerate. Ich zähle 13 Vollbilder mit m, das liegt aber teilweise innerhalb der 2. Sekunde, und 12 ohne m.

    _________________________

    Zitat

    Zieht ein Bienenschwarm aus, so wird er herrenlos, wenn nicht der Eigentümer ihn unverzüglich verfolgt oder wenn der Eigentümer die Verfolgung aufgibt.


    § 961 BGB [Eigentumsverlust bei Bienenschwärmen]

    :D

  • Scheint zu gehen wenn man vor tfm() ein Converttoyv12() setzt. Auch mit "ConvertToYUY2(matrix="Rec601", interlaced=false)" geht es, das hat mir aber AvsPmod als Standardvorschlag eingefügt und ich hab keine Ahnung was die Matrxi bedeutet. Geht aber.

    _________________________

    Zitat

    Zieht ein Bienenschwarm aus, so wird er herrenlos, wenn nicht der Eigentümer ihn unverzüglich verfolgt oder wenn der Eigentümer die Verfolgung aufgibt.


    § 961 BGB [Eigentumsverlust bei Bienenschwärmen]

    :D

  • zur Matrix: eine Matrix wird immer bei Umwandlungen zwischen RGB und YUV Farbräumen (in beide Richtungen) benötigt, dann gibt die Matrix die Umwandlungsvorschrift an. Wenn man von einem YUV- in einen anderen YUV-Farbraum umwandelt ist die Matrix egal.

Jetzt mitmachen!

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