![]() |
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. |
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))); ![]() |
AW: Laufzeit von mehreren Video-Dateien auslesen (Addieren)
Ich bekomme : 00:00:00 !
|
AW: Laufzeit von mehreren Video-Dateien auslesen (Addieren)
jepp, sorry ich habe WMA und AVI verwürfelt...
|
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: ![]() |
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; |
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...
|
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? Oder lässt du die Leute hier aus Spaß posten und machst dir daraus nen Joke? |
AW: Laufzeit von mehreren Video-Dateien auslesen (Addieren)
Zitat:
|
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 12:03 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