Seite 1 von 1

Umsetzung von Avisynthbefehlen in PB

Verfasst: 27.11.2013 12:33
von Heinz Mendax
Hallo,
immer wieder gibt es Neulinge in der PB-Anwendung. Ich habe früher in Quickbasic 4.5 viel programmiert, meist mathematische Programme zur Lösung meiner Hobbyaktivitäten (Sonnenuhren,
Farbenlehre, Optik). Danach war es VB6, der zunehmenden Verbreitung von Windows und der
grafischen Oberfläche geschuldet. Es wurden vor allem Anwendungen, die VB6 zur Steuerung in Excel
und in der CNC-Messsoftware an der Arbeit benutzen, programmiert. Es war besonders interessant, die
internen Befehle von Excel u.s.w von den bereitgestellten VB-Bibliotheken in eigenständige EXE-Dateien
umzusetzen.
Auf diese Art möchte ich weiter machen, nur das es jetzt PB sein soll (die Werbung dafür hat einiges bewirkt) und der Programmiergegenstand Stereo-AVI-dateien (Fuji W3) sein sollen.
Es geht dabei um die Entfernung des Verwackelns bei der Aufnahme (in 2 verbundenen Streams).
Eine von verschiedenen Lösungen die es gibt, ist die Verwendung eines Deshakerfilters in
Avisynthscripten in Verbindung mit Virtualdub. Dieser kann aber immer nur einen einzelnen Stream
bearbeiten. Wenn man die Streams mittels Avisynth trennt und einzeln mit dem Deshaker bearbeitet
kann es sein, das er beide vollkommen verschieden bearbeitet, obwohl ja linke und rechte Aufnahmeoptik zusammenhängen. Der Deshaker hat aber die Option, das man die Relativbewegung in den Frames in
eine lesbare Datei schreiben kann. Die Werte für x,y und Drehung des linken und rechten Avi-streams
sollen in dem angestrebten Programm mathematisch bearbeitet (angeglichen und geglättet ) werden,
dann rückwirkend mittels Deshaker und Avisynth auf die beiden Streams angewendet werden. Damit ist der Film dann entwackelt und kann wieder zum Stereofilm verbunden werden.
Vor ungefähr 10 Jahren hat Inc. eine Portierung von Avisynth nach PB hier veröffentlicht. Man kann
heute noch diese 3 Dateien downloaden, aber inzwischen hat sich PB (und Avisynth) zu sehr
verändert als das die Beispiele und die avisynth.pbi noch lauffähig wären. Für mein Vorhaben wäre
die Verwendung der Avisynthinternas im PB-programm praktisch das Gegebene. Ich würde die Befehle,
die sonst Bestandteil eines Avisyntscriptes sind,umsetzen in PB, wie das damalige Beispiel
(avisynth_get_video_info.pb) zeigt. Die Dateien müßten modernisiert werden. Als Anfänger bin ich aber
nicht in der Lage zu entscheiden, ob beim zeilenweisen Ablauf der Fehler durch Entfernen oder Setzen
eines ".l" oder "*" behoben werden könnte.
Das betrifft hauptsätzlich die avisynth.pbi. Eine fehlerfrei ablaufende avisynth.pbi wäre enorm wichtig. Bei der Datei avisynth_get_video_info.pb ist es so, das die Ursprungsdaten des Films eingeblendet werden, dann aber des Programm abstürzt.
Bei diesem Beispiel wäre auch die Erweiterung nützlich, wie ein bestimmtes Filter eingebunden und
aus dem veränderten Stream wieder eine AVI-datei wird, um die Bearbeitung nachzuprüfen.
Ich möchte im Namen neuer verzweifelter aber hoffnungsvoller PB- und Avisynthanwender bitten, ein
dem aktuellen PB-stand entsprechendes Programmierbeispiel zu erstellen und zu veröffenlichen oder mir in der Ihnen gebotenen Zeit weiterzuhelfen.

peter.hossfeld@online.de

Re: Umsetzung von Avisynthbefehlen in PB

Verfasst: 27.11.2013 12:38
von NicTheQuick
Wo gibt es denn diese PB-Dateien von damals, von denen du sprichst?

Re: Umsetzung von Avisynthbefehlen in PB

Verfasst: 27.11.2013 12:55
von Heinz Mendax
Hallo,
es ist nicht im deutschen Pureboard
sondern bei

http://www.purebasic.fr/english/viewtopic.php?p=197694
oder
http://www.purebasic.fr/english/viewtop ... 14&t=27393

zu finden.

mfg
Heinz

Re: Umsetzung von Avisynthbefehlen in PB

Verfasst: 29.11.2013 19:11
von Heinz Mendax
Hallo,
ergänzend möchte ich hier das Avisynthscript angeben, das in PB umgesetzt werden soll und auf
die Stereo-Avi angewendet werden soll:

Code: Alles auswählen

           LoadPlugin("C:\Programm\Plugins\ffms2.dll")
           A=FFAudioSource("C:\Filme\DSCF1703.avi",cache=false)
           V=FFVideoSource("C:\Filme\DSCF1703.avi,cache=false,track=2)
           AudioDub(V,A)
           Trim(0,-456)
           LoadVirtualDubPlugin("C:\Programm\Plugins\deshaker.vdf","deshaker",preroll=0)
           ConvertToRGB32()
           deshaker("18|2|20|3|1|... usw. |c:\Programm\korrekturdatei.txt|... usw...|0")  
und ein Befehl, der aus dem deshakten Track2 wieder eine avi-Datei speichert.

mfG Heinz

__________________________________________________
Code-Tags hinzugefügt
29.11.2013
RSBasic