Avisynth 3.0 für Linux - Alphatester gesucht

  • d'Oursse und ich suchen Tester für AVISynth 3.0 für Linux.



    Info


    Avisynth 3.0 ist sehr mächtiger Frameserver für Windows und Linux. Editieren und Bearbeiten von Videos können nun auch durch AVS-Scripts in Linux erledigt werden.
    Es ist ein kompletter Rewrite von Avisynth 2.5 durch Bidoche (David Pierre). Seine Vorteile verglichen mit Avisynth 2.5 sind die folgenden:


    * Abstrakter Corelayer welcher erlaubt das AVS unter Windows und Linux lauffähig ist.
    * Bessere Speicherverwaltung.
    * Eine noch bessere Scriptsprache.
    * Ein paar weitere interne Verbesserungen.


    Auf der anderen Seite gibt es noch ne schlechte Nachricht. Die 2.5er Plugins sind leider zu AVS 3.0 nicht kompatible.


    Status
    Wir befinden uns zur Zeit im Alpha-Stadium.


    Wer will kann uns helfen DEB/RPM/EBUILDS für verschiedene Distros zu erstellen.


    Avisynth 3.0 für Linux Homepage


    ____________________________________________________________


    AVISynth 3.0 wird von folgenden Distros unterstützt:


  • versuchs schon länger zu kompilieren, da es so das einzigste ist, was mir wirklich fehlt unter Linux


    nutze Kubuntu 6.10, habs schon mit 6.06 versucht zu komilieren, da wollte er fontconfig net kompilieren und installieren, klappt jetzt unter 6.10, aber er bleibt bei STLport hängen, obwohls installiert ist


    Code
    1. ...checking stl/config/user_config.h usability... nochecking stl/config/user_config.h presence... nochecking for stl/config/user_config.h... noconfigure: WARNING: STLport headers not in /usr/local/include/stlportconfigure: error: "STLport is needed !"
    Code
    1. x@y:/usr/local/include/stlport$ ls
    2. algorithm climits cstdio exception iomanip.h iterator memory rlocks.h stddef.h string using
    3. assert.h clocale cstdlib exception.h ios limits new rope stdexcept string.h utility
    4. BC50 cmath cstring float.h iosfwd limits.h new.h set stdio.h strstream valarray
    5. bitset complex ctime fstream ios.h list numeric setjmp.h stdiostream.h strstream.h vector
    6. cassert config ctype.h fstream.h iostream locale ostream signal.h stdlib.h time.h wchar.h
    7. cctype csetjmp cwchar functional iostream.h locale.h ostream.h slist stl typeinfo wctype.h
    8. cerrno csignal cwctype hash_map iso646.h map pthread_alloc sstream stl_user_config.h typeinfo.h
    9. cfloat cstdarg deque hash_set istream math.h pthread.h stack streambuf unordered_map
    10. ciso646 cstddef errno.h iomanip istream.h mem.h queue stdarg.h streambuf.h unordered_set
  • Phantomas : Tja, war bei mir auch zuerst so. Steht aber in dem Tut:


    The libraries are located in STLport/lib and the header files are located in STLport/stlport. We must copy them manually:


    Code
    1. cd ../..
    2. su (give your root password)
    3. cp lib/libstlport* /usr/local/lib/
    4. cp -R stlport /usr/local/include/
    5. [ctrl-D] (to return to user mode)


    If you want to install STLport in another directoy, change /usr/local with another directory.


    btw. ich habs auch noch nicht geschaft, liegt aber daran, das ich Ubuntu 6.06 nutze:


    Zitat von d'Oursse

    You will have some problem of compilation of avs3 because the boost-thread package has a bug (which is not in ubuntu 6.10). There's a missing file.


    The way to fix that is to compile boost from source, as I desribed it in the doc.


    mal sehen, ob ichs schaffe ...

  • Ich hab mal versucht AVISynth auf paldo zu compilen:


    Code
    1. d variable 'synchronizer'
    2. C: core/block/ownedholder.cpp
    3. C: core/block/block.cpp
    4. ../../src/core/block/block.cpp:36: error: specialization of 'avs::block_<align>::block_(int, bool) [with int align = 16]' after instantiation
    5. ../../src/core/block/block.cpp:36: error: invalid function declaration
    6. ../../src/core/block/block.cpp:41: error: specialization of 'avs::owned_block<align>::owned_block(const avs::PEnvironment&, int, bool) [with int align = 16]' after instantiation
    7. ../../src/core/block/block.cpp:41: error: invalid function declaration
    8. make: *** [core/block/block.o] Error 1
    9. *** Error: make
    10. *** ERROR: avisynth-x86-glibc-2.5-gcc-4.1-1-3.0-CVS-20070207-0


    Leider gibt es Probleme mit GCC 4.1. Muss halt warten, bis die Jungs den Block-Teil von AVS neugeschrieben haben. Mit GCC 4.0 würde es zwar gehen, aber man kann ja keine zwei GCC im System laufen lassen. Paldo ist seit dem 14 May 2006 auf den GCC 4.1 umgestiegen.

  • Ja

    Es gibt eine Theorie, die besagt, dass das Universum sofort verschwinden und etwas noch Unerklärlicheres und Bizarres an seine Stelle treten wird, sobald jemand herausfindet, wofür es gut ist und warum es existiert.


    Es gibt eine andere Theorie, die besagt, dass das bereits geschehen ist.

  • Hier mal ne gute Nachricht. Ich habs hinbekommen AVS 3.0 auf meiner Distro zu compilen. Es hat mich einen Tag gekostet AVS mit allen Funktionen zu compilen.



    Wie Ihrs auf Paldo installiert, könnt Ihr hier lesen:


    AVS in Paldo GNU/Linux installieren

  • Hallo,


    ich bin am Wochenende beim surfen wiedermal über den Restore24-Filter von Didee (?) gestolpert und in der Folge über eben diese Thread. Also wollte ich mal mein Glück an Avisynth unter Linux versuchen - folgendes ist dabei bislang rausgekommen. Die Quellen habe ich aus dem CVS vom 20.03.2007, zwischenzeitlich scheint sich auch nichts mehr getan zu haben. Distribution ist Debian testing/unstable, wahlweise auf i386 (Laptop) oder amd64 (Desktop).


    Die vorrausgesetzte Software war soweit in Form von Debian-Paketen vorhanden, bis auf zwei Ausnahmen. Zum einen bedurfte das x264 Paket einer Modifikation, um es mit GUI zu übersetzen. Und dann war da noch die libboost, für die bei Debian der circular-buffer nicht als Paket vorhanden ist. Daher habe ich diesen im Avisynth-Quellverzeichnis entpackt und dort mit relativem Pfad eingebunden ('#include "..."' statt '#include <...>'). Dementsprechend konnte ich auch die Überprüfung auf circular-buffer in der Datei build/linux/m4/boost.m4 entfernen.


    Nachdem die Vorarbeit geleistet war, gings ans Kompilieren. Hier trat die nächste Wiedrigkeit auf - in src/bin/encode.c fehlte ein dritter Parameter an die Funktion avs_clip_new_from_file(). Somit habe ich diesen dort hinzugefügt, per copy and paste nach dem Beispiel aus src/bin/open.c inklusive der folgenden Fehlerbehandlung. Keine Ahnung, was die genau macht, aber nun ließ sich das ganze immerhin übersetzen.


    Gesagt, getan. Als Resultat der Mühen fand ich eine ausführbare Datei "build/linux/build/avisynth_test". Als ich darin nun mittels "File" -> "Open" eine Video-Datei öffnen wollte, schloss sich das Programm aber recht schnell mit einer Exception (irgendwas in der Richtung "cannot create (Font) Face"). Der Grund dafür war ein absoluter Pfad zu einer Schriftart Arial ("C:\\WINNT\\Fonts\\Arial.ttf") in der Datei src/filters/source/messageclip.cpp. Also gut - quick and dirty einen ehr Linux/Unix typischen Pfad hinein-gehackt und neu kompiliert.


    Nach dem Bestätigen des Öffnen-Dialogs in "avisynth_test" tritt nun keine Exception mehr auf. Allerdings wird mir auch kein Video-Bild angezeigt. Die "File Information" sagt mir:

    Code
    1. Video stream Size: 378x107 [richtig wäre 720x576] Framerate: 25/1 (25.000) [richtig] Frame count: 25 [richtig wäre 500] Time: 1.0 [auch falsch] Audio stream No audio stream [richtig]


    Bei der geöffneten Datei handelte es sich um einen MPEG2-Video Elementary Stream, den ich mir irgendwann mit dem "mpeg2enc" aus den mjpegtools habe erstellen lassen. Auch bei anderen Videos ändern sich die angezeigten Daten nicht. So langsam vergeht mir die Motivation.


    Also gut - wozu lässt sich Avisynth unter Linux gebrauchen? Wie bedient man es? Gibt es ein Command Line Interface? Wo ist die Dokumentation? Nein, ich meine ich die Klassen-Dokumentation ;)


    Vielleicht sollte ich noch erwähnen, dass ich mich nie mit den Windows-Tools zur Video be- und verarbeitung beschäftigt habe. Das meiste habe ich bislang unter Linux mit transcode, mencoder und co erledigt. Dementsprechend ist Avisynth für mich völliges Neuland.


    Hier noch ein diff der Dateien, die ich modifizieren musste, um avisynth_test gangbar zu machen - quick and dirty, wie gesagt.


    $ pwd
    /usr/src/avisynth-cvs20070320
    $ cvs diff -u ./src/bin/encode.c ./src/filters/source/messageclip.cpp

  • Also gut - wozu lässt sich Avisynth unter Linux gebrauchen?


    Im Moment zu gar nichts. Es ist zwar schön, dass man schon eine Videodatei öffnen kann, aber solange es noch keine Filter - Avisynth's Stärke - gibt, ist Version 3 noch recht unbrauchbar.

  • Hallo allerseits,


    Ich bin neu hier:)


    Mit ein paar Klimmzügen habe ich es geschafft, avisynth 3.0 auf einem Debian GNU/Linux 4.0 (Etch), 32bit zu installieren. Der Kompiler ist gcc 4.1.2.


    Die benötignet Libraries habe ich alle ausser circular_buffer und x264 aus offiziellen Debian-Paketen installiert.


    Das mitgelieferte circular_buffer habe ich nach /usr/include/boost/ entpackt.





    Liste der Debian-Pakete, die ich vor der Kompilierung installiert habe:


    autoconf
    automake
    subversion
    cvs
    gcc
    g++
    libgtk2.0-dev
    libstlport5.1-dev
    libfreetype6-dev
    libfontconfig1-dev
    libavcodec-dev
    libavformat-dev
    libpostproc-dev
    nasm
    libgstreamer0.10-dev
    gstreamer0.10-ffmpeg
    libgstreamer-plugins-base0.10-dev
    libboost-thread-dev
    libboost-thread1.33.1
    libboost-date-time-dev
    libboost-filesystem-dev
    libboost-graph-dev
    libboost-iostreams-dev
    libboost-program-options-dev
    libboost-regex-dev
    libboost-serialization-dev
    libboost-signals-dev
    libboost-test-dev
    libboost-thread-dev
    libboost-wave-dev


    (Bei den Boost-Paketen sind ev. nicht alle nötig)


    x264 habe ich von videolan per svn als Source heruntergeladen und kompiliert:


    svn co svn://svn.videolan.org/x264/trunk x264
    cd x264
    ./configure --enable-gtk --enable-shared
    make
    make install




    Ich habe die Quellen für Avisynth 3 aus dem CVS-Archiv heruntergeladen.


    cvs -z3 -d:pserver:anonymous@avisynth2.cvs.sourceforge.net:/cvsroot/avisynth2 login


    cvs -z3 -d:pserver:anonymous@avisynth2.cvs.sourceforge.net:/cvsroot/avisynth2 co -r avisynth_3_0 avisynth


    Nacher:


    cd avisynth/build/linux
    sh ./bootstrap.sh
    ./configure --with-boost-lib-name=boost_thread-gcc-mt-1_33_1
    make
    make install


    echo "/usr/local/lib" >> /etc/ld.so.conf # nur wenn es noch nicht drin steht
    /sbin/ldconfig



    avisynth_test


    Das Programm startet, stürzt aber ab, wenn ich versuche ein Videofile zu laden (avi mit mpeg4 und mp3 audio).


    Fehlermeldung:


    accept /home/stefan/fasnacht2007.avi
    script : RIFF¼ïÑAVI LIST2
    terminate called after throwing an instance of 'avs::exception::Generic'
    what(): Error while creating a Face.
    Aborted




    Gruss,
    Stefan

  • Ich habe das Problem gefunden. In src/filters/source/messageclip.cpp ist ein Windows-Pfad zur Datei Arial.ttf. Das kann unter Linux nicht funktionieren.


    Folgender Patch hilft:


    silentium:/usr/src/avisynth/src/filters/source# diff messageclip.cpp.orig messageclip.cpp
    47c47
    < : StaticImage( CreateFrame(msg, text::freetype::Font("C:\\WINNT\\Fonts\\Arial.ttf", 28), vi->GetDimension(), vi->GetColorSpace(), env), vi )
    ---
    > : StaticImage( CreateFrame(msg, text::freetype::Font("/usr/share/fonts/truetype/msttcorefonts/Arial.ttf", 28), vi->GetDimension(), vi->GetColorSpace(), env), vi )
    70c70
    < Font font("C:\\WINNT\\Fonts\\Arial.ttf", 28);
    ---
    > Font font("/usr/share/fonts/truetype/msttcorefonts/Arial.ttf", 28);



    Jetzt funktioniert es! Ich kann ein sample.avs laden und sehe den Film als Standbild, kann aber durchscrollen.


    Ich musste zusätzlich noch folgende Debian-Pakete installieren:


    msttcorefonts
    gstreamer0.10-ffmpeg-full
    gstreamer0.10-lame
    gstreamer0.10-pitfdll
    gstreamer0.10-plugins-base
    gstreamer0.10-plugins-good




    Gruss,
    Stefan

  • Hallo,
    leider fehlt mir die Zeit, die Version zu testen, aber ich wollte mal kurz melden, dass ich Eure Bemühungen absolut Spitze finde!


    Avisynth ist der Hauptgrund, wieso ich noch Windows zum Videos bearbeiten einsetze, Aufnahme von DVB mache ich schon seit Langem nur noch unter Linux.
    Und was die fehlenden Filter angeht: Die vielen Filter für 2.5 sind auch nicht an einem Tag entstanden. Wenn die Version erstmal als deb/rpm/... verfügbar ist, werden sich sicher schnell Plugins finden, bzw. die Autoren oder andere Interessierte werden sich vermutlich die Mühe machen, die Plugins und Skriupte zu portieren.


    Also: Weiter so! :daumen:

  • Hi,
    urspruenglich wollte ich ja avisynth auf 'ner UltraSparc buechse zusammenbauen und da laufen lassen. Geht aber nicht wei der Asembler Teil leider mal gar nicht kompatibel ist zwischen Intel <-> Sparc.
    Also gut, versuchen wir@s auf 'ner x86 Kiste. Habe hier Suse 10.2 laufen.
    Leider liefert mir das configure folgende Fehler:


    Code
    1. conftest.cpp:8:28: error: ac_nonexistent.h: No such file or directoryconfigure:3923: $? = 1configure: failed program was:| /* confdefs.h. */| #define PACKAGE_NAME "Avisynth"| #define PACKAGE_TARNAME "avisynth"| #define PACKAGE_VERSION "3.0"| #define PACKAGE_STRING "Avisynth 3.0"| #define PACKAGE_BUGREPORT "http://forum.doom9.org"| /* end confdefs.h. */| #include ac_nonexistent.h


    .. von welchem Paket kommt der "ac_nonexistent.h" header ?



    nasm habe ich nagel-neu compiliert (ver. 2.02) "Eigentlich" kann es daran nicht liegen. Und der oben genannte Auszug aus dem config.log zeigt mir das der fehlende header warscheinlich eher das Problem ist ...

  • ich bleibe wie schon letztes mal bei den boost headern hängen

    Code
    1. checking for /usr/lib/libstlport.so... yes
    2. checking for Boost header files in /usr/include/boost-1_33_1... no
    3. configure: WARNING: Boost header files not in /usr/include/boost-1_33_1
    4. checking for Boost header files in /usr/local/include/boost-1_33_1... no
    5. configure: WARNING: Boost header files not in /usr/local/include/boost-1_33_1
    6. checking for Boost header files in /usr/include/boost-1_33... no
    7. configure: WARNING: Boost header files not in /usr/include/boost-1_33
    8. checking for Boost header files in /usr/local/include/boost-1_33... no
    9. configure: WARNING: Boost header files not in /usr/local/include/boost-1_33
    10. configure: error: "Boost is needed !"


    bin nach sheimers Anleitung vorgegangen...

  • Hallo Phantomas,


    Hast Du die Libboost-Headers auch installiert? Die *-dev Pakete meine ich. (bei Redhat oder SuSE vermutlich *-devel)


    Falls die Header bei Dir woanders liegen, kannst Du das beim ./configure angeben. z.B. so:


    ./configure --with-boost-includedir-path=/usr/include/boost


    Gruss,
    Stefan

  • .. Ich fürchte das alleine wird's nicht bringen.
    Ich mußte das Verzeichnis umbenennen (bzw link erzeugen) in /usr/include/boost-1_33_1 damit er's gefressen hat.


    Zusätzlich noch --with-boost-lib-name=boost_thread-gcc34-mt-1_34_1


    Ausgehend davon das du boost 1.34.1 benutzt. Trotzdem sucht er IMMER nach boost 1.33.1 ! deshalb den Klimmzug mit dem Verzeichnis


    Kann mir denn keiner mit dem nasm helfen ? bzw. was hat es mit dem ominösen ac_nonexistent.h auf sich ??

  • Hallo may24. Ich bin jetzt grade nicht ganz auf dem Laufenden, was Avisynth-3 für Linux angeht, aber vielleicht kann ich dir ja trotzdem irgendwie helfen.


    .. von welchem Paket kommt der "ac_nonexistent.h" header ?


    Ich würde aus dem Bauch heraus mal darauf tippen, dass ac_nonexistant.h irgendwas mit autoconfig / automake / autotools zu tun hat - also dem Programmpaket, welches üblicherweise dazu verwendet wird, die ./configure scripts zu erstellen. Dann könnte die Meldung auf einen Fehler in den Quelldateien für das configure-script hinweisen. Oder vielleicht ist das auch ein Standardtest von autoconf? So genau kenne ich mich nicht damit aus.


    Zitat
    Code
    1. configure: error: nasm patch version too old - Update nasm


    nasm habe ich nagel-neu compiliert (ver. 2.02) "Eigentlich" kann es daran nicht liegen. ...


    Hmm, mein Debian Stable hat immernoch einen nasm-0.98.38 im Angebot. Haben sich zwischen nasm-0.9x und nasm-2 vielleicht die Kommandozeilenparameter verändert? Tuts vielleicht auch yasm?



    Als ich zum (ersten und) letzten mal Avisynth-3 kompiliert habe, kam mir der Weg zum fertigen Binary auch sehr steinig vor. Das Resultat der Mühen war dann ein Programm, mit dem ich überhaupt nichts anfangen konnte. IIRC wurde das Format meiner Videos nicht erkannt und Filter gab es auch noch keine. Irgendwie wage ich zu bezweifeln, dass sich daran im letzten halben Jahr viel geändert hat. :-/ Als funktionierende Alternative habe ich für mich jedoch Avisynth-2.x unter Wine gefunden. Allerdings bin ich da noch nicht über das Experimentierstadium herausgekommen. Aber Videos mit einem AVS-Script zerschnippeln, filtern und mit x264 kodieren klappt unter Linux mit der Kombination Avisynth/Wine schon.


    Ich hoffe das hilft dir irgendwie.