AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte Acinerella [Ver. 1.4] FFMpeg Wrapper

Acinerella [Ver. 1.4] FFMpeg Wrapper

Ein Thema von igel457 · begonnen am 18. Jul 2008 · letzter Beitrag vom 23. Jan 2016
Antwort Antwort
Seite 1 von 4  1 23     Letzte » 
Benutzerbild von igel457
igel457
Registriert seit: 31. Aug 2005
http://acinerella.sourceforge.net/img/acin_logo.jpg

Über:
Acinerella ist ein in C geschriebener Wrapper für die Dekodierfähigkeiten der FFMpeg Bibliotheken libavformat und libavcodec. Acinerella exportiert gerade mal 10 API-Funktionen - daher ist es sehr einfach die Headerdatei zu übersetzen und Acinerella mit anderen Programmiersprachen (zum Beispiel Pascal) zu verwenden. Würde man FFMpeg direkt verwenden wollen, so muss man drei 1000 Zeilen lange Header übertragen. Zwar gibt es eine Pascal Version dafür, doch diese ist nicht Up-To-Date und dazu höchst wahrscheinlich Fehlerhaft.
Acinerella ist einfach zu verwenden. Somit ist die größte Hürde auf dem Weg zum eigenen Video- und Audioplayer - das dekodieren der Daten - genommen. Die Datenströme werden direkt aus dem Speicher geladen, wodurch sich größtmögliche Freiheit bei der Entwicklung ergibt.

Alle FFMpeg Bibliotheken sind statisch mit Acinerella verbunden, wodurch sich eine einzelne, 2 MB große, DLL ergibt.

Einige unterstützte Formate:
  • Audioformate:
    • MP3
    • OGG
    • WAV, AIFF
    • WMA
    • AC3
    • FLAC
  • Videoformate:
    • MPEG2 (Als MPEG PS (*.mpg, *.vob) oder TS (z.b. *.ts))
    • H.246
    • AVI
    • WMV
    • MOV
    • FLV
    • OGG
    • Bink&Smacker

Wichtig:
Die Bibliothek ist unter der GPL veröffentlicht! Also wer damit geschriebene Programme veröffentlicht, muss (entsprechend der Lizenz) den Sourcecode davon ebenfalls offen legen.

Mehr Infos (oder auch nicht):
Auf der Acinerella Website:
http://acinerella.sourceforge.net/

Changelog:

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

Version 1.3
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

Version 1.2
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 (statisch oder dynamisch mit FFMpeg gelinkt)
Fehler in ac_free_decoder behoben
Delphi 2009 kompatibilität des Headers.

Version 1.1
Bug behoben, durch den Acinerella nach dem sequentiellen laden von einigen Dateien (3-10) mit einer AV abstürzt
Bug behoben, durch den Acinerella spätestens nach dem sequentiellen laden von 26 Dateien nicht mehr funktioniert
Der Header sollte nun auch mit Delphi 2009 laufen (siehe hier)
Die mitgelieferte test.c lief nur mit Cygwin, nicht wenn sie mit MinGW kompiliert wurde. Das ist jetzt auch behoben.
Nach wie vor können maximal nur 26 Dateien gleichzeitig geöffnet sein. Wer will kann diese Beschränkung beheben (acinerella.c->unique_protocol_name)
Die mitgelieferte DLL ist nun um ca. 1MB kleiner, was sich u.u. jedoch auf die Performance auswirken kann. Wer will kann sich seine eigene Version kompilieren.

Version 1.0
Initiale Veröffentlichung

Der Download:
Im Anhang ist meine aktuelle Version der Bibliothek, sowie der Pascal-Header und ein in Delphi geschriebenes Demo Programm (Exe im Ordner /bin, Quellen im Ordner /header/pascal/demo). Um das Programm zu verwenden, einfach im Explorer die zu öffnende Videodatei per Ziehen und Ablegen auf das Exe-Symbol ziehen. Wird eine Videospur gefunden, so wird diese in einem Fenster (über die GDI, sieht daher mies aus) wiedergegeben. Die erste Audiospur wird in eine Datei "out.wav" im Arbeitsverzeichnis ausgegeben.

Die Bibliothek kann hier heruntergeladen werden:
http://downloads.sourceforge.net/aci...se_mirror=osdn (1.9 MB, TAR.BZ2)

Viel Spaß damit,
Andreas
Miniaturansicht angehängter Grafiken
demo_iteration_152.png  
"Sollen sich auch alle schämen, die gedankenlos sich der Wunder der Wissenschaft und Technik bedienen, und nicht mehr davon geistig erfasst haben als die Kuh von der Botanik der Pflanzen, die sie mit Wohlbehagen frisst." - Albert Einstein

Geändert von igel457 (11. Jan 2011 um 16:03 Uhr)
 
Benutzerbild von Garfield
Garfield

 
Delphi XE5 Professional
 
#2
  Alt 19. Jul 2008, 15:03
Hallo, ich habe die Demo kurz mit einem MPEG2 PS mit M2V und MP2 und einer VOB mit M2V und AC3 ausprobiert. Das Bild ist in Ordnung so lange es nicht verkleinert wird und das Audio wird korrekt gespeichert.
  Mit Zitat antworten Zitat
Nils_13
 
#3
  Alt 19. Jul 2008, 15:04
Das Bild ist komplett in Ordnung. Es muss bloß mit OpenGL oder DirectX gezeichnet werden, da sonst die Geschwindigkeit von der Fenstergröße abhängt. Das ist also kein Fehler in Acinerella.
  Mit Zitat antworten Zitat
Benutzerbild von Garfield
Garfield

 
Delphi XE5 Professional
 
#4
  Alt 19. Jul 2008, 15:07
Zitat von Nils_13:
Das ist also kein Fehler in Acinerella.
Steht ja schon oben in der Beschreibung der Demo.
  Mit Zitat antworten Zitat
matthiasluebbe
 
#5
  Alt 24. Sep 2008, 21:17
Hi, super Projekt, ich hoffe es wird noch weiterentwickelt

Ich habe da aber ein Problem:

Wenn ich den Quellcode kompilieren will bekomme ich folgende Meldung:

[Error] acinerella_demo.dpr(43): Undeclared identifier: 'ReportMemoryLeaksOnShutdown' Kommentiere ich die entsprechende Zeile aus dann funktioniert es ohne Probleme.

Habe ich da etwas falsch gemacht oder ist das eine Delphi Funktion die mein Delphi 7 nicht unterstützt?
  Mit Zitat antworten Zitat
Benutzerbild von 3_of_8
3_of_8

 
Turbo Delphi für Win32
 
#6
  Alt 24. Sep 2008, 21:36
Sieht mir nach ner Funktion von FastMM aus... Wenn du das installierst und in das Projekt einbindest, sollte es gehen. Dürfte aber auch einfach mit Auskommentieren der Zeile funktionieren.
Manuel Eberl
  Mit Zitat antworten Zitat
_BlackDragon_
 
#7
  Alt 5. Okt 2008, 22:42
Hallo zusammen.

Zitat:
[Error] acinerella_demo.dpr(43): Undeclared identifier: 'ReportMemoryLeaksOnShutdown'
bzw.

Zitat:
Sieht mir nach ner Funktion von FastMM aus... Wenn du das installierst und in das Projekt einbindest, sollte es gehen. Dürfte aber auch einfach mit Auskommentieren der Zeile funktionieren.
Nein, es handelt sich um eine Variable in der System.pas.

Delphi-Quellcode:

{Set this variable to true to report memory leaks on shutdown. This setting
has no effect if this module is sharing a memory manager owned by another
module.}

  ReportMemoryLeaksOnShutdown: Boolean;
Bei mir BDS 2006.

Gruss BlackDragon

/EDIT:

Jetzt hab ich glatt vergessen, igel noch mitzuteilen... HUT AB !!!

Wie immer nur genialer Stuff aus deiner Ecke...
  Mit Zitat antworten Zitat
Benutzerbild von igel457
igel457

 
FreePascal / Lazarus
 
#8
  Alt 5. Okt 2008, 22:52
Erstmal Danke für das Lob. Ich entwickle die Bibliothek immer dann weiter, wenn ich neue Features brauche - momentan läuft sie aber einigermaßen gut.

Diese "ReportMemoryLeaksOnShutdown" Zeile kann getrost weggelassen werden (ist nur um das Debugging zu erleichtern). Ohne die Zeile braucht man sich auch um auftretende Speicherlecks nicht mehr zu kümmern
Andreas
  Mit Zitat antworten Zitat
mimi

 
FreePascal / Lazarus
 
#9
  Alt 8. Okt 2008, 20:58
schade ! Unter Lazarus läuft es nicht wegen dem Scanline.
Michael Springwald
  Mit Zitat antworten Zitat
Benutzerbild von igel457
igel457

 
FreePascal / Lazarus
 
#10
  Alt 9. Okt 2008, 20:54
Hab mal eine neue Version hoch geladen:
Code:
Version 1.1
 :arrow: Bug behoben, durch den Acinerella nach dem sequentiellen laden von einigen Dateien (3-10) mit einer AV abstürzt
 :arrow: Bug behoben, durch den Acinerella spätestens nach dem sequentiellen laden von 26 Dateien nicht mehr funktioniert
 :arrow: Der Header sollte nun auch mit Delphi 2009 laufen (siehe [url=http://www.delphipraxis.net/internal_redirect.php?t=142393]hier[/url])
 :arrow: Die mitgelieferte test.c lief nur mit Cygwin, nicht wenn sie mit MinGW kompiliert wurde. Das ist jetzt auch behoben.
 :arrow: Nach wie vor können maximal nur 26 Dateien gleichzeitig geöffnet sein. Wer will kann diese Beschränkung beheben (acinerella.c->unique_protocol_name)
 :arrow: Die mitgelieferte DLL ist nun um ca. 1MB kleiner, was sich u.u. jedoch auf die Performance auswirken kann. Wer will kann sich seine eigene Version kompilieren.
@mimi Ist ja auch nur eine Demo - Acinerella selbst ist äußerst Programmunabhängig und läuft vermutlich selbst auf dem Gameboy

PS: Außerdem ist Acinerella jetzt natürlich mit der allerneusten SVN-Version von FFMpeg ausgestattet.
Andreas
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:24 Uhr.
Powered by vBulletin® Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2019 by Daniel R. Wolf