Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Bass.dll aktuelle Position auslesen (https://www.delphipraxis.net/179460-bass-dll-aktuelle-position-auslesen.html)

Luki206 9. Mär 2014 12:35

Bass.dll aktuelle Position auslesen
 
Hi, wie kann man mit der Bass.dll die aktuelle Position des wiedergegebenen Liedes anzeigen? Ich habe es mit BASS_ChannelGetPosition nur bekomme ich dann utopische Zahlen. Das MP3 Player Tutorial von Gausi habe ich mir auch einmal angesehen nur kann ich aus seinen Angehängten .Pas Dateien nichts rauslesen..
Danke
Luki :)

nuclearping 9. Mär 2014 12:39

AW: Bass.dll aktuelle Position auslesen
 
1) http://www.un4seen.com/doc/#bass/BAS...tPosition.html
2) http://www.un4seen.com/doc/#bass/BAS...s2Seconds.html

Du musst BASS_ChannelGetPosition mit dem Flag BASS_POS_BYTE aufrufen, und kannst dann den Rückgabewert mit BASS_ChannelBytes2Seconds in Sekunden umwandeln.

Luki206 9. Mär 2014 12:54

AW: Bass.dll aktuelle Position auslesen
 
Ah ok Danke ;)

Luki206 9. Mär 2014 13:07

AW: Bass.dll aktuelle Position auslesen
 
Ich kapiere da was nicht: Ich habe jetzt folgenden Code:
Delphi-Quellcode:
var Time, Byte: Integer;
begin
 Byte := BASS_ChannelGetPosition(strs, BASS_POS_BYTE);
 Time := BASS_ChannelBytes2Seconds(strs, Byte);
end;
nur zeigt er mir bei ChannelBytes2Seconds an das Integer und Double keine kompatible Typen sind (wohl verständlich :mrgreen:) und der Cursor springt hinter Byte. Nur habe ich das auch einmal versucht das Byte Double ist und da hat er gemeldet
Code:
[dcc32 Fehler] haupt.pas(536): E2010 Inkompatible Typen: 'Int64' und 'Double'
und ist wieder hinter Byte gesprungen.

DeddyH 9. Mär 2014 13:43

AW: Bass.dll aktuelle Position auslesen
 
Ich würde eine Variable niemals Byte oder Time nennen. BASS_ChannelBytes2Seconds erwartet als 2. Parameter einen Int64 und gibt double zurück.
Delphi-Quellcode:
var
  StreamPos: Int64;
  Ellapsed: double;
begin
  StreamPos := BASS_ChannelGetPosition(strs, BASS_POS_BYTE);
  Ellapsed := BASS_ChannelBytes2Seconds(strs, StreamPos);
end;

Luki206 9. Mär 2014 13:51

AW: Bass.dll aktuelle Position auslesen
 
Das mit Time und Byte war jetzt nur mal ein Versuch, ich hätte die auch nicht mit dem Name da stehen lassen ;) Ok danke :)

Luki206 9. Mär 2014 14:00

AW: Bass.dll aktuelle Position auslesen
 
Und wie würde ich dass dann machen wenn ich jetzt haben möchte dass es so aus sieht: '0:0' Mit Format?

DeddyH 9. Mär 2014 14:06

AW: Bass.dll aktuelle Position auslesen
 
Und was soll das sein? Minuten und Sekunden?

Luki206 9. Mär 2014 14:08

AW: Bass.dll aktuelle Position auslesen
 
Oh, tut mir leid.. Ja genau, Minuten und Sekunden. Ich habe Delphi jetzt soweit das er mir die Sekunden anzeigt (welches großes Werk ich vollbracht habe *hust, Ironie* :D)

DeddyH 9. Mär 2014 14:15

AW: Bass.dll aktuelle Position auslesen
 
Delphi-Quellcode:
const
  SECONDS_PER_MINUTE = 60;
begin
  (* Nachkommastellen schneiden wir einfach mal ab *)
  WholeSeconds := trunc(Ellapsed);
  (* Und nun mit ganzzahliger Division in Minuten und Sekunden umrechnen *)
  TimeEllapsedStr := Format('%.2d:%.2d',
    [WholeSeconds div SECONDS_PER_MINUTE,
     WholeSeconds mod SECONDS_PER_MINUTE]);


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:18 Uhr.
Seite 1 von 2  1 2      

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