![]() |
Re: Verwenden der MediaInfo.DLL
@Garfield,
sorry wenn ich den alten Thread nochmal "herauskrame"... Ich wollte die MediaInfoDLL.pas um die Funktion "MediaInfo_Info_Version()" erweitern, die in der aktuellen DLL v0.7.18 (immer noch) enthalten ist:
Delphi-Quellcode:
Allerdings erhalte ich beim Aufruf anstelle der Versionsnummer nur folgenden Funktionswert:
interface
function MediaInfo_Info_Version: PChar cdecl stdcall; implementation function MediaInfo_Info_Version; external 'MediaInfo.Dll'; 'Your software uses an outdated interface, You must use MediaInfo.DLL 0.4.1.1 instead' Was mache ich da falsch? Oder kann man die DLL-Versionsnummer auch anders auslesen? Nachtrag: Die DLL aus deinem BeispielGUI (0.7.1.2) liefert das selbe Ergebnis. Nachtrag 2: So funktionierts:
Delphi-Quellcode:
Um auch ältere Versionen der DLL zu unterstützen kann man beide auch kombinieren:
MediaInfo_Option(0,'Info_Version',''); // liefert 'MediaInfoLib - v0.7.18'
(analog zu ![]()
Delphi-Quellcode:
.sundance.
result := MediaInfo_Info_Version();
if Pos('MediaInfoLib', result) = 0 then result := MediaInfo_Option(0,'Info_Version',''); |
Re: Verwenden der MediaInfo.DLL
Delphi-Quellcode:
Aus der Demo auf dieser
function String_holen : String;
begin Result := ''; @MediaInfo_Info_Version := NIL; @MediaInfo_Option := NIL; lib := LoadLibrary(@szNameDLL[1]); if lib <> 0 then try @MediaInfo_Info_Version := GetProcAddress(lib, @szNameMediaInfo_Info_Version[1]); if Assigned(MediaInfo_Info_Version) then Result := MediaInfo_Info_Version(); if pos('MediaInfoLib', Result) > 0 then Exit; @MediaInfo_Option := GetProcAddress(lib, @szNameMediaInfo_Option[1]); if Assigned(MediaInfo_Option) then Result := MediaInfo_Option (0, 'Info_Version', ''); except end; end; ![]() |
Re: Verwenden der MediaInfo.DLL
Garfield,
vielen Dank für deine Antwort. Leider bin ich jetzt noch auf ein Problem gestoßen. Wie kann ich ermitteln, ob und wieviele Kapitelmarken in einem Matroska-Container enthalten sind? So habe ich's schon (ohne Erfolg) probiert:
Delphi-Quellcode:
Edit:
FNumChapters := MediaInfoA_Get(FHandle, 0,0, 'ChaptersCount', 1,0);
FNumChapters := MediaInfoA_Get(FHandle, 4,0, 'Count', 1,0); FNumChapters := MediaInfoA_Get(FHandle, 4,0, 'Total', 1,0); Für das Ermitteln der Forced- und Default-Flags habe ich auch keinen Weg gefunden... Siehe Output von mkvinfo:
Code:
| + A track
| + Track number: 2 | + Track UID: 2808210362 | + Track type: audio | + Enabled: 1 | + Default flag: 1 | + Forced flag: 1 | + Lacing flag: 1 | + MinCache: 0 | + Timecode scale: 1 | + Max BlockAddition ID: 0 | + Codec ID: A_AC3 | + Codec decode all: 1 | + Default duration: 32.000ms (31.250 fps for a video track) | + Language: ger | + Audio track | + Sampling frequency: 48000 | + Channels: 6 |
Re: Verwenden der MediaInfo.DLL
Hier gibt ein wenig zu Matroska
![]() |
Re: Verwenden der MediaInfo.DLL
Garfield,
danke für den Hinweis im D9-Forum. Dort habe ich (mit Hilfe des Autors von MediaInfo) folgendes in Erfahrung gebracht: Zitat:
Zitat:
Delphi-Quellcode:
Das Auslesen der Flags ist im Moment leider noch nicht möglich...
// Anzahl der Kapitelmarken auslesen (altes und neues Verfahren ab v0.7.13)
FNumChapters := GetMediaInfoInt(FHandle, skGeneral, 0, 'ChaptersCount'); if (FNumChapters = 0) then begin num := GetMediaInfoInt(FHandle, skGeneral, 0, 'MenuCount'); if (num > 0) then for k:=0 to pred(num) do begin st := GetMediaInfoStr(FHandle, skMenu, k, 'StreamKind'); if CompareText(st, 'menu') = 0 then begin c1 := GetMediaInfoInt(FHandle, skMenu, k, 'Chapters_Pos_Begin'); c2 := GetMediaInfoInt(FHandle, skMenu, k, 'Chapters_Pos_End'); FNumChapters := c2 - c1; end; end; end; .sundance. |
Re: Verwenden der MediaInfo.DLL
Wenn Du nur Informationen zu Matroska willst, solltest Du Dir etwas eigenes entwickeln. Informationen findest Du auf
![]() ![]() ![]() ![]() |
Re: Verwenden der MediaInfo.DLL
Vielen Dank nochmal für deine Hilfe.
Ich habe mittlerweile noch eine interessante Matroska-Implementation gefunden: ![]() Für mein Progrämmchen werde ich mit nur einer "3rd-Party-DLL" nicht auskommen. Denn zum einen brauche ich eine komplette Streamübersicht (video/audio/subs/chapter/attachments), die ich z.B. mit obiger DLL oder auch mit dem output von mkvinfo von Moritz Bunkus bekommen kann. Leider kann ich über diese Schnittstellen nicht allzuviel über die Specs der einzelnen Streams (z.b. Audio-Bitrate) ermitteln; da hilft mir im Moment nur die mediainfo.dll weiter (die aber leider keine Attachments "kennt", bzw. man kann nur feststellen, ob welche da sind)... .sundance. |
Re: Verwenden der MediaInfo.DLL
Ich benutze D2009 und habe immer das Problm, dass ich nur schwarze dünne Striche sehe, statt Buchstaben und Texte.
|
Re: Verwenden der MediaInfo.DLL
Liegt vielleicht an Ansi und Wide.
|
AW: Verwenden der MediaInfo.DLL
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo, ich weiß das Thema ist älter, aber ich habe mich gestern mit der MediaInfo.dll beschäftigt und habe mir das Beispiel von Amnon82 geladen. Ich habe die exe erzeugt und kann die Edit-felder nicht lesen.
Ich habe ein Bild anbei könnte mir bitte jemand helfen Gruß Nero |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:41 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz