AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

WMV-Dauer ermitteln

Ein Thema von stahli · begonnen am 30. Jan 2011 · letzter Beitrag vom 2. Feb 2011
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.336 Beiträge
 
Delphi 11 Alexandria
 
#11

AW: WMV-Dauer ermitteln

  Alt 2. Feb 2011, 17:32
Ich habe gerade festgestellt, dass es unter Delphi (Debugmodus) sehr langsam läuft (die Debuginfos zeigen mehrfach Thread- und Modusl-Infos an).
Läuft das Programm selbnständig geht es schon schneller.
Ich werde es so belassen, da es als einfachster Weg erscheint.

Die DirectX-Variante funktioniert scheinbar gleichermaßen.

Danke Euch nochmal.
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
Benutzerbild von lbccaleb
lbccaleb

Registriert seit: 25. Mai 2006
Ort: Rostock / Bremen
2.037 Beiträge
 
Delphi 7 Enterprise
 
#12

AW: WMV-Dauer ermitteln

  Alt 2. Feb 2011, 17:55
Ich hab die DirectX Version noch einwenig überarbeitet, wenn dir das jetze nicht gefällt, dann weiß ich auch net
Angehängte Dateien
Dateityp: zip DS_Datei-länge_bestimmen_MediaDet.zip (436,8 KB, 60x aufgerufen)
Martin
MFG Caleb
TheSmallOne (MediaPlayer)
Die Dinge werden berechenbar, wenn man die Natur einer Sache durchschaut hat (Blade)
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.336 Beiträge
 
Delphi 11 Alexandria
 
#13

AW: WMV-Dauer ermitteln

  Alt 2. Feb 2011, 19:44
Gefällt jetze

Ich habe es noch etwas umgestellt.
Unter Win7 ging alles perfekt. In meiner VM unter nacktem XP war jedoch keine Dauer ermittelbar. Vermutlich, weil kein passendes DirectX installiert ist!?

Ich habe jetzt einfach eine alternative Ermittlung über einen MediaPlayer eingebunden.
Ich denke, so passt das für alle Fälle...
Danke nochmal

Delphi-Quellcode:
unit VideoDuration;

interface

function GetVideoDuration(FileName: String): TDateTime;

implementation

uses
  DirectShow9, ActiveX, Dialogs, SysUtils, MPlayer, Forms;

var
  hr: HRESULT;
  MediaDet: IMediaDet;

procedure ClearDirectShow;
begin
  MediaDet := nil;
end;

function DurationFromMediaPlayer(FileName: String): TDateTime;
var
  MediaPlayer: TMediaPlayer;
begin
  MediaPlayer := TMediaPlayer.Create(nil);
  MediaPlayer.Visible := False;
  MediaPlayer.Parent := Application.MainForm;
  MediaPlayer.FileName := FileName;
  MediaPlayer.TimeFormat := tfMilliseconds;
  MediaPlayer.Open;
  Result := MediaPlayer.Length / 1000 / (24 * 60 * 60);
  MediaPlayer.Close;
  FreeAndNil(MediaPlayer);
end;

function GetVideoDuration(FileName: String): TDateTime;
var
  Duration: Double;
  wFileName: PWideChar;
begin;
  ClearDirectShow;
  Result := 0;

  wFileName := StringToOleStr(FileName);
  try
    hr := CoCreateInstance(CLSID_MediaDet, nil, CLSCTX_INPROC, IMediaDet, MediaDet);
    if hr = S_OK then
      hr := MediaDet.put_Filename(wFileName);
    if hr = S_OK then
      hr := MediaDet.get_StreamLength(Duration);
    if hr = S_OK then
      Result := Duration / (24 * 60 * 60)
    else
      Result := DurationFromMediaPlayer(FileName);
  finally
    SysFreeString(wFileName);
  end;
  ClearDirectShow;
end;

initialization

CoInitialize(nil);

finalization

CoUnInitialize;

end.
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
Benutzerbild von lbccaleb
lbccaleb

Registriert seit: 25. Mai 2006
Ort: Rostock / Bremen
2.037 Beiträge
 
Delphi 7 Enterprise
 
#14

AW: WMV-Dauer ermitteln

  Alt 2. Feb 2011, 19:47
Gefällt jetze

Ich habe es noch etwas umgestellt.
Unter Win7 ging alles perfekt. In meiner VM unter nacktem XP war jedoch keine Dauer ermittelbar. Vermutlich, weil kein passendes DirectX installiert ist!?
Ich denke eher das liegt daran das kein Codec auf dem System der VM installiert ist.
Martin
MFG Caleb
TheSmallOne (MediaPlayer)
Die Dinge werden berechenbar, wenn man die Natur einer Sache durchschaut hat (Blade)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:11 Uhr.
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