Delphi-PRAXiS
Seite 2 von 4     12 34      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Software-Projekte der Mitglieder (https://www.delphipraxis.net/26-software-projekte-der-mitglieder/)
-   -   Acinerella [Ver. 1.4] FFMpeg Wrapper (https://www.delphipraxis.net/117475-acinerella-%5Bver-1-4%5D-ffmpeg-wrapper.html)

mimi 16. Okt 2008 18:20

Re: Acinerella [Ver. 1.1] FFMpeg Wrapper
 
Ich bekomme keine acinerella.so erzeugen.
Ich bin in src verzeichnis gegangen und habe make aufgerufen von der Console.
Er gibt Fehler:
Zitat:

gcc -c -fPIC acinerella.c
In file included from acinerella.c:19:
acinerella.h:168: error: expected declaration specifiers or ‘...’ before ‘*’ token
acinerella.h:168: error: ‘__cdecl’ declared as function returning a function
acinerella.h:172: error: expected declaration specifiers or ‘...’ before ‘*’ token
acinerella.h:172: error: ‘__cdecl’ declared as function returning a function
acinerella.h:172: error: redefinition of typedef ‘__cdecl’
acinerella.h:168: error: previous declaration of ‘__cdecl’ was here
acinerella.h:174: error: expected declaration specifiers or ‘...’ before ‘*’ token
acinerella.h:174: error: ‘__cdecl’ declared as function returning a function
acinerella.h:174: error: redefinition of typedef ‘__cdecl’
acinerella.h:172: error: previous declaration of ‘__cdecl’ was here
acinerella.h:175: error: expected declaration specifiers or ‘...’ before ‘*’ token
acinerella.h:175: error: ‘__cdecl’ declared as function returning a function
acinerella.h:175: error: redefinition of typedef ‘__cdecl’
acinerella.h:174: error: previous declaration of ‘__cdecl’ was here
acinerella.h:176: error: expected declaration specifiers or ‘...’ before ‘*’ token
acinerella.h:176: error: ‘__cdecl’ declared as function returning a function
acinerella.h:176: error: redefinition of typedef ‘__cdecl’
acinerella.h:175: error: previous declaration of ‘__cdecl’ was here
acinerella.h:179: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘ac_mem_mgr’
acinerella.h:182: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘ac_init’
acinerella.h:183: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘ac_free’
acinerella.h:193: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘ac_open’
acinerella.h:200: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘ac_close’
acinerella.h:203: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘ac_get_stream_info’
acinerella.h:206: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘ac_read_package’
acinerella.h:208: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘ac_free_package’
acinerella.h:212: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘ac_create_decoder’
acinerella.h:214: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘ac_free_decoder’
acinerella.h:217: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘ac_decode_package’
acinerella.c:35: error: expected specifier-qualifier-list before ‘ac_openclose_callback’
acinerella.c: In function ‘unique_protocol_name’:
acinerella.c:106: warning: incompatible implicit declaration of built-in function ‘strcpy’
acinerella.c: At top level:
acinerella.c:133: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘mgr_malloc’
acinerella.c:134: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘mgr_realloc’
acinerella.c:135: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘mgr_free’
acinerella.c:137: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘ac_mem_mgr’
acinerella.c:147: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘ac_init’
acinerella.c:160: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘ac_free’
acinerella.c: In function ‘file_open’:
acinerella.c:177: error: ‘ac_data’ has no member named ‘open_proc’
acinerella.c:178: error: ‘ac_data’ has no member named ‘open_proc’
acinerella.c: In function ‘file_read’:
acinerella.c:187: error: ‘ac_data’ has no member named ‘read_proc’
acinerella.c:188: error: ‘ac_data’ has no member named ‘read_proc’
acinerella.c: In function ‘file_close’:
acinerella.c:197: error: ‘ac_data’ has no member named ‘close_proc’
acinerella.c:198: error: ‘ac_data’ has no member named ‘close_proc’
acinerella.c: At top level:
acinerella.c:204: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘ac_open’
acinerella.c:257: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘ac_close’
acinerella.c:264: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘ac_get_stream_info’
acinerella.c:341: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘ac_read_package’
acinerella.c:364: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘ac_free_package’
acinerella.c:461: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘ac_create_decoder’
acinerella.c: In function ‘ac_decode_video_package’:
acinerella.c:484: warning: ‘img_convert’ is deprecated (declared at /usr/local/include/libavcodec/avcodec.h:2514)
acinerella.c: In function ‘ac_decode_audio_package’:
acinerella.c:522: warning: assignment makes pointer from integer without a cast
acinerella.c: At top level:
acinerella.c:535: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘ac_decode_package’
acinerella.c:574: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘ac_free_decoder’
make: *** [acinerella] Fehler 1
Ich wollte deine LIB mal unter Linux ausprobieren. Weil da suche ich noch eine Möglichkeit unter Lazarus zuverlässig Videos und sowas abzuspielen ! TV Geht auch ? Toll !
ich wollte erstmal eine Linux LIb erzeugen bevor ich deinen Player ausprobieren kann.

inherited 16. Okt 2008 18:43

Re: Acinerella [Ver. 1.1] FFMpeg Wrapper
 
Ändere mal folgendes:
Vorher
Code:
#ifdef _WIN32
#define CALL_CONVT __cdecl
#else
#define CALL_CONVT __cdecl
#endif
Nachher
Code:
#ifdef _WIN32
#define CALL_CONVT __cdecl
#else
#define CALL_CONVT
#endif
Allerdings ist das (leider) nicht das einzige Problem. Viele Linux-Distributionen vertreiben Versionen von FFMpeg, die die alte img_convert nicht mehr an Bord hat, bzw. diese nicht mehr exportieren. Abhilfe schafft hier entweder das manuelle Kompilieren der FFMpeg oder das Warten auf eine der nächsten Acinerella-Versionen, denn ich denke dass Andreas diese Funktion ersetzen wird.
Solltest du einen Fehler beim Kompilieren der test.c erhalten, der besagt, dass O_BINARY nicht gefunden wurde, so musst du außerdem
folgendes in die test.c einfügen:
Code:
#ifndef WIN32
#define O_BINARY 0
#endif
Der "Fehler" rührt daher, dass es unter Linux eben keinen unterschied zwischen dem binären und "textuellen"(komisches Wort, nennt man das so?) Öffnen von Dateien gibt, unter Windows allerdings schon. Daher braucht man die Konstante unter Linux/Unix nicht und wird schlichtweg nicht definiert. Durch das Setzen auf 0 sollte es auch bei Oder-Verknüpfungen von diesen O_-Konstanten zu keinerlei Problemen kommen.

Viel Glück.

mimi 16. Okt 2008 18:51

Re: Acinerella [Ver. 1.1] FFMpeg Wrapper
 
jetzt bekomme ich folgende Fehler:
Zitat:

gcc -c -fPIC acinerella.c
acinerella.c: In function ‘unique_protocol_name’:
acinerella.c:106: warning: incompatible implicit declaration of built-in function ‘strcpy’
acinerella.c: In function ‘ac_open’:
acinerella.c:239: warning: incompatible implicit declaration of built-in function ‘strcpy’
acinerella.c:240: warning: incompatible implicit declaration of built-in function ‘strcat’
acinerella.c: In function ‘ac_decode_video_package’:
acinerella.c:484: warning: ‘img_convert’ is deprecated (declared at /usr/local/include/libavcodec/avcodec.h:2514)
gcc -shared -o acinerella.dll acinerella.o -lavformat -lavcodec -lavutil -lm -lws2_32
/usr/bin/ld: cannot find -lws2_32
collect2: ld returned 1 exit status
make: *** [acinerella] Fehler 1
Zitat:

Der "Fehler" rührt daher, dass es unter Linux eben keinen unterschied zwischen dem binären und "textuellen"(komisches Wort, nennt man das so?) Öffnen von Dateien gibt,
Was genau meinst du damit ? Meinst du damit das Linux nicht auf die Endung achtet sondern auf den Inhalt ?
oder was genau meinst du damit ?

inherited 17. Okt 2008 00:33

Re: Acinerella [Ver. 1.1] FFMpeg Wrapper
 
Hi,

bis das läuft ist wohl noch mehr zu tun.
Für die Warnungen musst du noch #include <string.h> hinzufügen, das ist ein kleiner Bug der aber in der aktuellen Version behoben sein sollte. Das mit der img_convert hatte ich ja bereits erwähnt, da bastelt Andreas dran.
Das letzte Problem ist ein Problem der Makefile, bishher ist es offenbar noch nicht gelungen eine Plattformabhänge Kompilierung hinzubekommen. Wenn du dir die Makefile mal anschaust, wirst du feststellen das es zwei befehle gibt, einen für Linux, einen für Windows. Du musst nur den richtigen ausführen. Das heißt, ich glaube in der im Moment offiziellen Version gibt es das noch nicht. Ersetz mal das in der Makfeile angegebene durch folgendes:
gcc -shared -o libacinerella.so acinerella.o -lavformat -lavcodec -lavutil -lm -lswscale

Zitat:

Was genau meinst du damit ? Meinst du damit das Linux nicht auf die Endung achtet sondern auf den Inhalt ?
oder was genau meinst du damit ?
Nein. Ich glaube O_TEXT unter Windows würde bis zum ersten 0-Zeichen lesen, und danach die Datei als fertig gelesen betrachten, da es so vorgesehen ist. Unter Unix wird immer bis EOF gelesen, egal ob Binär oder Text, da gibt es unter Unix keinen unterschied. Vielleicht spielt auch noch CR+LF eine Rolle.

igel457 18. Apr 2009 10:40

Re: Acinerella [Ver. 1.1] FFMpeg Wrapper
 
Hallo,

es gibt eine neue Version von Acinerella: 1.2

Änderungen:
+ Compiliert mit FFMpeg 0.5
+ Neue Dateitypen: WMV, WMA, besserer Support für OGG-Theora, FLV
+ "Streamseek" Callbackfunktion hinzugefügt (nicht für das aktive Suchen im Stream(!))
* Läuft ohne Probleme unter Linux
* Fehler in ac_free_decoder behoben
* Delphi 2009 kompatibilität des Headers.

Download:
http://downloads.sourceforge.net/aci...se_mirror=osdn

Viel Spaß damit!

EDIT: Wer sich vor 12:55 das Paket heruntergeladen hat, sollte dies nochmal tun - ich hatte vergessen die Makefile auszutauschen und in der Demo war noch ein Bug.

igel457 2. Aug 2009 15:00

Re: Acinerella [Ver. 1.3] FFMpeg Wrapper
 
Hallo,

ich habe eine neue Version von Acinerella hochgeladen.

Acinerella 1.3 hat folgende Änderungen:
+ Medieninformationen (Autor, Titel, Album, Länge, etc.) hinzugefügt
+ Zeitsprungunterstützung hinzugefügt (ac_seek Funktion)
+ Umgehung für springende Zeitstempel hinzugefügt (wie dies zum Beisipel bei OGG-Dateien der Fall war)
* Fehler in der Erzeugungsfunktion für einzigartige Protokollnamen behoben

Viel Spaß damit,
Andreas

igel457 21. Mai 2010 23:37

Re: Acinerella [Ver. 1.4] FFMpeg Wrapper
 
Hi,

nachdem ich in den letzten Monaten immer mal wieder ein bisschen an Acinerella gebastelt habe, möchte ich euch diese Änderungen nicht vorenthalten und habe ein neues Release zusammengeschustert:

Folgende Änderungen:

Version 1.4
:arrow: Proben- und Scoringsystem hinzugefügt
:arrow: Internes und verbuggtes Protokol-System entfernt und ersetzt
:arrow: Compiliert mit brandneuer ffmpeg-revision (vom 22. Mai 2010)
:arrow: Makefile verbessert
:arrow: Probleme mit dem externen Memorymanager unter Linux aufgelöst

Den Download gibt es wie gewohnt im ersten Post oder zusammen mit mehr Informationen unter http://acinerella.sf.net/

Viel Spaß damit, ich freue mich auf euer Feedback,
Andreas

ekke 27. Mai 2010 11:36

Re: Acinerella [Ver. 1.4] FFMpeg Wrapper
 
Hallo,
erstmal vielen Dank für das Update (und natürlich für das gesamte Projekt).

Ich habe 3 Fragen:

1.) Die Funktion "ac_decode_package" schreibt auf die Konsole (Fehlermeldungen), kann man das Abstellen / Umleiten?

2.) Die Funktionen "ac_open" und "ac_probe_input_buffer" gibt einen "PAc_proberesult" wert zurück, der nur als Pointer deklariert ist. Was verbirgt sich denn tatsächlich dahinter?

3.) Gibt es eine Möglichkeit die "Art" des Videobildes zu bestimmen? Bei MPEG2 interessieren mich eigendlich nur die "I"-Frames, bei MPEG-4 nur die "Reference Images".

Vielen Dank! Gruß Ekkehard

igel457 27. Mai 2010 17:27

Re: Acinerella [Ver. 1.4] FFMpeg Wrapper
 
Hallo,

1.) Nein, nicht dass ich wüsste. Eventuell gibt es in FFMpeg eine entsprechende Funktion. Sobald kein Konsolenfenster da ist, wird aber auch nichts angezeigt und es gibt auch keine I/O Fehlermeldung.

2.) Dahinter verbirgt sich ein Pointer auf AVInputFormat. Falls du überprüfen möchtest, ob Acinerella eine bestimmte Datei öffnen kann, kannst du ein paar Bytes daraus mit "ac_probe_input_buffer" Testen. Damit beim Öffnen der Datei diese Überprüfung nicht erneut stattfinden muss, kannst du das "probe result" direkt an "ac_open" übergeben.

3.) Nein, das ist aktuell nicht möglich, sollte aber eigentlich relativ einfach einzubauen sein. Über jede Mithilfe und jeden Patch freue ich mich.

Hoffe, dir geholfen zu haben,
Andreas

ekke 27. Mai 2010 17:59

Re: Acinerella [Ver. 1.4] FFMpeg Wrapper
 
Danke für die Antworten.
zu 3.)
Wenn etwas bei meiner Arbeit "abfällt" bin ich gerne bereit das wieder zu Verfügung zu stellen. Allerdings müsste dazu ja die DLL neu kompiliert werden - aber wie geht das (welcher Compiler etc.)?

Gruß Ekkehard


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:07 Uhr.
Seite 2 von 4     12 34      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz