(Units zur statischen und dynamischen
Einbindung der MediaInfo.Dll v0.4.0.1)
unit unit1;
uses
... MediaInfoDll, ...; // bzw MediaInfoDllmod
...
procedure MediaInfo_holen (var Datei : String);
var
Handle : Cardinal;
...
In der Unit, in welcher die MediaInfo.DLL aufgerufen wird, wird unter Uses zur statischen Einbindung der DLL die Unit MediaInfoDLL bzw zur dynamischen Einbindung die MediaInfoDLLmod eingetragen und in der entsprechenden Procedure die Variable Handle von Typ Cardinal deklariert. Der Procedure wird der Name der Mediadatei übergeben. Daraufhin werden die Daten an bestimmte Elemente zur Darstellung der Informationen (Memo, Edit, Label) zurückgegeben.
begin
if GetEntryPoints // Nur bei der Verwendung
then begin // der MediaInfoDLLmod.pas
Handle := MediaInfo_Open(PChar(Datei));
GetEntryPoints ist eine Function in der Unit MediaInfoDLLmod.pas. In dieser werden die Einstiegspunkte für die Functions und Procedures der DLL geholt. Wurden alle gefunden, wird der Wert True zurückgegeben. Anschließend wird die MediaDatei geöffnet.
Hier gibt es die Möglichkeit, einen gesamten Informationssatz abzuholen und in ein Memo zu schreiben:
MediaInfo_Complete_Set(false);
{ true - ausführliche Information. Die Daten in werden teilweise in
mehreren Formatierungen ausgegeben. }
{ false - kurze Information, Daten werden nur in einer Formatierung
ausgegeben }
Memo1.Text := MediaInfo_Inform(Handle);
Um einzelne Informationen erhalten, wird die MediaInfo wie folgt aufgerufen:
Edit1.Text := MediaInfo_Get(Handle,
StreamKind,
StreamNumber,
Parameter,
KindOfInfo,
KindOfSearch);
Das bedeuten die einzelne Variablen:
Handle - Ergibt sich beim Öffnen der Datei
StreamKind - 0 = Stream_General
1 = Stream_Video
2 = Stream_Audio
3 = Stream_Text
4 = Stream_Chapters
5 = Stream_Image
6 = Stream_Max
StreamNumber - 0 = Erster Stream
1 = Zweiter Stream
...
Parameter - Eine Liste erhält man durch Aufruf der HowToUse_Dll.exe.
Am besten per BATCH aufrufen und die Ausgabe in eine
Textdatei umleiten. Ist die gewünschte Information nicht
verfügbar, wird ein leerer String zurückgeliefert.
Hier ein paar Beispiele (Case sensitiv!):
Stream_General
VideoCount : Anzahl der Videostreams
AudioCount : Anzahl der Audiostreams
CompleteName : Kompletter Name der analysierten
Datei (LW + Ordner + Name + Ext)
FileSize : Dateigröße in Byte
FileSize_String4 : Dateigröße mit vier Digits (heißt,
es werden die ersten vier Stellen
und die Einheit angegeben.
Bsp: 2.345 MB, 797.2 MB
Format : Format Kurzname
Bsp: MPEG-1, MPEG-2
OveralBitrate_String : Gesamtbitrate mit Einheit
PlayTime_String1 : Spieldauer mit Einheiten im Format
HHh MMmn SSs MMMms
Stream_Video
Codec : Benutzter Codec
BitRate : Bitrate in bps
Anmerkung: Wenn kein Wert zurück-
gegeben wird, BitRate_String ver-
wenden.
BitRate_Mode : Mode (VBR, CBR)
Anmerkung: Funktioniert nicht immer,
im Set steht dann 'Bit rate'
Width : Bildbreite
Height : Bildhöhe
AspectRatio : Seitenverhältnis
FrameRate : Bildwiederholrate
Stream_Audio
Codec : Benutzter Codec
BitRate : Bitrate in bps (zB MP3)
Bitrate : Bitrate in bps (zB MP2)
BitRate_String : eigentlich Bitrate mit Einheit,
bei MP3 nur Einheit
Channels : Anzahl der Kanäle
ChannelMode : Modus, zB Stereo
SamplingRate : Abtastfrequenz
SamplingRate_String : Abtastfrequenz mit Einheit KHz
KindOfInfo - 0 = Info_Name : Name des Parameter
1 = Info_Text : Wert des Parameter (als Text)
2 = Info_Measure : Name der Einheit des Parameters
3 = Info_Options : InfoOption_ShowInInform = 0
InfoOption_Support = 1
-> Möglich
N (Nein),
R (Nur Lesen),
W (Lesen/Schreiben),
space (Nicht zutrefend).
InfoOption_ShowInSupported = 2,
-> Nur intern genutzt
(Info : In Info_Capacities()
angezeigt)
InfoOption_Max = 3
4 = Info_Name_Text : Übersetzter Name des Parameter
5 = Info_Measure_Text: Übersetzter Name der Maszeinheit
6 = Info_Info : Mehr Info über den Parameter
7 = Info_HowTo : Information : Wie wurden die
Daten gefunden
8 = Info_Max
KindOfSearch - Wo den Parameter suchen }
{ Generalinformationen: }
{ Spieldauer StreamKind - 0 = Stream_General
StreamNumber - 0 = Erster Stream
Parameter - PlayTime_String1
KindOfInfo - 1 = Info_Text
KindOfSearch - 0 }
Edit1.Text := MediaInfo_Get(Handle, 0, 0, 'PlayTime_String1', 1, 0);
{ Anzahl der Tonspuren Parameter - Stream_General
AudioCount }
Edit2.Text := MediaInfo_Get(Handle, 0, 0, 'AudioCount', 1, 0);
{ Videoinformationen: }
{ Videocodec StreamKind - 1 = Stream_Video
StreamNumber - 0 = Erster Stream
Parameter - Codec_String
KindOfInfo - 1 = Info_Text
KindOfSearch - 0 }
Edit3.Text := MediaInfo_Get(Handle, 1, 0, 'Codec_String', 1, 0);
{ Framerate Parameter - FrameRate }
Edit4.Text := MediaInfo_Get(Handle, 1, 0, 'FrameRate', 1, 0);
{ Audioinformationen: }
{ Audiocodec Stream 1: StreamKind - 2 = Stream_Audio
StreamNumber - 0 = Erster Stream
Parameter - Codec
KindOfInfo - 1 = Info_Text
KindOfSearch - 0 }
Edit5.Text := MediaInfo_Get(Handle, 2, 0, 'Codec_String', 1, 0);
{ Abtastfreq. Stream 2: StreamNumber - 1 = Zweiter Stream
Parameter - SamplingRate_String }
Edit6.Text := MediaInfo_Get(Handle, 2, 0, 'SamplingRate_String', 1, 0);
Diese Beispiele sollten genügen.
MediaInfo_Close(Handle);
end; // Nur bei der Verwendung
// der MediaInfoDLLmod.pas
end;
Fr_An - Letzte Änderung: 09. April 2006
seit 28. Juli 2010