Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Laufzeit von mehreren Video-Dateien auslesen (Addieren) (https://www.delphipraxis.net/158704-laufzeit-von-mehreren-video-dateien-auslesen-addieren.html)

thomas2009 27. Feb 2011 16:51

Laufzeit von mehreren Video-Dateien auslesen (Addieren)
 
Hallo

ich habe mehrere Videos (avi) in einem Ordner
Ich möchte mit einem Code wissen, wie lang insgesamt ist die Laufzeit aller Videos.

Bummi 27. Feb 2011 19:11

AW: Laufzeit von mehreren Video-Dateien auslesen (Addieren)
 
IMHO am unaufwändigsten
Delphi-Quellcode:
Mediaplayer1.TimeFormat := tfMilliseconds;
Mediaplayer1.Open;
Showmessage(FormatDatetime('hh:nn:ss', Mediaplayer1.Length / 1000 / (24*60*60)));
http://www.delphipraxis.net/157931-w...ermitteln.html

thomas2009 27. Feb 2011 21:38

AW: Laufzeit von mehreren Video-Dateien auslesen (Addieren)
 
Ich bekomme : 00:00:00 !

Bummi 27. Feb 2011 21:56

AW: Laufzeit von mehreren Video-Dateien auslesen (Addieren)
 
jepp, sorry ich habe WMA und AVI verwürfelt...

lbccaleb 28. Feb 2011 00:03

AW: Laufzeit von mehreren Video-Dateien auslesen (Addieren)
 
Also,der verlinkte Thread beinhaltet einen Code, mit dem sollte es ohne Probleme möglich sein....

Edit:

Richtig ist das:

http://www.delphipraxis.net/1079162-post12.html

thomas2009 2. Mär 2011 13:02

AW: Laufzeit von mehreren Video-Dateien auslesen (Addieren)
 
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;

wicht 2. Mär 2011 14:21

AW: Laufzeit von mehreren Video-Dateien auslesen (Addieren)
 
Du wirst vermutlich immer DirectShow oder eine Decoder-Bibliothek brauchen. Vielleicht gibt es auch Dateiformate, bei denen man die Länge aus dem Header auslesen kann. Einfacher werden diese Methoden aber wohl alle nicht sein. Es gibt eben nicht für alles einen Einzeiler...

lbccaleb 2. Mär 2011 16:11

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

Zitat von thomas2009 (Beitrag 1085360)
Gibt es nicht was einfaches ?


Die Lösung auf diese Frage wurde bereits in Beitrag 2 beantwortet. Liest du die dir gegebenen Hilfestellungen eigentlich auch durch?

Oder lässt du die Leute hier aus Spaß posten und machst dir daraus nen Joke?

Bummi 2. Mär 2011 17:12

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

Die Lösung auf diese Frage wurde bereits in Beitrag 2 beantwortet. Liest du die dir gegebenen Hilfestellungen eigentlich auch durch?
wurde leider falsch von mir beantwortet wie #3 zeigt.

himitsu 2. Mär 2011 19:10

AW: Laufzeit von mehreren Video-Dateien auslesen (Addieren)
 
Klar geht das Ganze auch ohne irgendeine große Lib.

Du mußt dir nur die Spezifikationen der entsprechenden Dateiformate ansehn, die Dateien manuell "parsen" und dir die gewünschten Infos dort rausziehen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:34 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