Delphi-PRAXiS
Seite 2 von 5     12 34     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Verwenden der MediaInfo.DLL (https://www.delphipraxis.net/32578-verwenden-der-mediainfo-dll.html)

sundance 7. Jul 2009 08:24

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:
interface
  function MediaInfo_Info_Version: PChar cdecl stdcall;
implementation
  function MediaInfo_Info_Version; external 'MediaInfo.Dll';
Allerdings erhalte ich beim Aufruf anstelle der Versionsnummer nur folgenden Funktionswert:
'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:
MediaInfo_Option(0,'Info_Version',''); // liefert 'MediaInfoLib - v0.7.18'
Um auch ältere Versionen der DLL zu unterstützen kann man beide auch kombinieren:
(analog zu http://www.fr-an.de, GUI MediaInfoLib)
Delphi-Quellcode:
result := MediaInfo_Info_Version();
if Pos('MediaInfoLib', result) = 0 then
  result := MediaInfo_Option(0,'Info_Version','');
.sundance.

Garfield 8. Jul 2009 14:57

Re: Verwenden der MediaInfo.DLL
 
Delphi-Quellcode:
  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;
Aus der Demo auf dieser Seite, welche Du auch gefunden hast.

sundance 15. Jul 2009 10:59

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:
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);
Edit:
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

Garfield 15. Jul 2009 15:05

Re: Verwenden der MediaInfo.DLL
 
Hier gibt ein wenig zu Matroska http://forum.doom9.org/showthread.ph...492#post814492

sundance 16. Jul 2009 13:17

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:

Chapter part is deprecated since 0.7.13.
See Changes.txt in the DLL package for more info
Und dort findet man dann:
Zitat:

0.7.12 --> 0.7.13
-----------------
- Chapters has now language type per item, another string format, and moved to the menu part
Old string format was "Chapter number : Time - chapter string"
New string format is "Time : chapter string / Optional info / Optional info"
Die Anzahl der Kapitelmarken kann man somit wie folgt auslesen:
Delphi-Quellcode:
      // 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;
Das Auslesen der Flags ist im Moment leider noch nicht möglich...

.sundance.

Garfield 17. Jul 2009 10:54

Re: Verwenden der MediaInfo.DLL
 
Wenn Du nur Informationen zu Matroska willst, solltest Du Dir etwas eigenes entwickeln. Informationen findest Du auf Matroska. Dort findest auch ein Forum. Zum Team gehören unter anderem mehrere Deutsche, welche eventuell helfen würden. Moritz "Mosu" Bunkus und Christian HJ Wiesner sind zum Beispiel auch bei Doom9 | Gleitz DVD-Forum registriert. Moritz ist der Autor von MKVToolnix.

sundance 18. Jul 2009 09:12

Re: Verwenden der MediaInfo.DLL
 
Vielen Dank nochmal für deine Hilfe.
Ich habe mittlerweile noch eine interessante Matroska-Implementation gefunden:
http://www.alexander-noe.com/video/matroskadll

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.

Micha88 6. Jan 2010 02:10

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.

Garfield 6. Jan 2010 08:41

Re: Verwenden der MediaInfo.DLL
 
Liegt vielleicht an Ansi und Wide.

Nero der Professor 22. Jan 2014 13:11

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 00:39 Uhr.
Seite 2 von 5     12 34     Letzte »    

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz