Einzelnen Beitrag anzeigen

thomas2009
(Gast)

n/a Beiträge
 
#6

AW: Laufzeit von mehreren Video-Dateien auslesen (Addieren)

  Alt 2. Mär 2011, 13:02
Das Demo dort fordert die Units DirectDraw und DirectShow

Gibt es nicht was einfaches ?
Ich möchte die Zeitdauer einer Video-Datei in Sekunden anzeigen lassen

Delphi-Quellcode:
{$R *.dfm}
function gettimefromfile(FileName: String): Double;
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
        begin
          ShowMessage('(Error Code : ' + inttohex(hr, 8) + ')');
          ClearDirectShow;
          Exit;
        end;

     hr := MediaDet.put_Filename(wFileName);
      if (hr <> S_OK) then
        begin
          ShowMessage('(Error Code : ' + inttohex(hr, 8) + ')');
          ClearDirectShow;
          Exit;
        end;

     hr := MediaDet.get_StreamLength(Duration);
      if (hr <> S_OK) then
        begin
          ShowMessage('Konnte die Länge nicht aus der Datei lesen');
          ClearDirectShow;
          Exit;
        end;
     result := duration;

    finally
      SysFreeString(wFileName);
    end;
    ClearDirectShow;
  end;

procedure TForm1.Button1Click(Sender: TObject);
var
  Time: double;
begin

  if opendialog1.Execute then
    begin;
      Time := gettimefromfile(opendialog1.FileName);
      if Time > 0 then
        Label1.Caption := 'Länge: ' + FormatDatetime('hh:nn:ss', Time / {One_Second /} (24*60*60))
      else
        Label1.Caption := 'Länge: Datei auswählen'
    end;
end;

Geändert von thomas2009 ( 2. Mär 2011 um 13:05 Uhr)
  Mit Zitat antworten Zitat