Einzelnen Beitrag anzeigen

Benutzerbild von Gausi
Gausi

Registriert seit: 17. Jul 2005
847 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: (D7) Memp Mediaplayer anpassen (Vorspulen)

  Alt 31. Jul 2018, 11:50
Mein Problem ist nämlich, daß ich die Titel/Stücklänge in dem Code von MEMP nicht sehe/finde. Und auch nicht, in welcher Unit die steht. (Player_Klasse oder unit1)
Hallo,

Da stöbert man nur mal kurz hier im Forum, und findet direkt jemanden, der dieses uralte Tutorial ausgräbt.

Motivation hinter dem Tutorial war (neben dem Wettbewerb bei Delphi-Treff damals) es, ein halbwegs vernünftiges Basiskonzept vorzustellen. Also zum Beispiel die übliche Trennung von Daten und Anzeige, die grade bei Programmieranfängern oft komplett ignoriert wird. Damit müsste dann schon klar sein, dass man die Dauer des aktuellen Stücks nicht in der Unit1 findet (bzw. dem Formular), sondern in der Playerklasse. In der Unit1, die zum Hauptformular gehört, wird dann zur Anzeige dieser Daten auf die entsprechenden Properties des Player-Objekts zugegriffen.

Ob man bei seinem eigenen Player dann die hier vorgeschlagene Klassenstruktur wählt, oder eine andere, ist dann zweitrangig. In meinem großen Player Nemp ist dann z.B. die Playlistklasse nicht von der Playerklasse abgeleitet, sondern die Playlist hat eine Property vom Typ TPlayer, da dieser "Player" nicht nur Zeug aus der Playlist abspielen soll, sondern ggf. auch was anderes.

Zum Thema:

Das mit der Titellänge in meinen Playern ist immer so eine Sache. Einerseits bestimme ich die über meine eigenen (sehr schnellen) Methoden in der "Audiofile"-Klasse (mit Hilfe meiner Mp3FileUtils etc.), andererseits stimmen diese Berechnungen nicht immer 100%ig mit der Realität überein (CBR, VBR, XING-Header, irgendwelches anderes Gedöns), so dass diese Daten für das Abspielen mit der Dauer abgeglichen werden sollte, die die bass.dll liefert. Sonst kommt die GUI ggf. durcheinander.

In Memp sind dafür die folgenden Eigenschaften interessant:
Delphi-Quellcode:
// Properties von TMempPlayer (bzw. dann auch von TMempPlaylist, die vom TMempPlayer abgeleitet ist)
// aktuelle Position im Titel in Sekunden. Auslesen im Timer für Zeitanzeige, Setter nutzen für "3 Sekunden vorspulen" oder so
property Time: Double read GetTime write SetTime;

// aktuelle Position im Titel in "Prozent". Auslesen für den Progress in einer Scrollleiste/Progressbar o.Ä. für einen "relativen Fortschritt"
// Setter ebenso nutzbar für Klicks auf eine Progressbar/Scrollleiste oder ein geeigneteres visuelles Element
property Progress: Double read GetProgress write SetProgress;

// Dauer des aktuellen Stücks in Sekunden. Nur Getter, weil wir keinen Audio-Editor haben, sondern nur einen Player
property Dauer: Double read Getlength;
Welche visuellen Komponenten man dann wählt, um dem User die Steuerung möglichst bequem zu machen, ist dann wieder was anderes. Die TScrollbar ist da ein einfaches Beispiel, was einige Features bietet, aber eben nicht unbedingt alle. - Zum Beispiel kein OnMouseDown, um per Klick zu einer bestimmten Stelle zu springen.
The angels have the phone box.
  Mit Zitat antworten Zitat