Auslesen von Dateiattributen

Für allgemeine Fragen zur Programmierung, welche nicht! direkt mit Lazarus zu tun haben.
Hercules
Beiträge: 104
Registriert: Mi 2. Jun 2010, 17:56
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit

Auslesen von Dateiattributen

Beitrag von Hercules »

Hallo an alle.
Wenn ich aus einer Datei die Dateigröße auslesen möchte, dann kann ich das z.B. wie folgt machen:

G := FileSize('TEST.TXT');
G ist ein Integer und da kann ich dann die Dateigröße finden.

Bei Video-Dateien (MPG, MP4, u.s.w) gibt es auch ein Dateiattribut für die Länge (Abspieldauer) der Datei.
Wenn man sich die Eigenschaften einer solchen Datei anschaut und dann die Details aufklappt,
dann steht da unter Video z.B. Länge 1:10:15 also 1 Stunde, 10 Minuten und 15 Sekunden.
Kann mir jemand sagen, wie ich den Wert mit Lazarus auslesen kann ?
Schönen Sonntag noch allen,
Hercules.

Jole
Beiträge: 114
Registriert: Fr 4. Jul 2014, 14:39
OS, Lazarus, FPC: Linux
CPU-Target: amd64

Re: Auslesen von Dateiattributen

Beitrag von Jole »

Google mal nach Mediainfo.dll und deren Referenz, damit kannst du alle Infos aus Medien lesen die da drin sind. Unter Linux Mint lässt sie sich über die Anwendungsverwaltung installieren. Einfach nach Mediainfo suchen und libmediainfo-dev installieren. Ich selber hab sie allerdings noch nie verwendet und kann dir deshalb keine weiteren Infos geben.

Hercules
Beiträge: 104
Registriert: Mi 2. Jun 2010, 17:56
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit

Re: Auslesen von Dateiattributen

Beitrag von Hercules »

Hallo Jole,
vielen Dank für Deine schnelle Antwort.
Ich werd' mich da mal schlau machen.
M.f.G. Hercules

Hercules
Beiträge: 104
Registriert: Mi 2. Jun 2010, 17:56
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit

Re: Auslesen von Dateiattributen

Beitrag von Hercules »

Hallo Jole,
die Beschreibung, was Mediainfo zu bieten hat, war eigentlich ganz
vielversprechend. Ich habe es mir runtergeladen und installiert.
Aber das war es dann auch schon. Bin nicht dahinter gekommen,
wie man es anwendet. Nach der Installation kein Icon oder Ähnliches zum
Starten gefunden, aber vielen Dank nochmal, vielleicht schaff ich es doch noch.....
Hercules.

Jole
Beiträge: 114
Registriert: Fr 4. Jul 2014, 14:39
OS, Lazarus, FPC: Linux
CPU-Target: amd64

Re: Auslesen von Dateiattributen

Beitrag von Jole »

Du brauchst ja auch eine Bindung (Header unit) zur Bibliothek. Da hat aber schon mal einer was für Delphi gemacht, schau mal hier ob du was damit anfangen kannst.

Hercules
Beiträge: 104
Registriert: Mi 2. Jun 2010, 17:56
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit

Re: Auslesen von Dateiattributen

Beitrag von Hercules »

Hallo Jole,
werde morgen nochmal darüber in mich gehen.....
Danke, Hercules

Benutzeravatar
Garfield
Beiträge: 172
Registriert: Do 5. Jun 2008, 22:07
OS, Lazarus, FPC: Ubuntu 22.04 LTS (Laz 3.0 FPC3.2.2)
CPU-Target: 64Bit
Wohnort: Aken

Re: Auslesen von Dateiattributen

Beitrag von Garfield »

Zum Programmieren unter Windows nimmt man nicht die Anwendung MediaInfo sondern die MediaInfoLib, d. h. die von Jole genannte MediaInfo.DLL.

Auf der von Jole verlinkten Seite ist links ein Menue. Da siehst Du die Unterseiten mit Erläuterungen. Der letzte Link unter Downloads ist ein Link zum MediaInfoLib-Projekt.
Gruß Garfield

Hercules
Beiträge: 104
Registriert: Mi 2. Jun 2010, 17:56
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit

Re: Auslesen von Dateiattributen

Beitrag von Hercules »

Hallo Garfield,
vielen Dank für Deinen Hinweis.
Tut mir leid, dass ich mich erst so spät melde, aber mich hatte
eine Erkältung so richtig erwischt, konnte 14 Tage kaum ein Wort reden
und keinen klaren Gedanken fassen.
Jetzt geht es wieder, werde Deinen Tipp mal folgen.
Vielen Dank erst mal....
Hercules.

Hercules
Beiträge: 104
Registriert: Mi 2. Jun 2010, 17:56
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit

Re: Auslesen von Dateiattributen

Beitrag von Hercules »

Hallo Garfield,
ich habe jetzt mit Deiner Hilfe folgende Dateien gefunden, heruntergeladen
und in das folgende Lazarus-Verzeichnis kopiert:

Lazarus\Components\LazUtils\MediaInfoDll.Pas
Lazarus\Components\LazUtils\MediaInfoDllmod.Pas

Wenn ich in einer Anwendung in den USES die MediaInfoDll eintrage und die Anwendung starte,
dann bekomme ich den folgenden Fehler:

unit1.pas(0,0) Fatal: Can not find unit MediaInfoDll used by Unit1.

Hab' ich da noch was vergessen, oder geht das so nicht.....?

Hercules.

Benutzeravatar
Garfield
Beiträge: 172
Registriert: Do 5. Jun 2008, 22:07
OS, Lazarus, FPC: Ubuntu 22.04 LTS (Laz 3.0 FPC3.2.2)
CPU-Target: 64Bit
Wohnort: Aken

Re: Auslesen von Dateiattributen

Beitrag von Garfield »

Der Compiler findet die Unit nicht, weil sie sich nicht in einem Pfad, welcher im Suchpfad Deines Projektes eingetragen ist, befindet. Da Du auch eine MediaInfoDllmod.pas dabei hast, willst Du wohl eine ältere MediaInfoDLL, also vor 0.7.x.x, verwenden? Bei den alten Versionen wird die MediaInfoDll.pas zum statischen und die MediaInfoDllMod.pas zum dynamischen Laden der DLL verwendet. Für die DLL 0.7..x.x gibt es nur noch eine Unit zum dynamischen Laden der DLL.

Das einfachste wäre die Source zur GUI und die jetzt oder die damals aktuelle DLL zu nehmen. Ob die aktuelle Version der DLL mit den Units funktioniert, weiß ich nicht. Ob die Units mit Lazarus ohne Anpassungen arbeiten habe ich nicht ausprobiert. Die Compiler sind bei den Archiven angegeben. Die DLL muss im Pfad Deiner EXE liegen.
Gruß Garfield

Hercules
Beiträge: 104
Registriert: Mi 2. Jun 2010, 17:56
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit

Re: Auslesen von Dateiattributen

Beitrag von Hercules »

Hallo Garfield,
vielen Dank für Deine schnelle Reaktion. Bin gerade von der Firma nach hause gekommen, werde mir das morgen mal anschauen. Danke ......
Hercules

Hercules
Beiträge: 104
Registriert: Mi 2. Jun 2010, 17:56
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit

Re: Auslesen von Dateiattributen

Beitrag von Hercules »

Hallo Garfield,
jetzt habe ich drei Tage alles Mögliche ausprobiert, auch Deinen Vorschlag, die MediaInfoDll.bas in den Pfad der Anwendung zu legen.
Aber die MediaInfoDll wird einfach nicht gefunden. Vielen Dank nochmal, aber ich bin schon am überlegen, ob ich die Filmlänge vieloleicht
aus der Dateigröße errechnen kann. Ich weiß im Moment noch nicht so richtig, wo ich hinfassen könnte.
Erst mal Danke an alle, die mir geantwortet haben.
Hercules.

Jole
Beiträge: 114
Registriert: Fr 4. Jul 2014, 14:39
OS, Lazarus, FPC: Linux
CPU-Target: amd64

Re: Auslesen von Dateiattributen

Beitrag von Jole »

Hallo Garfield,
jetzt habe ich drei Tage alles Mögliche ausprobiert, auch Deinen Vorschlag, die MediaInfoDll.bas in den Pfad der Anwendung zu legen.
Aber die MediaInfoDll wird einfach nicht gefunden.

Könnte es sein, dass die DLL Bit mäßig nicht zur CPU passt (32/64BIt)?
Vielen Dank nochmal, aber ich bin schon am überlegen, ob ich die Filmlänge vieloleicht
aus der Dateigröße errechnen kann.

Wissen tu ichs nicht, kann es mir aber nicht vorstellen. Beispiel zweier Filme:

Zeit Größe (MB) Type
3.17.43 -> 686.8 -> MP4
1.34.34 -> 850.8 -> MP4

Es scheint also unterschiedliche Komprimierungs tiefen zu geben die du dann auch erst ermitteln müsstest.

wp_xyz
Beiträge: 4869
Registriert: Fr 8. Apr 2011, 09:01

Re: Auslesen von Dateiattributen

Beitrag von wp_xyz »

Hercules, ich weiß nicht, was du genau machst, aber bei mir läuft das Demo-Programm nach geringen Anpassungen für Lazarus auf Anhieb. Ich habe es angehängt, die zugehörige DLL habe ich mit ins Archiv gesteckt - es sollte die 32-Bit Version sein, da ich zwar das 64-Bit Win10 verwende, Lazarus dagegen nur in der 32-Bit-Version (ist im Download der dll nicht klar zu erkennen). Einfach alles auspacken, die Demo kompilieren - sollte laufen. Ich hab's mit einigen Videos auf meiner Platte getestet.
Dateianhänge
mediainfodll.zip
(1.81 MiB) 148-mal heruntergeladen
Zuletzt geändert von wp_xyz am Mo 27. Feb 2017, 17:45, insgesamt 1-mal geändert.

Benutzeravatar
Garfield
Beiträge: 172
Registriert: Do 5. Jun 2008, 22:07
OS, Lazarus, FPC: Ubuntu 22.04 LTS (Laz 3.0 FPC3.2.2)
CPU-Target: 64Bit
Wohnort: Aken

Re: Auslesen von Dateiattributen

Beitrag von Garfield »

@Hercules:

Wenn Du die Demo in Lazarus lädst gibt es einige Fehlermeldungen. Allerdings nicht, dass eine Unit nicht gefunden wird.

Die Spieldauer kann man mit Hilfe der Dateigröße schätzen. Dafür musst Du Bitrate ermitteln. Funktioniert aber nur bei konstanter Bitrate. Für MP1 und MP2 http://www.fr-an.de/projects/mpeg/04_04.htm

@Jole:

Richtig. 32bit Anwendung und 32bit DLL sowie 64bit Anwendung und 64bit DLL.

@wp_xyz

Damit sollte Hercules zurechtkommen.
Gruß Garfield

Antworten