Cosima – Framerate ändern

  • uf-3d-foto
  • uf-3d-fotos Avatar Offline Autor
  • Neues Mitglied
  • Neues Mitglied
  • Dank erhalten: 1
  • Beiträge: 9

Cosima – Framerate ändern wurde erstellt von uf-3d-foto

Posted 07 Feb. 2024 20:40 #1
Hallo, ich habe ein Video mit 50 fps. Dieses Video möchte ich mit Cosima justieren und die Framerate auf 25 fps runtersetzen. Zwar kann ich in Cosima einstellen, dass das Zielvideo 25 fps hat, es ist dann aber doppelt so lang - ist also in Zeitlupe. Ich möchte aber, dass das Video seine Länge beibehält und nur die Framerate auf 25 fps reduziert wird. Gibt es eine Möglichkeit, wie ich das mit Cosima machen kann?Gruß Uwe
von uf-3d-foto

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

  • KreuzBlick
  • KreuzBlicks Avatar Offline
  • Senior Mitglied
  • Senior Mitglied
  • Dank erhalten: 44
  • Beiträge: 74

KreuzBlick antwortete auf Cosima – Framerate ändern

Posted 07 Feb. 2024 21:33 #2
Hallo Uwe,
letztendlich beruht ja Cosima an dieser Stelle auf der Verwendung von Avisynth, womit alle Möglichkeiten bestehen, die man sich nur vorstellen kann.
In diesem Fall willst du ja nicht das Video von 50fps auf 25fps verlangsamen, sondern bei halbierter Lauffrequenz die Laufzeit beibehalten. Das geht nur, indem jedes 2. Bild weggelassen wird.
Der Avisynth-Befehl dazu lautet:
SelectEven()
Er wirft alle geraden Bilder weg und halbiert dadurch die Lauffrequenz.
Du musst also nach dem Erzeugen der avs-Datei diese erst in einem Texteditor öffnen.
In der Datei steht die Zeile:
ClipV = Clip
Diese musst du ändern in
ClipV = Clip.SelectEven()
Danach kannst du den Lauf von Cosima starten.
Dann wird die Lauffrequenz halbiert ohne dass sich an der Dauer des Clips oder der Synchronität etwas ändert.

PS: Ich konnte das jetzt nur grob überprüfen. Wenn das Verfahren noch Tücken haben sollte, können wir hier gerne weiter daran arbeiten.

Viele Grüße
Gerold

von KreuzBlick
Folgende Benutzer bedankten sich: Wolfgang

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

  • cosima
  • cosimas Avatar Offline
  • Senior Mitglied
  • Senior Mitglied
  • COrrect Stereo IMAges
  • Dank erhalten: 58
  • Beiträge: 59

cosima antwortete auf Cosima – Framerate ändern

Posted 07 Feb. 2024 23:30 #3
Hallo Uwe
es gibt in COSIMA den Parameter FrameIncrement (im Reiter Video 1), der steht per default auf 1. Für Deinen Wunsch setzt Du ihn einfach auf 2, dann verarbeitet COSIMA nur jedes 2.te Frame. Im Übrigen ein nettes Feature, um Zeitraffer-Videos herzustellen ;-)

Was AviSynth angeht, halte ich das für ein sehr mächtiges Werkzeug, um Videos im Detail zu beeinflussen. Um die AviSynth-Dateien zu editieren - egal, ob die von COSIMA erzeugten oder die eigenen, sollte man sich allerdings in AviSynth etwas auskennen...

Gruß, Gerhard
von cosima
Folgende Benutzer bedankten sich: Wolfgang

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

  • uf-3d-foto
  • uf-3d-fotos Avatar Offline Autor
  • Neues Mitglied
  • Neues Mitglied
  • Dank erhalten: 1
  • Beiträge: 9

uf-3d-foto antwortete auf Cosima – Framerate ändern

Posted 09 Feb. 2024 10:39 #4
Hallo KreuzBlick, hallo Gerhard, recht vielen Dank für die Beantwortung meiner Frage.
Es hat alles wunderbar geklappt, sowohl mit den Einstellungen in Avisynth als auch die Variante mit der Einstellung des COSIMA Parameter FrameIncrement = 2. Also nochmals besten Dank.
Nun hätte ich aber gern noch eine Umwandlung von 50fps auf 30fps und von 50fps auf 23,976fps. Ich hatte gehofft, mit der Beantwortung meiner obigen Frage auch dies machen zu können. Dem ist aber nicht so. Ich hatte gestern einiges herumgespielt, bin aber zu keinem Ergebnis gekommen.
@KreuzBlick: gibt es die Möglichkeit, mit Avisynth ein Video von 50fps auf 30fps und von 50fps auf 23,976fps zu wandeln und wenn ja, wie?
@ Gerhard: kann ich diese Wandlung auch in Cosima machen. Ich habe es mit folgenden Parametern versucht:
AviFramerate = 30
FrameIncrement = 1.67
Geht aber nicht. Wahrscheinlich muss bei FrameIncrement immer eine ganze Zahl eingegeben werde. Gibt es aber dennoch eine Möglichkeit einer solchen Wandlung bei Beibehaltung der Filmlänge des Ausgangsvideos.
Für eure Hilfe bedanke ich mich im Voraus.
Mit freundlichen 3D-Grüßen
Uwe
Last Edit:09 Feb. 2024 10:41 von uf-3d-foto
Letzte Änderung: 09 Feb. 2024 10:41 von uf-3d-foto.

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

  • KreuzBlick
  • KreuzBlicks Avatar Offline
  • Senior Mitglied
  • Senior Mitglied
  • Dank erhalten: 44
  • Beiträge: 74

KreuzBlick antwortete auf Cosima – Framerate ändern

Posted 09 Feb. 2024 11:16 #5
Hallo Uwe,
bei der Bedienung von Cosima bin ich zwar ganz gut, bin aber auch froh, wenn ich wieder etwas dazulernen kann. Insofern danke ich Gerhard für die Erinnerung, dass die Halbierung der Lauffrequenz auch mit dem Parameter FrameIncrement gesteuert werden kann.
In der Bedienung, eigentlich muss man ja sagen Programmierung, von Avisynth kenne ich mich sehr gut aus. Ich teile auch die Einschätzung von Gerhard:

Was AviSynth angeht, halte ich das für ein sehr mächtiges Werkzeug, um Videos im Detail zu beeinflussen. Um die AviSynth-Dateien zu editieren - egal, ob die von COSIMA erzeugten oder die eigenen, sollte man sich allerdings in AviSynth etwas auskennen...

Nach dieser Vorrede jetzt konkret zu den Umwandlungen. Ich versuche zunächst mal zu analysieren, was überhaupt stattfinden kann. Im nächsten Schritt geht es dann um das konkrete Werkzeug.
Allgemein kann man sagen, dass Eingriffe in die Lauffrequenz eines Videos oder eines Films immer problematisch sind. Sie sind aber manchmal notwendig, weil es technische Vorgaben gibt. So hatte das Fernsehen immer das Problem, dass Spielfilme in 24 Bilder/s aufgenommen waren und das Programm mit 50 Halbbildern/s gesendet wurde. Das wurde dadurch gelöst, dass der Projektor mit 25 Bilder/s betrieben wurde und jedes Filmbild in zwei Fernsehhalbbilder zerlegt wurde. Dadurch wurde es technisch möglich, im Fernsehen Filme zu zeigen. Der Nachteil aber war einmal, dass die Filmlaufzeit kürzer wurde, und zum anderen, dass alle Töne leicht höher wurden, wodurch die Schauspieler eine unnatürlich hohe Stimme bekamen. Inzwischen gibt es dafür bessere Möglichkeiten.
Jetzt zu deinen Vorhaben:
von 50 auf 30fps
Hier musst du in jeder Sekunde von den 50 Bildern 20 weglassen. Das sollte möglichst gleichmäßig geschehen, sonst ruckelt das Video. Letztlich läuft es darauf hinaus, dass in jeder 5er Gruppe von Bildern 2 weggelassen werden. Das geht nicht ganz gleichmäßig, aber man könnte von der Gruppe 12345 die Bilder 2 und 5 weglassen, so dass also die Folge 134 übrigbleibt.
Der Avisynthbefehl dazu lautet: SelectEvery(5,1,3,4). 5 ist die Länge der bearbeiteten Gruppe, 1,3,4 die Folge der ausgewählten Bilder.
Er wird dorthin positioniert, wo der SelectEven() Befehl hingeschrieben wurde.

Der Rest folgt in einem späteren Beitrag, da ich dazu auch wieder einiges erklären muss und dabei neue Probleme auftauchen. Aber auch das geht!

Viele Grüße
Gerold

Last Edit:09 Feb. 2024 11:18 von KreuzBlick
Letzte Änderung: 09 Feb. 2024 11:18 von KreuzBlick. Begründung: Tippfehlerkorrektur

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

  • cosima
  • cosimas Avatar Offline
  • Senior Mitglied
  • Senior Mitglied
  • COrrect Stereo IMAges
  • Dank erhalten: 58
  • Beiträge: 59

cosima antwortete auf Cosima – Framerate ändern

Posted 09 Feb. 2024 19:32 #6
>>> @ Gerhard: kann ich diese Wandlung auch in Cosima machen. Ich habe es mit folgenden Parametern versucht: AviFramerate = 30 FrameIncrement = 1.67

Hallo Uwe
Deine Vermutung ist korrekt, der Parameter FrameIncrement ist ganzzahlig und deshalb ist eine einfache Umwandlung von 50fps auf 30fps auch nicht möglich.

Im Prinzip gibt es 2 Varianten, beide mit Vor- und Nachteilen:
Variante I, die selektierte Auswahl, hat Dir KreuzBlick schon genannt, dazu mußt Du also das avs-Script wie von ihm beschrieben edititieren.
Vorteil: Alle Frames des fertigen Videos sind Originalframes, Nachteil: es gibt Miniruckler, störend bei gleichmäßigen Bewegungen, z.B. Kameraschwenks.

Variante II verwendet Zwischenbilder, um eine gleichmäßige Bewegung zu erhalten - aber auch die Berechnung von Zwischenbildern funktioniert (zumindest in COSIMA) nur mit ganzzahligen Faktoren. Damit das aufgeht, müssen wir zuerst die 50fps auf 150fps aufblasen (also Faktor 3) und anschließend nur jedes 5.te Bild verwenden.
Deine COSIMA-Schritte im Detail:
- Bei Zeitlupe gibst Du den Faktor 3 ein (Button "weitere AviSynth-Befehle").
- FrameIncrement = 5 (um Zeit zu sparen, auch AnalyseIncrement=125)
- VideoFramerate = 30.0
Vorteil: Gleichmäßige Zeitabstände der Frames, Nachteil: Nur eines von 3 Frames ist ein Originalframe, die anderen beiden sind interpoliert. Bei schnellen Bewegungen kann es zu Interpolationsfehlern kommen, was ebenfalls störend ist. Einen Königsweg gibt es für Dein Problem leider nicht, aber ich vermute, die Zwischenbildberechnung wird in Zukunft - KI-basiert - sicherlich noch besser werden.

Gruß, Gerhard


 
Last Edit:09 Feb. 2024 19:36 von cosima
Letzte Änderung: 09 Feb. 2024 19:36 von cosima. Begründung: Umbruch

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

  • uf-3d-foto
  • uf-3d-fotos Avatar Offline Autor
  • Neues Mitglied
  • Neues Mitglied
  • Dank erhalten: 1
  • Beiträge: 9

uf-3d-foto antwortete auf Cosima – Framerate ändern

Posted 09 Feb. 2024 20:23 #7
@ KreuzBlick, recht vielen Dank für die ausführliche und verständliche Antwort.
Ich habe es ausprobiert und es hat wunderbar geklappt.Für die Umwandlung in ein 23,976fps Video habe ich folgenden Parameter verwendet:SelectEvery(25,1,3,5,7,9,11,13,15,17,19,21,23), hat auch geklappt. @ Gerhard, vielen Dank für den zweiten Weg. Cosima ist einfach große Klasse.
von uf-3d-foto
Folgende Benutzer bedankten sich: Wolfgang

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

  • KreuzBlick
  • KreuzBlicks Avatar Offline
  • Senior Mitglied
  • Senior Mitglied
  • Dank erhalten: 44
  • Beiträge: 74

KreuzBlick antwortete auf Cosima – Framerate ändern

Posted 13 Feb. 2024 13:50 #8
Hallo Uwe,

am Freitag musste ich aus Zeitgründen unterbrechen, aber es gibt noch eine weitere wichtige Methode, um die Lauffrequenz eines Videos zu ändern. Mein Beitrag ist diesmal leider etwas länger geworden.

Bisher haben wir über zwei Methoden gesprochen, nämlich die selektierte Auswahl und die Berechnung von neuen Bildern. Nach aktuellem Stand würde ich von der Verwendung von neu berechneten Bildern abraten, weil sie, vor allem bei bewegten Motiven, leicht zu Artefakten führen können. Originale Bilder sind grundsätzlich besser als neu berechnete.

Aber auch das Weglassen von Bildern ist nicht unproblematisch. Je weniger gleichmäßig die Auswahl ist, desto größer ist die Tendenz zum Ruckeln.

Es gibt aber noch ein weiteres Problem, das darin besteht, dass bei höherer Lauffrequenz mit kürzerer Belichtungszeit gearbeitet wird. Beim Film wird seit über 100 Jahren darauf geachtet, dass die Belichtungszeit mindestens halb so groß ist, wie die Standzeit des Bildes. Die Regel heißt "180°-Regel" und besagt etwa, dass bei 24 oder 25 Bildern pro Sekunde die Belichtungszeit nicht kürzer als 1/50s sein sollte. Das bewirkt eine Bewegungsunschärfe, die aber dafür sorgt, dass Bewegungen fließend ineinander übergehen.

Wenn jetzt ein Video mit 50 fps aufgenommen wurde, dann liegt die Belichtungszeit eines Einzelbilds bei 1/100s odewr sogar kürzer. Bei der Originalgeschwindigkeit bekommt man dann eine flüssige Bewegungswiedergabe. Lässt man aber jedes zweite Bild weg, so fehlen Bewegungsabschnitte. Je nach dargestelltem Motiv bekommt man dann eine abgehackte nicht flüssige Wiedergabe. Auch das muss man beachten.

Wünschenswert wäre hier das intelligente Hineinrechnen von Bewegungsunschärfe in das Video um das auszugleichen. Leider habe ich noch kein dem Amateur zur Verfügung stehendes Verfahren gesehen, das das einigermaßen gut kann.

Wie oben gesagt, sollte die Auswahl der weggelassenen  Bilder möglichst gleichmäßig erfolgen, sonst bekommt man Ruckler. Es ist also problemloser, von 50fps auf 25fps zu gehen, als von 50fps auf 30fps oder 24fps.

Nach dieser Vorrede kommen wir nun zum Übergang

50fps -> 23,976fps.

Der wirft neue Fragen auf und erfordert neue Lösungsverfahren. Die oben angegebene Lösung
SelectEvery(25,1,3,5,7,9,11,13,15,17,19,21,23)
funktioniert leider nicht wirklich. Sie wählt von 25 aufeinanderfolgenden Bildern 12 aus, also in der Sekunde von 50 Bildern 24. Somit hat man zwar eine Bildfrequenz von 24 Bildern pro Sekunde. Das ist aber nicht genau 23,976 Bilder pro Sekunde! Außerdem ruckelt das Verfahren, weil zwar meistens ein Bild weggelassen wird, jede halbe Sekunde aber 2 (nämlich die aufeinanderfolgenden 24 und 25). Also müssen wir etwas anders machen und dazu erst einmal klären, wie die krummen 23,976 Bilder pro Sekunde überhaupt zustandekommen.

Das hängt historisch mit dem Einsparen von Übertragungsbandbreite zusammen. Kurz gesagt werden nämlich bei 24fps in 1000s normalerweise 24000 Bilder gezeigt, diese werden jetzt aber auf 1001s verlangsamt. So kommt diese krumme Frequenz zustande. Es ist eigentlich nicht möglich, diese Frequenz durch gleichmäßiges Überspringen von Bildern zu erreichen.

Stattdessen machen wir etwas anderes, ähnlich wie es bei der Anpassung von Filmen an die Fernsehfrequenz gemacht worde: Wir lassen nämlich das Video einfach langsamer laufen. Damit nun keine Asynchronität mit dem Ton erzeugt wird, müssen wir den Ton ebenfalls langsamer laufen lassen. Bei Tonband oder Film hätte das in der analogen Technik zu einer Änderung der Tonhöhe geführt. Inzwischen gibt es aber Umrechnungsalgorithmen, die die Laufzeit ändern und die Tonhöhe beibehalten.

Damit es nicht ruckelt, gehen wir von 50fps erst auf die halbe Frequenz, indem wir jedes zweite Bild weglassen und lassen dann langsamer laufen, statt 25 Bilder pro Sekunde jetzt 24000/1001 Bilder pro Sekunde.

Letztlich passiert das mit Avisynth auf folgende Art, wobei Clip das ursprüngliche Video mit Ton ist, nach "#" steht jeweils der erläuternde Kommentar:
Code:
ClipV = KillAudio(Clip) # erzeugt das reine Video ohne Ton ClipA = KillVideo(Clip) # das ist der Ton dazu ClipV = SelectEven(ClipV) # lässt jedes zweite Bild weg tvalue = 24000.0/(25*1001.0) # berechnet den Verlangsamungsfaktor ClipA = ConvertAudioToFloat(ClipA) # bereitet das Audio für die Stauchung vor ClipA = TimeStretch(ClipA, tempo = Float(100.00*tvalue)) # verlangsamt den Ton ClipA = ConvertAudioTo16bit(ClipA) # stellt die 16bit-Auflösung wieder her ClipV = AssumeFPS(ClipV, 24000, 1001, False) # gibt dem Video die 23,976fps Clip = AudioDub(ClipV, ClipA) # verheiratet Bild und Ton wieder

Das Schöne dabei ist, das Cosima uns diese Überlegungen abnimmt und genau das in die avs-Datei schreibt. Zwei Dinge sind dazu lediglich zu tun:
- FrameIncrement muss auf 2 gesetzt werden,
- Convert to [fps]... muss auf NTSC Film (23.976) gesetzt werden. Das funktioniert jesoch nur gut, solange wir bereits in der Nähe von 23,976fps sind.

Und grundsätzlich sollte man wissen, das man tut. Deshalb habe ich hier etwas ausführlicher geschrieben und hoffentlich nicht gelangweilt.

 

Viele Grüße
Gerold

von KreuzBlick
Folgende Benutzer bedankten sich: cosima, Wolfgang

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

  • uf-3d-foto
  • uf-3d-fotos Avatar Offline Autor
  • Neues Mitglied
  • Neues Mitglied
  • Dank erhalten: 1
  • Beiträge: 9

uf-3d-foto antwortete auf Cosima – Framerate ändern

Posted 13 Feb. 2024 18:22 #9
Hallo Gerold, recht vielen Dank für deine ausführlichen und verständlichen Ausführungen. Du stehst ja wirklich ganz tief in diesem Thema. Wirklich sehr interessant.
Mit freundlichen 3D-Grüßen
Uwe
Last Edit:13 Feb. 2024 18:23 von uf-3d-foto
Letzte Änderung: 13 Feb. 2024 18:23 von uf-3d-foto.

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Powered by Kunena Forum