Registriert seit: 2. Aug 2008
162 Beiträge
|
MediaInfoDll + Schleife sehr langsam
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
|