Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi DSPack : Länge von Lied vor Abspielen herausbekommen (https://www.delphipraxis.net/85558-dspack-laenge-von-lied-vor-abspielen-herausbekommen.html)

Nils_13 1. Feb 2007 14:33


DSPack : Länge von Lied vor Abspielen herausbekommen
 
Hi,

wie kann man mit dem DSPack die Länge eines beliebigen Liedes, bevor man es abspielt, herausfinden bzw. auf eine Variable zuweisen ? Ich habe keine Befehle gefunden, welche dies "im Vorraus" erledigen könnten.

EWeiss 1. Feb 2007 15:06

Re: DSPack : Länge von Lied vor Abspielen herausbekommen
 
Zitat:

Zitat von Nils_13
Hi,

wie kann man mit dem DSPack die Länge eines beliebigen Liedes, bevor man es abspielt, herausfinden bzw. auf eine Variable zuweisen ? Ich habe keine Befehle gefunden, welche dies "im Vorraus" erledigen könnten.

KA
Aber ich weiss das es über MPEGInfo geht.

EDIT:
Und beliebig geht gar nicht.
Immer abhängig vom Dateityp

gruss

Nils_13 1. Feb 2007 16:50

Re: DSPack : Länge von Lied vor Abspielen herausbekommen
 
Ich brauche die Länge von .mpeg, .wmv, .avi, .dat. MPEG hast du eben schon genannt, werde mich gleich drumkümmern. DAT ist nichts anderes als MPEG. Wie steht es allerdings mit WMV und AVI ?

EWeiss 1. Feb 2007 18:14

Re: DSPack : Länge von Lied vor Abspielen herausbekommen
 
Zitat:

Zitat von Nils_13
Ich brauche die Länge von .mpeg, .wmv, .avi, .dat. MPEG hast du eben schon genannt, werde mich gleich drumkümmern. DAT ist nichts anderes als MPEG. Wie steht es allerdings mit WMV und AVI ?

Bei
"WMV", "WMA", "RMI", "AVI", "ASF", "DAT", "WAV", "RM"
Kannst du die länge über FilgraphManager erfahren.

FilgraphManager befindet sich in der Typelib QuartzTypeLib Quartz.dll.

von meinen Projekt!
Code:
           
Set MediaControl = New FilgraphManager
If MediaControl Is Nothing Then
 MsgBox "Kann die Ojektlib Mediacontrol nicht erstellen"
 Exit Sub
End If
Set MediaPosition = MediaControl
MediaControl.RenderFile (strFullSongName)
SongTime = MediaPosition.Duration
strMin = SongTime \ 60
strSec = Int(SongTime - strMin * 60)
strX = format(strMin, "00") & ":" & format(strSec, "00")
CDA mußt du binär auslesen

"MPE", "MPEG", "MPG", "MOV", "3GP", "MID"
Kannst du über mci in erfahrung bringen

gruß

Garfield 17. Feb 2007 09:52

Re: DSPack : Länge von Lied vor Abspielen herausbekommen
 
Zitat:

Zitat von Nils_13
DAT ist nichts anderes als MPEG.

Das ist falsch. Wenn man eine DAT von VCD auf die Festplatte kopiert, werden nicht nur Daten des MPEG-1-Videos sondern die kompletten CD-Sektoren sowie der RIFF-Header mitkopiert. Somit hast Du einen RIFF-Header und 28 Byte pro Sektor zu viel.

EWeiss 17. Feb 2007 16:37

Re: DSPack : Länge von Lied vor Abspielen herausbekommen
 
@Nils
Nimm dir mal die mmsystem unit wenn die noch nicht in dein projekt eingebunden ist
Damit kannst du die länge der songs / Videos einfach in erfahrung bringen.

MCI ist das schlagwort.

gruss

Nils_13 17. Feb 2007 17:06

Re: DSPack : Länge von Lied vor Abspielen herausbekommen
 
Und wie mit MCI ? Die Msdn-Hilfe hat nicht mal eine Liste aller Parameter oder ich bin blind :roll:

xaromz 17. Feb 2007 17:09

Re: DSPack : Länge von Lied vor Abspielen herausbekommen
 
Hallo,

wenn Du DirectShow verwenden willst, kannst Du folgende Funktion verwenden (Ergebnis in Millisekunden):
Delphi-Quellcode:
uses
  ActiveX, DirectShow9;

...

function GetDuration(const FileName: WideString): Cardinal;
var
  GB: IGraphBuilder;
  MediaSeeking: IMediaSeeking;
  RefTime: Int64;
begin
  Result := 0;

  if Succeeded(CoCreateInstance(CLSID_FilterGraph, nil, CLSCTX_INPROC_SERVER,
      IID_IGraphBuilder, GB)) and
     Succeeded(GB.RenderFile(PWideChar(FileName), nil)) and
     Succeeded(GB.QueryInterface(IMediaSeeking, MediaSeeking)) then
  begin
    MediaSeeking.GetDuration(RefTime);
    Result := Cardinal(RefTime div 10000);
  end;
end;
Gruß
xaromz

Sunlight7 17. Feb 2007 17:11

Re: DSPack : Länge von Lied vor Abspielen herausbekommen
 
MCI ist mit Vorsicht zu geniesen, weil nur 16 Bit und je nach Typ 1 oder 2 GB Dateibeschräkung.

EWeiss 17. Feb 2007 17:36

Re: DSPack : Länge von Lied vor Abspielen herausbekommen
 
Zitat:

Zitat von Sunlight7
MCI ist mit Vorsicht zu geniesen, weil nur 16 Bit und je nach Typ 1 oder 2 GB Dateibeschräkung.

Es geht doch nur darum die zeiten der einzelnen streans in erfahrung zu bringen.
Er will ja nichts damit abspielen.

Dabei spielt es keine rolle ob 16Bit oder 32. Oder?

@Nils ..
Wie das geht habe ich dir doch anhand eines Beispiel geschildert.

gruss


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:39 Uhr.
Seite 1 von 3  1 23      

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