Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi ID3 Viel zu langsam beim lesen (https://www.delphipraxis.net/97091-id3-viel-zu-langsam-beim-lesen.html)

napsterxx 4. Aug 2007 13:44


ID3 Viel zu langsam beim lesen
 
Informationen aus MP3 Dateien zu lesen geht ja ganz gut, solang das nicht viele sind. Sind das aber mal 1000-2000 dann dauert das... und zwar echt lange. Deshalb wollte ich meinen Media Player umstrukturieren, dass er die Infos aus mp3 Dateien schneller liest. Aber wie? DSA dauert immernoch verdammt lange. Benutze die Jedis... Kann jemand helfen ;)?

Gausi 4. Aug 2007 13:53

Re: ID3 Viel zu langsam beim lesen
 
Wie lange dauert das denn bei dir? Mit meinen mp3FileUtils schaffe ich ca. 25-50 Dateien pro Sekunde (je nach Datenträger, auf dem die mp3s liegen). Ausgelesen wird dabei Id3v1 und v2-Tag sowie diverse Infos wie Bitrate, Dauer etc.

OregonGhost 4. Aug 2007 14:40

Re: ID3 Viel zu langsam beim lesen
 
Also, wenn ich dem Media Center oder Media Player meine komplette Bibliothek zum Einlesen gebe, ist der auch schon ein paar Minuten beschäftigt. Find ich jetzt nicht direkt ungewöhnlich. Was ist denn für dich "verdammt lange"?

gsh 4. Aug 2007 14:41

Re: ID3 Viel zu langsam beim lesen
 
du könntest es vllt. optimieren wenn du es auf mehreren Threads aufteilst oder du optimierst den code der es ausließt

Bernhard Geyer 4. Aug 2007 14:55

Re: ID3 Viel zu langsam beim lesen
 
Schon mal kontrolliert wo genau die Zeit verbraten wird (z.B. mit AQTime). Es könnte ja neben dem Festplattenzugriff die Laderoutine einfach nicht optimal Programmiert worden sein (z.B. zu häufige GUI-Aktualisierungen)

napsterxx 6. Aug 2007 12:48

Re: ID3 Viel zu langsam beim lesen
 
Also ich sag mal die ersten 1000 songs gehn sehr schnell, ich habe eine Progressbar eingebaut, aber dann dauert das... vll insgesammt 2min. Beim Media Player 11 geht dsa in 2sekunden... mp3FileUtils hab ich auch probiert. Macht kein unterschied im gegensatz zu den jedis.

Gausi 6. Aug 2007 12:53

Re: ID3 Viel zu langsam beim lesen
 
Ich glaube nicht, dass der WMP 1000 Dateien (also ca. 3GB) in 2 Sekunden analysieren kann. Der wird dann intern auf irgendwelche Datenbanken zurückgreifen, die im Hintergrund von irgendwelchen Diensten erstellt werden.

Bernhard Geyer 6. Aug 2007 12:54

Re: ID3 Viel zu langsam beim lesen
 
Du meinst jede mehr Dateien aufgenommen werden desto längert dauert jede neue Datei.
Wohin werden denn die Daten geschrieben? Werden Sie visualisiert? Zeig mal etwas Code.

Dunkel 6. Aug 2007 14:07

Re: ID3 Viel zu langsam beim lesen
 
Zitat:

Zitat von napsterxx
{ ... } ich habe eine Progressbar eingebaut, aber dann dauert das... vll insgesammt 2min.

Wie oft aktualisierst Du denn die Progressbar? Nach jeder gelesenen Datei? Das frisst ungemein viel Zeit (wenn man es aufaddiert). Lass der Progressbar lieber nach jeder 10ten, 50ten, 100ten Datei (musst Du halt ausprobieren was Dir am besten passt / am besten aussieht) aktuelle Daten zukommen, z.T. bringt das schon einiges.

OregonGhost 6. Aug 2007 15:11

Re: ID3 Viel zu langsam beim lesen
 
Die von dir angegebene Zeit vom WMP ist auf einen der folgenden Punkte zurückzuführen:
1. Du wolltest Dateien zur Bibliothek hinzufügen, die bereits vorhanden sind. Der WMP übergeht diese.
2. Du hast lediglich Dateien in der Medienbibliothek oder einer Playlist angezeigt. Diese Metadaten speichert der WMP in einer internen Datenbank für schnellen Zugriff.

Dunkels Tipp solltest du befolgen, falls du bisher bei allen Tests die Progressbar ständig aktualisiert hast. Ansonsten bleibt zu sagen, dass zwei Minuten für 1000 Dateien absolut keine lange Zeit sind. Wann musst du die Daten denn einlesen? Ein Benutzer hat Verständnis dafür, dass das Einlesen von tausenden von Dateien eine Zeitlang dauert, wenn er es nicht ständig machen muss. Geht es dir um das Einlesen z.B. aller Dateien in einem Verzeichnis, um sie anzuzeigen? Dann ist vielleicht ein Konzept wie beim WMP ganz günstig, oder du verlagerst das Einlesen in einen zweiten Thread, damit der Benutzer während des Einlesens schon mit dem Programm arbeiten kann (und schonmal die Daten angezeigt bekommt, die verfügbar sind).

sakura 6. Aug 2007 15:26

Re: ID3 Viel zu langsam beim lesen
 
Es hat erst einmal nichts mit der Progressbar zu tun, sondern mit Deiner Speicherverwaltung. Das erkennst Du daran, dass die 1000 recht zügig gelesen werden und es dann immer länger dauert. Beantworte mal die Frage von elvis, dann kann man der Ursache auf die Schliche kommen :zwinker:

...:cat:...

Dunkel 6. Aug 2007 16:56

Re: ID3 Viel zu langsam beim lesen
 
Zitat:

Zitat von sakura
Es hat erst einmal nichts mit der Progressbar zu tun, { ... }

Primär erst mal nicht, da hast Du wohl recht. Nichts desto trotz dauert das Aktualisieren einer Progressbar nach jeder Datei ziemlich lange. Als ich anno dazumal ähnliches gemacht und die Progressbar nach jeder Datei aktualisiert habe, habe ich nicht schlecht geguckt, als der ganze Prozess ohne Progressbar fast doppelt so schnell abgearbeitet worden ist.
Mein damaliger Code hat etwa 1min / 10GB (~ 2000) MP3-Dateien gebraucht (nur mal als Richtwert; TAGs wurden gelesen mit der ATL [Audio Tools Library]); der Code war nicht mal großartig optimiert, im Nachhinein würde ich sogar sagen, dass es Kot-Code war :wink: , z.B. so Schweinereien wie
Delphi-Quellcode:
SetLength(DynArray, High(DynArray)+2);
in einer Schleife :stupid: .

napsterxx 7. Aug 2007 12:53

Re: ID3 Viel zu langsam beim lesen
 
also:
Es dauert so lange da ich jedesmal die Dateien zur Wiedergabeliste hinzufüge. Ich könnte einfach den Inhalt der ListView abspeichern und dann neuaufrufen. Das wäre eine möglichkeit. Ohne Progressbar dauert es genauso lange.

Klaus01 7. Aug 2007 12:57

Re: ID3 Viel zu langsam beim lesen
 
Wie schaut denn Deine Wiedergabeliste aus?
Wird sie mit jeder neuen Datei aktuellisiert oder erst dann wenn alle Dateien gelesen wurden?

Grüße
Klaus

Bernhard Geyer 7. Aug 2007 13:02

Re: ID3 Viel zu langsam beim lesen
 
Zitat:

Zitat von napsterxx
Es dauert so lange da ich jedesmal die Dateien zur Wiedergabeliste hinzufüge.

GUI-Control TListView/TListBox? Verwendest du auch Begin/EndUpdate so das nicht nach jedem Ergänzen ein aktualisierung der GUI erfolgt! Das kann gewaltig Bremsen!


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:50 Uhr.

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