AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi MediaInfoDll + Schleife sehr langsam
Thema durchsuchen
Ansicht
Themen-Optionen

MediaInfoDll + Schleife sehr langsam

Ein Thema von MaToBe · begonnen am 9. Feb 2010 · letzter Beitrag vom 10. Feb 2010
Antwort Antwort
MaToBe

Registriert seit: 2. Aug 2008
162 Beiträge
 
#1

MediaInfoDll + Schleife sehr langsam

  Alt 9. Feb 2010, 21:59
Guten Abend die Herren,

ich bin gerade dabei für ein kleines Programm Videoinformationen aus meinen Videos zu lesen. Dies löse ich mit der MediaInfo.dll und folgendem Code:

Delphi-Quellcode:
procedure TForm1.VideoDataRead;
var
  Handle : Cardinal;
  I : integer;
  X : integer;
begin
  for I := 0 to StringGrid1.RowCount - 1 do
                StringGrid1.Rows[I].Clear();

  StringGrid1.Cells[0,0] := 'Name';
  StringGrid1.Cells[1,0] := 'Länge';
  StringGrid1.Cells[2,0] := 'Format';
  StringGrid1.Cells[3,0] := 'Dateigröße';
  StringGrid1.Cells[4,0] := 'Auflösung';

  for X := 1 to ValueListEditor1.RowCount -1 do
  begin
    Handle := MediaInfo_New();
    MediaInfo_Open(Handle,PChar(ValueListEditor1.Cells[1,X]));

    StringGrid1.Cells[0,X] := ValueListEditor1.Keys[X];
    StringGrid1.Cells[2,X]:=(MediaInfo_Get(Handle, 0, 0, 'Format/String', 1, 0) + ', ' + MediaInfo_Get(Handle, 0, 0, 'Format/Info', 1, 0));
    StringGrid1.Cells[3,X]:= MediaInfo_Get(Handle, 0, 0, 'FileSize/String4', 1, 0);
    StringGrid1.Cells[1,X]:= MediaInfo_Get(Handle, 0, 0, 'PlayTime/String3', 1, 0);
    StringGrid1.Cells[4,X]:= MediaInfo_Get(Handle, 1, 0, 'Width', 1, 0)+ ' x '
                            + MediaInfo_Get(Handle, 1, 0, 'Height', 1, 0);
  end;
end;
Es funktioniert prinzipiell einwandfrei, mit Ausnahme des Umstandes, dass allein für 11 Video-Dateien (.avi) etwa 1 ganze Minute gebraucht wird, um die 4 Informationen pro Datei auszulesen und in das StringGrid zu schreiben. Woran kann das liegen?? Mein Rechner ist nich der langsammste, falls das damit zusammenhängt (AMD X2 6000+ und 4 GB Ram).

Zur Information: Im ValueListEditor liegt als Keys die Namen der Dateien und als Value der jeweilige Pfad zur Datei.

MFG
MaToBe
  Mit Zitat antworten Zitat
Benutzerbild von sundance
sundance

Registriert seit: 9. Mai 2006
98 Beiträge
 
Delphi 7 Professional
 
#2

Re: MediaInfoDll + Schleife sehr langsam

  Alt 10. Feb 2010, 13:27
Ich habe jetzt zwar deinen Code nicht ausprobiert, aber mir ist folgendes aufgefallen:
Du durchläufst in jedem SchleifendurchgangHandle := MediaInfo_New(); Dafür fehlt das entsprechende Gegenstück dazu:procedure MediaInfo_Close(Handle: Cardinal) cdecl stdcall; Vielleicht läuft es ja schon dadurch schneller, wenn man MediaInfo_New() nur einmal vor der Schleife ausführt und das Handle für jede Datei wiederverwendet...

Ich glaube nicht, dass es an der DLL liegt; wenn man z.B. ein einer Eingabeaufforderung die CLI von mediainfo, die ja dieselbe DLL verwendet, mit einer Reihe von Dateien beschäftigt, geht das ziemlich schnell:
c:\Programme\MediaInfo\MediaInfoCLI.exe --Inform=Video;%Width%\n *.mkv erledigt das in weniger als einer Sekunde...

.sundance.
  Mit Zitat antworten Zitat
Antwort Antwort


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 20:31 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