Einzelnen Beitrag anzeigen

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