AGB  ·  Datenschutz  ·  Impressum  







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

Acinerella [Ver. 1.4] FFMpeg Wrapper

Ein Thema von igel457 · begonnen am 18. Jul 2008 · letzter Beitrag vom 23. Jan 2016
Antwort Antwort
Seite 3 von 3     123   
Benutzerbild von igel457
igel457

Registriert seit: 31. Aug 2005
1.622 Beiträge
 
FreePascal / Lazarus
 
#1

Re: Acinerella [Ver. 1.1] FFMpeg Wrapper

  Alt 18. Apr 2009, 10:40
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.
Andreas
"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
  Mit Zitat antworten Zitat
Benutzerbild von igel457
igel457

Registriert seit: 31. Aug 2005
1.622 Beiträge
 
FreePascal / Lazarus
 
#2

Re: Acinerella [Ver. 1.3] FFMpeg Wrapper

  Alt 2. Aug 2009, 15:00
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
Andreas
"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
  Mit Zitat antworten Zitat
Benutzerbild von igel457
igel457

Registriert seit: 31. Aug 2005
1.622 Beiträge
 
FreePascal / Lazarus
 
#3

Re: Acinerella [Ver. 1.4] FFMpeg Wrapper

  Alt 21. Mai 2010, 23:37
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
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 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
Andreas
"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
  Mit Zitat antworten Zitat
ekke

Registriert seit: 14. Nov 2009
18 Beiträge
 
#4

Re: Acinerella [Ver. 1.4] FFMpeg Wrapper

  Alt 27. Mai 2010, 11:36
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
  Mit Zitat antworten Zitat
Benutzerbild von igel457
igel457

Registriert seit: 31. Aug 2005
1.622 Beiträge
 
FreePascal / Lazarus
 
#5

Re: Acinerella [Ver. 1.4] FFMpeg Wrapper

  Alt 27. Mai 2010, 17:27
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
Andreas
"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
  Mit Zitat antworten Zitat
ekke

Registriert seit: 14. Nov 2009
18 Beiträge
 
#6

Re: Acinerella [Ver. 1.4] FFMpeg Wrapper

  Alt 27. Mai 2010, 17:59
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
  Mit Zitat antworten Zitat
Benutzerbild von igel457
igel457

Registriert seit: 31. Aug 2005
1.622 Beiträge
 
FreePascal / Lazarus
 
#7

Re: Acinerella [Ver. 1.4] FFMpeg Wrapper

  Alt 27. Mai 2010, 18:14
Zitat von ekke:
Allerdings müsste dazu ja die DLL neu kompiliert werden - aber wie geht das (welcher Compiler etc.)?
Du benötigst dafür GCC/MinGW. Dann musst du FFMpeg für Windows statisch kompilieren und installieren. Anschließend kannst du ganz einfach Acinerella mit einem einfachen "make" compilieren. Leider ist das Ganze (unter Windows) nicht gerade trivial. Ganz ohne Linuxkenntnisse könnte es schwierig werden.

Eine Anleitung eine entsprechende Buildumgebung zu schaffen (welche ganz genau Schritt für Schritt befolgt werden muss) findet sich hier: http://ffmpeg.arrozcru.org/wiki/inde...itle=Main_Page
Andreas
"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
  Mit Zitat antworten Zitat
ekke

Registriert seit: 14. Nov 2009
18 Beiträge
 
#8

Re: Acinerella [Ver. 1.4] FFMpeg Wrapper

  Alt 28. Mai 2010, 08:04
Ok, das sieht - für mich als Delphi verwöhnten - *sehr* kompliziert aus. Mit Linux kenne ich mich ein wenig aus (ls, cd & co.). Mein enger Zeitrahmen wird aber verhindern das ich mich da durchwühle.
Danke trotzdem!
  Mit Zitat antworten Zitat
ekke

Registriert seit: 14. Nov 2009
18 Beiträge
 
#9

Re: Acinerella [Ver. 1.4] FFMpeg Wrapper

  Alt 28. Mai 2010, 13:47
Was die "Key Frames" (oder Intra-Frames) angeht habe ich etwas gefunden.
Die function ac_read_package liefert einen Zeiger zurück, der mehr enthält als die Deklaration TAc_Package hergibt.
Ich habe wie folgt deklariert
Delphi-Quellcode:
  
const
  AV_PKT_FLAG_KEY = $0001;

type
  PAVPacket = ^TAVPacket;
  TAVPacket = packed record {56}
    pts: int64; ///< presentation time stamp in time_base units
    dts: int64; ///< decompression time stamp in time_base units
    data: PByte;
    size: integer;
    stream_index: integer;
    flags: integer;
    duration: integer; ///< presentation duration in time_base units (0 if not available)
    destruct: procedure (p: PAVPacket);
    priv: pointer;
    pos: int64; ///< byte position in stream, -1 if unknown
  end;
  PAc_package_Overload = ^TAc_package_Overload;
  TAc_package_Overload = packed record
    {The stream the package belongs to.}
    stream_index: integer;
    _offset1 : integer;
    AVPacket: TAVPacket;
  end;
Dann kann das Ergebnis mittels typecast wie folgt verwendet werden

Delphi-Quellcode:
pack := ac_read_package(inst);
...
iskeyframe := ((PAc_package_Overload(pack)^.AVPacket.flags and AV_PKT_FLAG_KEY) <> 0);
die Boolsche Variable "iskeyframe" wird True wenn ein Startbild decodiert wurde. Funktioniert bei meinem H.264 HD test strom fast (selten ist das erste Frame nur grau) immer.

Gruß Ekkehard
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 3     123   


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 21:19 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz