Nun will ich diese recht einseitige Diskussion abschließen.
Die wie oben modifizierte MediaInfoDll.pas wird über USES eingebunden. Anschließend kann man die Mediadatei öffnen:
Handle := MediaInfo_Open(PChar(Datei));
Dabei ist Datei vom Typ String und wurde über einen Dialog eingegeben.
Handle ist vom Typ Cardinal.
Es können Info Sets oder Einzelinformationen abgefordert werden. Die Sets dürften Stringlisten sein. Die Einzelinformationen sind Strings.
Beispiel Set:
Delphi-Quellcode:
MediaInfo_Complete_Set(false);
Memo.Text := MediaInfo_Inform(
Handle);
Das Memo ist, wie kann es anders sein, ein TMemo. Einzelinfos werden mit
InfoText := MediaInfo_Get(Handle, StreamKind, StreamNumber, Parameter, KindOfInfo, KindOfSearch)
abgerufen. InfoText ist vom Typ String. Was die letzten beiden Parameter bedeuten, weiß ich nicht. Dafür habe ich die Werte aus dem Beispiel genommen. Das
Handle gab es beim Öffnen der Datei. Das StreamKind bezeichnet einen bestimmten Abschnitt im InfoSet. Das sind General, Video, Audio, Text, Chapters, Image und Max. Die StreamNumber ist der Zähler für den gewünschten Stream. Der Parameter ist ein in '' eingeschlossener casesenstiver String. Er bezeichnet die gewünschte Information.
Beispiel: Abtastfrequenz der zweiten Tonspur
InfoText := MediaInfo_Get(Handle, 2, 1, 'SamplingRate_String', 1, 0);
Handle - gab's beim Öffnen der Datei,
2 - Audio,
1 - zweiter Stream,
'SamplingRate_String' - Abtastfrequenz als String, wird in kHz mit Einheit zurückgegeben,
1 - ?,
0 - ?.
Hat man alle Informationen, wird die Mediadatei wieder geschlossen:
MediaInfo_Close(Handle);
Das war es schon. Unten habe ich meine BeispielGUI angehängt. In der
GUI werden in einem Memo ein InfoSet und in Editfenstern Einzelinformationen ausgegeben. Es sind einmal Source mit den beiden notwendigen
DLL und einmal EXE mit DLLs. Unter D3Prof kompiliert ist die EXE 208 kB, unter D7Pers 399 kb.