Delphi-PRAXiS
Seite 1 von 6  1 23     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Trackbar/Zeit (https://www.delphipraxis.net/35678-trackbar-zeit.html)

Nils_13 10. Dez 2004 15:57


Trackbar/Zeit
 
Hi,

1. Wie berechne ich die Zeit eines Liedes (BASS.dll)
2. Wie stelle ich das in der Trackbar da?

Nils_13 10. Dez 2004 17:05

Re: Trackbar/Zeit
 
Mit dem MediaPlayer wär es mir ein leichtes eine TrackBar zu proggen, der MediaPlayer ist aber schlechter als die BASS.dll.

Daniel 10. Dez 2004 17:13

Re: Trackbar/Zeit
 
Nils, bitte benutze in Zukunft unbedingt die Edit-Funktion, wenn Du Deinem Beitrag etwas hinzufügen möchtest. Dies hier ist nichts anderes als indirektes Pushen des Beitrages.

Nils_13 10. Dez 2004 18:40

Re: Trackbar/Zeit
 
Hi,
klar Chef!

:hi:

Wishmaster 11. Dez 2004 01:29

Re: Trackbar/Zeit
 
Code:
{---------------------------------  SongPos ----------------------------------}

procedure TAudioEngine.Set_SongPos(SongPos : Integer);
begin
 if WriteToFile Then
   Exit;
    SongPos := BASS_ChannelSeconds2Bytes(Channel, SongPos / 1000);
    BASS_ChannelSetPosition(Channel, trunc(SongPos));
end;

function TAudioEngine.Get_SongPos : Integer;
var SongPos : QWORD;
    MilliSec : Integer;
    FloatPos : FLOAT;
begin
    SongPos := BASS_ChannelGetPosition(Channel);
    FloatPos:= BASS_ChannelBytes2Seconds(Channel, SongPos);
    MilliSec:= Trunc(1000 * FloatPos);
 if MilliSec < 0 then
    MilliSec:= 0;
 if (PlayerState = ENGINE_STOP) or (PlayerState = ENGINE_SONG_END) then
     Result := 0
   else
 Result := MilliSec;
end;
//


Code:
var Scroling : boolean;


procedure TMain_Form.Slider_TimerTimer(Sender: TObject);
var len : integer;
begin
 with AudioPlayer do
  begin
     Len:= Get_SongLen;
  if Len <= 0 then
   begin
    Slider.Position:= 0;
    exit;
  end;

  if Scroling = false then   // Slider
     Slider.Position:= trunc((Slider.MaxValue / Len) * Get_SongPos + 0.1);
   end;
end;

procedure TMain_Form.SliderMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  Scroling:= true;
end;

procedure TMain_Form.SliderMouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  with AudioPlayer do
    begin
    Set_SongPos(Trunc(Get_SongLen *  slider.Position / Slider.MaxValue + 0.1));
    Scroling:= false;
  end
end;

//
Die Plugin’s findest du bei http://www.un4seen.com/

Code:
function TAudioEngine.Get_SongLength(FileName : String): Integer;
var Chn          : DWORD;
    Res, MilliSec : Integer;
    SongLength   : QWORD;
    FloatPos     : FLOAT;
    ext : string;
begin
     Ext:= UpperCase(ExtractFileExt(FileName));

       Chn := BASS_StreamCreateFile(FALSE, PChar(FileName), 0, 0, 0);
   if (EXT = '.WMA') or
      (EXT = '.WMV') or
      (EXT = '.ASF') then
       Chn:= BASS_WMA_StreamCreateFile(FALSE, PChar(FileName), 0, 0, 0);
   if (EXT = '.FLAC') then
       Chn:= BASS_FLAC_StreamCreateFile(FALSE, PChar(FileName), 0, 0, 0);
   if (EXT = '.MP4') or (EXT = '.M4A') then
       Chn:= BASS_MP4_StreamCreateFile(PChar(FileName), 0);
   if (EXT = '.AAC') then
      Chn:= BASS_AAC_StreamCreateFile(PChar(FileName), 0);
   if (EXT = '.CDA') then
       Chn:= BASS_CD_StreamCreateFile(PChar(FileName), 0);
   if (EXT = '.APE') then
      Chn:= BASS_APE_StreamCreateFile(PChar(FileName), 0);
   if (EXT = '.MPC') then
      Chn:= BASS_MPC_StreamCreateFile(PChar(FileName), 0);


  if Chn <> 0 then
     SongLength := BASS_StreamGetLength(Chn);
  if (Chn = 0) then
   begin
      Chn := BASS_MusicLoad(FALSE, PChar(FileName), 0, 0, 0, 0);
      SongLength := BASS_MusicGetLength(Chn, True);
    end;
  if (Chn <> 0) then
   begin
      FloatPos:= BASS_ChannelBytes2Seconds(Chn, SongLength);
      MilliSec:= Trunc(1000 * FloatPos);
   if MilliSec < 0 then
      MilliSec:= 0;
      Res:= MilliSec;
     end
   else
      Res := -1;
      BASS_StreamFree(Chn);
      BASS_MusicFree(Chn);
      result := res;
end;


var


function DurationMinSec(Secunden : string) : string;
var Min, Sec : integer;
    SecToTime : string;
begin
   Min:=  StrToInt(Secunden) div 60;
   Sec:=  StrToInt(Secunden) - Min * 60;
   SecToTime:= Format('%2d:%.2d', [Min, Sec]);
   result:= SecToTime;
end;


var Time : integer;

Time:= trunc(Audioplayer.Get_SongLength(Files.Strings[i]) / 1000);

label1.Caption:= DurationMinSec(inttostr(Time)));

Nils_13 11. Dez 2004 09:06

Re: Trackbar/Zeit
 
thx!!!

Wie heißt denn die Engine :drunken:

:hi:

Luckie 11. Dez 2004 09:48

Re: Trackbar/Zeit
 
Steht doch da: TAudioEngine.

Nils_13 11. Dez 2004 10:56

Re: Trackbar/Zeit
 
Hi,

könnt ihr mir auf die Sprünge helfen? Ich kanns leider nicht finden :roll:

Die Muhkuh 11. Dez 2004 11:08

Re: Trackbar/Zeit
 
Zitat:

Hi,

könnt ihr mir auf die Sprünge helfen? Ich kanns leider nicht finden
WAS findest du nicht? Ein stückchen Kuchen? Ein Ei?

Matze 11. Dez 2004 11:12

Re: Trackbar/Zeit
 
Zitat:

Zitat von Spider
WAS findest du nicht? Ein stückchen Kuchen? Ein Ei?

Die Engine, nehnme ich an. ;)

Bass.dll


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:45 Uhr.
Seite 1 von 6  1 23     Letzte »    

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